Qwen 3.8 27BをEVO-X2、DGX Spark、M4 MacBook Airで比較した ― MTPで見えた「生成速度」と「Prefill性能」の違い

近頃Ollamaのアップデートが止まらない。最新版が出たとおもったら、Pre-release版がすぐにあがり、数時間するとRelease版が出る。Docker ImageやBrewが追従できていない。理由は、Qwen 3.8のリリース対応。動かしてみた。以下、検証結果をAIで書いてもらったもの。
 
 
Ollamaを最新版に更新したので、Qwen 3.8 27Bを手元の3台で比較してみた。
今回使用した環境は以下である。
  • AMD Strix Haloを搭載した EVO-X2 128GB
  • NVIDIA GB10を搭載した DGX Spark 128GB
  • Apple M4を搭載した MacBook Air 32GB
単純に「何tok/s出るか」だけでは実際の使用感が分かりにくいため、通常生成から長文Prefill、MTP、最後にはstreaming APIを使った実TTFT(Time To First Token)まで測定した。
 
結論から書くと、かなり面白い結果になった。
 
EVO-X2とDGX Sparkは、文章を生成する速度そのものはほとんど変わらない。しかし、長いPromptを処理して最初の文字を出すまでの速度ではDGX Sparkが圧倒的に速い。
そして、EVO-X2とDGX SparkではMTPを使うことでQ8モデルでも20 tok/s前後まで高速化できた
 

まず通常のQwen 3.8 27Bを比較する

最初にQ4_K_MとQ8_0を通常のOllamaモデルとして実行した。
条件は32K context、Warm-up後に256 tokensを生成するものとした。
環境
モデル
Prompt tok/s
Generation tok/s
EVO-X2
Q4_K_M
84.6
12.82
DGX Spark
Q4_K_M
389.8
12.73
M4 MBA
Q4_K_M
29.0
4.29
EVO-X2
Q8_0
145.6
7.75
DGX Spark
Q8_0
291.2
8.20
DGX Spark
BF16
200.7
4.88
M4 MBA
MLX
19.0
5.65
ここで最初の意外な結果が出た。
 
Q4の生成速度を見ると、
EVO-X2 12.82 tok/s
DGX Spark 12.73 tok/s
である。
 
ほとんど同じなのだ。
Q8でも、
EVO-X2 7.75 tok/s
DGX Spark 8.20 tok/s
であり、大きな差はない。
 
価格もアーキテクチャも大きく異なる2台だが、27B Denseモデルを1ユーザーで逐次生成させる限り、生成性能は驚くほど近かった。
ただし、Prompt処理性能にはすでに大きな差が見えている。
 

約5K tokensを投入するとDGX Sparkの本領が出た

そこで約5,229 tokensの長文Promptを作り、Prefill性能を測定した。
 
結果は次のようになった。
環境
モデル
Prefill tok/s
Prefill時間
Decode tok/s
DGX Spark
Q4
845.97
6.18秒
12.66
EVO-X2
Q4
245.21
21.32秒
12.76
M4 MBA
Q4
37.32
140.13秒
2.40
M4 MBA
MLX
30.51
171.38秒
6.01
DGX Sparkは約846 tok/s、EVO-X2は約245 tok/sである。
 
つまり、
DGX Spark
845.97 tok/s
│ 約3.45倍
EVO-X2
245.21 tok/s
となった。
 
一方、生成速度は12.66対12.76 tok/sで、やはりほぼ同じである。
 
ここから両者の性格が見えてきた。
短いPrompt
長い回答
 
 
EVO-X2 ≒ DGX Spark
 
 
大量のPrompt
RAG
長い会話履歴
Coding Agent
 
 
DGX Spark >>> EVO-X2
DGX Sparkの強みは単純なtoken生成速度ではなく、大量のcontextを一気に処理するPrefill性能にあるようだ。
 

MTPを使ったら状況が大きく変わった

今回もっとも面白かったのがMTP対応モデルである。
MTP(Multi-Token Prediction)を利用したQ4/Q8モデルと通常モデルを比較した。

Q4

環境
Normal
MTP
高速化
EVO-X2
12.83
25.94
2.02倍
DGX Spark
12.72
27.17
2.13倍
M4 MBA
3.42
2.38
0.70倍

Q8

環境
Normal
MTP
高速化
EVO-X2
7.77
18.75
2.41倍
DGX Spark
8.16
20.25
2.48倍
 
EVO-X2ではQ8が、
7.77 → 18.75 tok/s
 
DGX Sparkでは、
8.16 → 20.25 tok/s
となった。
 
2倍を大きく超える高速化である。
 
特に興味深いのは、MTP Q8が通常Q4より速いことである。
 
EVO-X2なら、
通常 Q4 12.83 tok/s
MTP Q8 18.75 tok/s
 
DGX Sparkなら、
通常 Q4 12.72 tok/s
MTP Q8 20.25 tok/s
となる。
 
つまり、量子化をQ4まで落とさなくても、Q8 MTPを使えば品質を維持しながら通常Q4を大きく上回る速度が得られる。
今回の検証では、これがモデル選択を変える最大の要因となった。
 

MacではMLXを使った方がよい

M4 MacBook Air 32GBについては、Linuxとはかなり異なる結果になった。
 
短いPromptでは、
GGUF Q4 4.29 tok/s
MLX 5.65 tok/s
だった。
さらに長いcontextを与えると、
GGUF Q4 2.40 tok/s
MLX 6.01 tok/s
となった。
 
MLXは長いcontextでも生成速度をかなり維持している。
 
一方、GGUFのMTPモデルを使うと、
Normal Q4 3.42 tok/s
MTP Q4 2.38 tok/s
となり、逆に約30%遅くなった。
 
したがって今回の環境では、
Linux AMD/NVIDIA
MTPが非常に有効
 
 
Apple Silicon
MLXを使用
という使い分けになった。
 
Ollamaでは近い世代のQwen 27Bについても、GGUF系とは別にMLXモデルやMTP Q4/Q8モデルが提供されており、バックエンドに応じたモデル選択が重要になっている。
 

実運用を想定して「5K Prompt + 512 tokens」を測る

単純なPrefillやDecodeだけでは実際のOpen WebUIやRAGでの体感とは少し違う。
 
そこで、
約5K tokensのPrompt
Prefill
512 tokens生成
という実運用寄りのベンチマークを行った。
 
結果は以下である。
環境
モデル
Prefill
TTFT相当
Decode
Total
EVO
Q4
240 tok/s
22.15秒
12.54
63.75秒
EVO
MTP Q4
245
21.73秒
27.83
40.22秒
EVO
Q8
209
25.41秒
7.66
92.35秒
EVO
MTP Q8
250
21.26秒
19.75
47.28秒
DGX
Q4
841
6.53秒
12.46
47.74秒
DGX
MTP Q4
807
6.81秒
29.80
24.11秒
DGX
Q8
889
6.23秒
8.07
69.81秒
DGX
MTP Q8
854
6.45秒
21.97
29.86秒
 
MTPの効果は実運用条件でも非常に大きい。
 
特にQ8を見ると、
EVO-X2
 
Normal Q8 92.35秒
MTP Q8 47.28秒
ほぼ半分である。
 
DGX Sparkでは、
Normal Q8 69.81秒
MTP Q8 29.86秒
半分以下になった。
 
Q8をこの速度で使えるのであれば、少なくとも今回の用途では通常Q4を常用する必要性は低いと判断した。

最後に「本当のTTFT」を測る

最後にstreaming APIを使った。
 
ここまで使用していたTTFT相当値は、
load_duration + prompt_eval_duration
から算出したものだった。
 
そこで実際に、
HTTP request開始
OllamaがPromptを処理
最初の生成chunkを受信
するまでのwall clock timeをPythonで計測した。
 
使用モデルは最終候補の、
qwen3.8:27b-mtp-q8_0
である。
Promptは4,253 tokens、出力は512 tokensとした。
 
結果はこうなった。
 
EVO-X2
DGX Spark
Prompt
4,253 tokens
4,253 tokens
実TTFT
17.09秒
5.47秒
Prefill
253.14 tok/s
844.42 tok/s
Decode
20.45 tok/s
20.65 tok/s
Decode時間
25.04秒
24.80秒
Wall Total
42.15秒
30.28秒
これが今回もっとも分かりやすい結果である。
 

EVO-X2とDGX Sparkは「生成速度」がほぼ同じだった

まずDecodeを見る。
EVO-X2 20.45 tok/s
DGX Spark 20.65 tok/s
差は約1%しかない。
ほぼ同じと考えてよい。
 
512 tokensの生成時間も、
EVO-X2 25.04秒
DGX Spark 24.80秒
である。
これだけを見るとEVO-X2とDGX Sparkの差はほとんどない。
 
ところがPrefillは、
EVO-X2 253 tok/s
DGX Spark 844 tok/s
となった。
約3.34倍である。
 
その結果、実TTFTは、
EVO-X2 17.09秒
DGX Spark 5.47秒
となった。
 
DGX Sparkは約3.1倍速く最初のtokenを返してくる。
 

つまり体感差はこうなる

Open WebUIなどで短い質問をした場合、
短いPrompt
Prefill時間が短い
生成開始
EVO 約20 tok/s
DGX 約21 tok/s
なので、それほど大きな違いは感じないはずである。
 
しかしRAGなどで、
System Prompt
+
Conversation History
+
RAG Documents
+
User Prompt
 
 
数千~数万tokens
となると事情が変わる。
 
今回の4,253-token Promptだけでも、
EVO-X2
17秒待ってから回答開始
 
DGX Spark
5.5秒で回答開始
となった。
 
回答が始まった後は同じ速度なのに、回答が始まるまでの待ち時間がまったく違うのである。
これがDGX Sparkの大きな強みだと考える。

EVO-X2の評価もかなり高い

一方、この結果を「DGX Sparkが圧勝した」とだけ見るのも違う。
 
EVO-X2はQwen 3.8 27B Q8を、
約29GB
100% GPU
約20 tok/s
で生成できている。
しかもsingle-user DecodeではDGX Sparkとほぼ互角である。
 
したがって、
  • 普通のローカルチャット
  • single-user用途
  • 短~中context
  • 大容量Unified Memoryを利用したLLM
という用途なら、EVO-X2はかなり優秀である。
 
DGX Sparkとの差が大きくなるのは、
  • RAG
  • Coding Agent
  • 長い会話履歴
  • 巨大System Prompt
  • Document processing
など、大量のPrefillが発生する用途である。
 

最終的に残したモデル

比較が終了したので、実運用用として残すモデルは3つに絞った。

EVO-X2

qwen3.8:27b-mtp-q8_0
Q8品質を維持しながら約20 tok/s出るため、Q4ではなくこちらを常用する。

DGX Spark

qwen3.8:27b-mtp-q8_0
約21 tok/sのDecodeに加え、約840 tok/sというPrefill性能を利用できる。
RAGやAgent用途はこちらを優先する。

M4 MacBook Air 32GB

qwen3.8:27b-mlx
Apple Siliconでは今回MLXが最も安定していた。
 
32GBのMacBook Airでも27Bモデルが約5~6 tok/sで動くという点は十分実用的である。
 

まとめ

今回の比較で一番意外だったのは、EVO-X2とDGX SparkのQwen 3.8 27B生成速度がほぼ同じだったことである。
MTP Q8のstreaming実測では、
EVO-X2 20.45 tok/s
DGX Spark 20.65 tok/s
だった。
 
一方、Prefillは、
EVO-X2 253 tok/s
DGX Spark 844 tok/s
である。
 
したがって両者の違いは、
DGX Sparkは文章を生成すること自体が圧倒的に速いのではない。大量のcontextを処理して、文章を生成し始めるまでが圧倒的に速い。
ということになる。
 
今回の結果を用途別に整理すると、次のようになる。
用途
選択
普通のローカルLLM
EVO-X2 + MTP Q8
RAG / Agent / 長context
DGX Spark + MTP Q8
MacでローカルLLM
M4 + MLX
EVO/DGXで速度最優先
MTP Q4
品質と速度のバランス
MTP Q8
特にMTPの効果は大きかった。
 
従来なら27B Q8で7~8 tok/s程度だったものが、MTPによって20 tok/s前後まで高速化された。これならQ4まで量子化を下げず、Q8を常用するという選択が十分現実的になる。
 
そして今回、Cold load、Warm-up、通常Decode、長文Prefill、Q4/Q8/BF16、GGUF/MLX、MTP、5K実運用、最後にはstreaming APIによる実TTFTまで測定した。
 
単純な「何tok/s出た」という比較から一歩進み、実際にユーザーが何秒待てば回答が始まり、そこからどの速度で文章が流れてくるのかまで確認できた。
Qwen 3.8 27Bについては、これでひとまず検証完了である。
 
 
 
性能差と価格差を考えると安価な値段設定であるStrix Haloはお勧めなんだが、今となっては、Strix Halo、DGX Sparkともにおいそれと買えない金額になっている。EVO-X2は、自分の買った時の2〜3倍、DGX Sparkは1.5倍になっている。それでも今や300万くらいするNvidia Pro6000 VRAM 96GB単体GPUカードと比較するとまだ安いのだが。
Strix Haloは、GPUはオマケとして考えて、DDR5 128GB搭載のNUCが去年の今頃は20万円代。その時点でも格安だった。今は、60-70万円。さらに、このパーツ不足、高騰のせいで、1年経っても後継機種が出ていない、現行機種、プラットフォームというのも驚き。さらにStrix Haloの性能がだいぶ上がってきている。お勧めといいたいが、ほんと高くなってしまった。
 
 
 

コメントする