CPUのみで動かす
CPUのみの推論は実用になり、数値は俗説より絶望的ではない——GPUデコードと同じ帯域幅のゲームを、10分の1のパイプでやると理解しさえすれば。デュアルチャネルDDR5の現代的デスクトップはメモリ帯域幅約80〜100 GB/s。それが予算のすべて。CPUコア自体の何かがこれを大きく変えることはない。
式と計算
decode tok/s ≈ 実効帯域幅 (GB/s) ÷ モデルサイズ (GB)
デュアルチャネルDDR5-5600は紙の上では約90 GB/s。コアとプリフェッチャの取り分を引いて実効60〜80 GB/sと呼ぼう。8B Q4モデルは約5 GB。よって。
90 GB/s ÷ 5 GB ≈ 18 tok/sが理論上限 → 実践では8〜14 tok/s。
これはバグではない——大型ディスクリートGPUと同じ算数を、10分の1の帯域幅でやっているだけ。
ハードウェア別の期待値
| プラットフォーム | 概算帯域幅 | 8B Q4デコード | 体感 |
|---|---|---|---|
| ノートPC、DDR4デュアルチャネル | 40〜50 GB/s | 5〜8 tok/s | 読める、出だし遅い |
| ノートPC、DDR5デュアルチャネル | 60〜80 GB/s | 8〜12 tok/s | 実用チャット |
| デスクトップ、DDR5デュアルチャネル | 80〜100 GB/s | 10〜16 tok/s | 8B以下なら快適 |
| Threadripper/EPYC、クアッドチャネル以上 | 200〜460 GB/s | 30〜80 tok/s | 本当に良い |
| デュアルソケットサーバ | 400+ GB/s | 60〜100 tok/s | ほぼRAM製GPU |
デュアルチャネルデスクトップでの快適ティア。
- 快適:7〜8B Q4のチャットとコード支援が10+ tok/s。
- 実用:13〜14B Q4が約5〜8 tok/s。待つが、永遠ではない。
- 忍耐:24〜32B Q4が約2〜4 tok/s。チャットではなく夜間バッチ。
- 禁止:デュアルチャネルで70B Q4は1 tok/s未満。クアッドチャネルワークステーション限定で、それでも再考を。
脱出口:部分オフロード
小さいGPUがあれば、llama.cppはCPUとGPUの間でレイヤーを分割する——たとえば32レイヤー中20を8 GBカードに。GPU常駐分はVRAM帯域幅で、残りはRAM帯域幅で走り、速度は両極端の間に着地する。重みがどこにも完全に収まらない場合、どちらの純粋モードより勝り、「フルGPUオフロード」が共有メモリを激しく叩くのを見るより勝る。
本当の苦痛はプリフィル
注目されるのはデコードだが、CPUが痛い目を見るのはプリフィル。計算律速で、デスクトップCPUのFLOPsはGPUのほんの一部だから。8Bモデルへの4,000トークンのプロンプトは、最初のトークンの前に数十秒を要求し得る。大きなコンテキストを注入するRAG型パイプラインは、リクエストごとにこれを支払う。緩和策:プロンプトを短く、バッチプリフィルにデコードより多くのスレッドを、インデックス構築は一回のコストとみなす(RAGを参照)。
実用フラグ
# デコードスレッド=物理コア数。バッチプリフィルは論理コアも使える
llama-server -m qwen2.5-7b-instruct-q4_k_m.gguf -c 8192 -t 8 --threads-batch 16
# マルチソケット機:NUMAノードをまたいでメモリをインターリーブ
numactl --interleave=all ./llama-server -m model.gguf -t 32
# このCPUのSIMDは?AVX2が下限。AVX-512はプリフィルに効く
lscpu | grep -o 'avx[0-9a-z_]*' | sort -u
-tは物理コア数に設定するのがデコードでは通常勝つ。マシンで両方ベンチマークすること。クロスオーバーはワークロード次第。- AVX2はどこでも基準線。AVX-512(Zen 4/5、最近のXeon)はプリフィルに現実の利得。llama.cppはビルド時に対応を検出する。
- マルチソケット機ではNUMAピニングが20%以上の価値になり得る——遠いソケットのメモリは遅いメモリ。
- ノートPCのDDR4はデスクトップDDR5のほぼ半分の帯域幅。同じ式、より悪い定数。デスクトップが12を出すところで5〜8 tok/sを予想。
CPUのみが本当に正解の場合
- エンベディングとRAGインデックス——重要なのはスループットでレイテンシではない。夜間の数時間のチャンク埋め込みは無料。
- スクリプト内の超小型モデル——0.5〜3Bの分類器、抽出器、リランカーはCPUでも数十ミリ秒で答える。
- バッチのバックグラウンドジョブ——寝ている間に3 tok/sで滞留分を要約。ストリームを見ている人はいない。
- 購入前の試用——GPU購入を確定する前に、モデルファミリーが仕事をこなすか検証。
対話チャットが目的でGPUが1枚でもあれば、モデルはそこへ。今日中に動かすには初回実行、目にする数値の意味を理解するには速度。