ELYZAとSwallowを試して分かった、M4 Airで使う日本語ローカルLLMの選び方

これまでの記事でMacBook Air M4にOllamaを導入し、Gemma 3を3サイズで比較してきました。Gemma 3は多言語対応の汎用モデルですが、日本語を主に使う場合は日本語特化モデルにも興味が出てきます。本記事では、代表的な日本語特化モデル「Llama-3-ELYZA-JP-8B」と「Llama 3.1 Swallow 8B」を導入し、これまでのGemma 3と合わせた5モデル完全比較を行いました。同じ8Bでも全く異なるキャラクターが見えてきます。

検証対象のモデル

今回比較する5モデルは以下のとおりです。

モデルサイズ種類開発元
gemma3:4b3.3GB汎用(多言語)Google
gemma3:12b8.1GB汎用(多言語)Google
gemma3:27b17GB汎用(多言語)Google
Llama-3-ELYZA-JP-8B4.9GB日本語特化ELYZA
Llama 3.1 Swallow 8B8.5GB日本語特化東京科学大学&産総研

日本語特化モデルとは

「日本語特化モデル」とは、英語ベースのLLMをベースに、日本語の追加学習を行ったモデルです。今回検証する2つは以下のような特徴があります。

Llama-3-ELYZA-JP-8B

ELYZA社が開発した、Meta社のLlama 3 8Bをベースに日本語性能を強化したモデルです。80億パラメータながら、GPT-3.5 TurboやClaude 3 Haikuに匹敵する日本語性能を達成しているとされています。

Llama 3.1 Swallow 8B

東京科学大学(旧東京工業大学)の岡崎研究室・横田研究室と産業技術総合研究所が開発した、Llama 3.1 8Bをベースに日本語性能を強化したモデルです。約2,000億トークンの日本語コーパス(Swallow Corpus Version 2)と日英Wikipedia、数学データなどで継続事前学習されています。日本語MT-Benchで0.6424という、このクラスのモデルとしてはトップクラスのスコアを記録しています。

どちらもOllama公式ライブラリではなく、コミュニティが提供するモデルとしてOllamaから利用できます。

モデルの導入

両モデルとも ollama pull で取得できます。

# ELYZA(約4.9GB)
ollama pull dsasai/llama3-elyza-jp-8b

# Swallow(約8.5GB)
ollama pull schroneko/llama-3.1-swallow-8b-instruct-v0.1

ダウンロード後、ollama list で全モデルが揃っているか確認します。

NAME                                                   SIZE
schroneko/llama-3.1-swallow-8b-instruct-v0.1:latest    8.5 GB
dsasai/llama3-elyza-jp-8b:latest                       4.9 GB
gemma3:4b                                              3.3 GB
gemma3:12b                                             8.1 GB
gemma3:27b                                             17 GB

ベンチマーク手順

過去記事と同じプロンプトを使うことで、5モデル横断の公平な比較が可能になります。

ollama run <model_name> --verbose

プロンプトは以下で固定します。

日本の四季それぞれの特徴と代表的な行事を、外国人観光客向けに400字程度で説明してください。

各モデルの回答と統計情報(eval rateeval counttotal duration)を記録します。

ELYZAの結果

ELYZAでの実行結果は次のとおりです。

total duration:       20.283093167s
load duration:        96.157834ms
prompt eval count:    85 token(s)
prompt eval duration: 750.641958ms
prompt eval rate:     113.24 tokens/s
eval count:           301 token(s)
eval duration:        19.346565419s
eval rate:            15.56 tokens/s

生成速度15.56 tok/sは8Bモデルとして妥当な数値で、Gemma 3の4B(28 tok/s)と12B(10 tok/s)のちょうど中間に位置します。

ELYZAの応答内容と想定外の挙動

注目すべきは応答の内容です。「日本語特化モデル」と謳われているにもかかわらず、本文の大部分が英語で出力されました。

Japan has a distinct four-seasonal climate, each with unique characteristics 
and special events. Let me introduce you to Japan's wonderful seasons:

Spring (March to May):
Spring is a time of renewal and growth. Cherry blossoms that bloom in March 
are famous for creating beautiful landscapes...

(中略)

日本の四季は、自然と文化が織りなす美しい表情を常に示してくれます。
各季節の行事やイベントを体験することで、より深く日本を理解し愛着を持つ
ことができます。

最後の一文だけ日本語で締められていますが、主要な説明部分はすべて英語です。プロンプトに含まれていた「外国人観光客向け」という指示を、モデルが「英語で説明すべき」と解釈した可能性が高そうです。

また、内容面でも「秋にさくらんぼ狩り」など事実誤認が見られました(さくらんぼの旬は初夏)。さらに、もともと日本語が入っているはずの括弧内が () のように空のままになっており、テンプレート崩れも発生しています。

Swallowの結果

Swallowでの実行結果は次のとおりです。

total duration:       47.591852041s
load duration:        108.636041ms
prompt eval count:    44 token(s)
prompt eval duration: 614.372583ms
prompt eval rate:     71.62 tokens/s
eval count:           432 token(s)
eval duration:        46.725078903s
eval rate:            9.25 tokens/s

生成速度は9.25 tok/sで、ELYZAより約4割遅い結果でした。これはモデルファイルサイズの差(4.9GB → 8.5GB、約1.7倍)が直接的に影響しています。量子化レベルが緩い(=品質重視)と速度とのトレードオフが発生する典型例です。

Swallowの応答内容

応答は完全に自然な日本語で出力されました。

日本は四季がはっきりとしていて、それぞれの季節には独自の魅力があります。

**春(3月〜5月)**

春は新しい生命が芽吹く季節です。桜が咲き乱れるのは、日本人にとって特別な
意味を持ちます。花見と呼ばれるお花見会は、家族や友人と一緒に楽しむ日本の
伝統的な行事の一つです。また、春には多くの地域で「さくら祭り」が開催され、
桜の下で食事やライブなどを楽しむことができます。

**夏(6月〜8月)**

夏は日本で最も暑い季節ですが、海や山への旅行にぴったりの時期でもあります。
海水浴やキャンプなどのレジャー活動を楽しんだり、日本各地の祭りや花火大会に
参加したりすることができます。

(中略)

日本の四季は、それぞれ異なる魅力を持っています。どの季節に訪れても、
日本ならではの体験を楽しむことができるでしょう。

「花見」「紅葉スポット」「ウィンタースポーツ」など、日本語表現が自然で、季節と行事の対応関係も正確です。日本語MT-Benchで高スコアを記録しているという公式の主張は、実感としても裏付けられました。

5モデル完全比較表

過去記事のGemma 3データを含めて、5モデルの実測値を並べます。

モデルサイズプロンプト処理生成速度出力長合計時間日本語の自然さ
gemma3:4b3.3GB158.54 tok/s28.19 tok/s473 tokens17.36秒自然
gemma3:12b8.1GB67.64 tok/s10.21 tok/s381 tokens38.09秒自然
gemma3:27b17GB16.03 tok/s2.55 tok/s297 tokens1分59.7秒自然
Llama-3-ELYZA-JP-8B4.9GB113.24 tok/s15.56 tok/s301 tokens20.28秒⚠️ 英語混入
Llama 3.1 Swallow 8B8.5GB71.62 tok/s9.25 tok/s432 tokens47.59秒◎ 完全日本語

結果から見えてきたこと

「日本語特化」=「日本語品質が高い」とは限らない

ELYZAは「日本語特化」と謳いながら、今回のプロンプトでは英語応答という結果でした。プロンプトの「外国人観光客向け」という文言に引きずられた可能性が高く、プロンプト設計次第で挙動が変わる可能性があります。

一方Swallowは指示通り日本語で答え、内容も丁寧でした。「日本語特化」を選ぶ際は、ベンチマークスコアだけでなく、実際の挙動を確認することが重要だと実感しました。

速度はファイルサイズに比例する

8Bという同じパラメータ数でも、量子化レベルが違うとファイルサイズが大きく変わります。

  • ELYZA: 4.9GB → 15.56 tok/s
  • Swallow: 8.5GB → 9.25 tok/s

Swallowはサイズが1.7倍で、速度はほぼ半分です。Apple SiliconはRAM帯域がボトルネックになりやすいため、ファイルサイズの差が速度に直結します。

Gemma 3 12Bの実力

5モデル並べてみると、改めてGemma 3 12Bのバランスの良さが際立ちます。

  • 日本語応答品質: Swallowに匹敵する自然さ
  • 速度: 10.21 tok/s(Swallowとほぼ同等)
  • 多言語対応: 日本語以外も自然
  • 安定性: プロンプト次第で英語になることがない

「日本語が主な用途だがGemma 3 12Bで十分」というのは、M4 Airでの現実的な答えになりそうです。

出力スタイルの傾向

出力トークン数の傾向も興味深い結果でした。

  • 冗長な順: gemma3:4b > Swallow > gemma3:12b > ELYZA > gemma3:27b
  • 同じプロンプトで473〜297トークンまで開きがある
  • Gemma 3はサイズが大きいほど簡潔になる傾向
  • Swallowは日本語特化らしい丁寧な説明スタイル

M4 Airでの用途別おすすめ

実測結果を踏まえた、用途別の推奨は以下のとおりです。

用途おすすめモデル理由
日本語の自然さ最優先Swallow 8B完全日本語、丁寧な説明
速度と日本語のバランスGemma 3 12B安定した日本語、10 tok/s
高速応答Gemma 3 4B28 tok/s、日本語も十分自然
多言語混在用途Gemma 3 12B多言語対応で安定
バッチ処理・品質最優先Gemma 3 27B最高品質、ただし遅い

ELYZAは速度面では魅力的ですが、プロンプト設計に工夫が必要な点で、常用モデルとしてはやや扱いが難しい印象でした。

まとめ

本記事では以下の内容を扱いました。

  • 日本語特化モデル「ELYZA」と「Swallow」の導入手順
  • 同じプロンプトでの5モデル横断ベンチマーク
  • ファイルサイズと生成速度の相関
  • 「日本語特化」を謳うモデルでも挙動には差がある
  • Gemma 3 12Bが多くの用途でバランスが良いという発見

「日本語特化モデル」と聞くと、それだけで日本語品質が高そうに思えますが、実際に試してみるとモデルごとの個性が大きく、プロンプト次第で全く違う応答が返ることが分かりました。ベンチマークスコアや謳い文句だけでなく、自分の用途で実際に試してみることの重要性を改めて実感した検証でした。

M4 Airでローカル日本語LLMを使う場合、現時点で最も無難な選択肢はGemma 3 12B、純度の高い日本語にこだわるならSwallow 8B、というのが筆者の結論です。

コメント

タイトルとURLをコピーしました