PUBLIC

Chapter 2 なぜ手元のPCで動くのか / 2-5

速度を決めているのは演算性能ではない

理論上限 = メモリ帯域 ÷ 1トークンあたりの読み出し量。このサイトの山場。

「GPUが強いほどLLMは速い」── 多くの人がそう思っています。TFLOPSの高いGPUを買えば速くなる、と。

これは半分間違いです。少なくとも、手元で1人で使う場合には。

1トークン作るのに、何をしているか

レッスン1-1で見たとおり、LLMは1トークンずつ生成します。そして1トークン作るために、モデルの重みを全部読む必要があります。

27BのモデルをQ4で持っているなら、16.2GB。1トークンごとに、16.2GBをメモリから読み出している。1秒に20トークン出ているなら、毎秒324GBを読んでいることになります。

ここがボトルネックです。計算そのものは一瞬で終わる。データを持ってくるほうが遅い。だから、生成速度の理論上限はこうなります。

理論上限の速度 = メモリ帯域 ÷ 1トークンあたりの読み出し量

ここが要点

演算性能(TFLOPS)は、この式に出てきません。出てくるのはメモリ帯域(GB/s)と、モデルの読み出し量(GB)だけです。

実機の帯域で計算してみる

代表的な3機種のメモリ帯域です。容量と帯域が別の軸であることに注目してください。

マシンメモリ帯域メモリ容量
RTX 50901,792 GB/s32 GB
MacBook Pro M5 Max614 GB/s128 GB
DGX Spark273 GB/s128 GB
メモリ帯域 (GB/s) ↑ 速度が決まるメモリ容量 (GB) → 動くモデルが決まる32 GB64 GB128 GB300 GB/s600 GB/s1,800 GB/s個人向けには「空席」(数千万円のH100/B200クラスタ領域)RTX 5090 (32GB)1,792 GB/s (超高速・約110 tok/s)M5 Max (128GB)614 GB/s (大容量・約38 tok/s)DGX Spark (128GB)273 GB/s (大容量だが約17 tok/s)
縦が帯域、横が容量。右上(容量も帯域も大きい)が空いているのが、今のローカルLLMの事情です。

27BのモデルをQ4(16.2GB)で動かすと、理論上限はこうなります。

マシン計算理論上限
RTX 50901792 ÷ 16.2約 110 tok/s
M5 Max614 ÷ 16.2約 38 tok/s
DGX Spark273 ÷ 16.2約 17 tok/s

帯域の比が、そのまま速度の比になっています。公開ベンチマークではRTX 5090がllama.cppで27B級を回すと75〜158 tok/s。理論値の110がちょうど真ん中に収まります。 ざっくりした式のわりに、かなり当たります。

だから、DGX Sparkは「遅い」

身も蓋もないことを書いておきます。DGX SparkはNVIDIAのBlackwellが載った立派なマシンですが、メモリがLPDDR5xなので帯域が273GB/sしかありません。RTX 5090の約6.6分の1です。

両方に載るサイズのモデルなら、RTX 5090が圧勝します。Sparkの価値は速度ではなく、128GBという容量にあります。 「NVIDIAの新しいやつだから速いだろう」と思って買うと、たぶんガッカリします。Sparkは「大きいモデルを動かすための箱」であって、速度を買うマシンではないです。

そして、逆転が起きる

ここからが面白いところです。MoE(レッスン1-6)を思い出してください。

GLM-5.3 Flashは総パラメータ320B、アクティブ18B。1トークンあたりに読むのは、アクティブな18B分だけです。

GLM-5.3 Flash(320B MoE): 18B × 0.6バイト = 10.8 GB/トークン
Qwen3.8 27B(dense)     : 27B × 0.6バイト = 16.2 GB/トークン

320Bのモデルのほうが、読み出し量が少ない。つまり同じマシンなら、320Bのモデルのほうが27Bより速く出てきます。

初めて計算したときは二度見しました。でも理屈は通っています。メモリは320B分を占有するけれど、1トークンあたりに読むのは18B分だから。

自分で動かして確かめる

式を眺めるより、数字を動かすほうが早いです。モデルを切り替えて、バーの長さがどう入れ替わるかを見てください。 特に「Qwen3.8 Flash-Next(125B / アクティブ12B)」と「Qwen3.8 27B」の比較が分かりやすいはずです。

Interactive

速度シミュレータ

生成速度 = メモリ帯域 ÷ 1トークンあたりの読み出し量。演算性能は式に出てきません。

モデルを選ぶ
総パラメータ数27B
量子化0.6 バイト / パラメータ
表示する値
16.2GB を、1トークンごとに読む

27B × 0.6 バイト / 常駐に要するメモリ 18.4 GB(総パラメータ 27B 分)

このモデルを、マシン別に

RTX 509032GB / 1,792 GB/s
111 tok/s
RTX 409024GB / 1,008 GB/s
62.2 tok/s
MacBook Pro M5 Max128GB / 614 GB/s
37.9 tok/s
DGX Spark128GB / 273 GB/s
16.9 tok/s
DGX Spark ×2256GB / 273 GB/s
16.9 tok/s

同じマシンの上で、モデル別に

Qwen3.8 27B27B dense16.2 GB / トークン
16.9 tok/s
Gemma4 31B31B dense18.6 GB / トークン
14.7 tok/s
Llama 3.3 70B70B dense42.0 GB / トークン
6.5 tok/s
Qwen3.8 Flash-Next125B MoE・アクティブ 12B7.2 GB / トークン
37.9 tok/s
GLM-5.3 Flash320B MoE・アクティブ 18B10.8 GB / トークン
25.3 tok/s✗ 載らない

「載らない」の判定は、コンテキスト8Kのときの常駐メモリとマシンの実効容量(ユニファイドメモリは約75%)の比較です。 載らないマシンでもバーを出しているのは、速度と容量が別の軸であることを見てもらうためです。 実効目安の70%という係数は経験則で、実行環境やモデルによって上下します。ここの数字は理論値であり、実測値ではありません。

触っていると、たぶんこのあたりに気づきます。

  • 量子化を軽くすると、速度も上がる。読み出し量が減るからです。メモリが浮くだけではない。
  • DGX Sparkを2台にしても、速度は1台と同じ。増えるのは容量だけで、帯域は足し算になりません(レッスン2-6)。
  • 載らないマシンにも、バーは出る。速度と容量は別の軸だからです。帯域が速くても、容量がなければそもそも動きません。

注意

ここで出しているのはすべて理論値です。実際にはMoEのルーティング処理、メモリアクセスの効率、 実行環境の実装差で理論値より落ちます。だいたい理論値の60〜80%に収まることが多い、という程度に見てください。 実測との答え合わせは別途やります。

まとめ

  • 生成速度の上限は メモリ帯域 ÷ 1トークンあたりの読み出し量。演算性能は出てこない。
  • だから容量の大きいマシンが速いとは限らない。SparkとRTX 5090はそもそも売っているものが違う。
  • MoEは読み出し量だけが小さいので、巨大モデルがdenseの中型モデルより速くなる逆転が起きる。
  • 「とにかく容量」と言われるのは、容量さえ用意できれば巨大モデルが実用速度で動くから。