レガシーな Xeon ハードウェアで Gemma 4 26B を実行する
レガシーなXeonハードウェアでGemma 4 26Bを実行する
GoogleのGemma 4 26B mixture-of-experts (MoE) モデルは、GPUなしの13年前のIvy Bridge Xeon CPU上で、毎秒約5トークンで動作可能です。これは、ik_llama.cpp 推論エンジン内でAVX2およびFMA3命令セットに対してスカラーフォールバックを実装することで実現され、最新のMoEアーキテクチャをレガシーなエンタープライズハードウェア上で動作させることを可能にしています。
ハードウェアとパフォーマンスのベンチマーク
260億パラメータのモデルを2013年のハードウェアで実行することは、古いシステムにおけるローカルLLM推論の主なボトルネックが、生の計算命令ではなくメモリ帯域幅であることを示しています。
システム仕様:
- ハードウェア: 再利用されたHP StoreVirtual ストレージボックス
- CPU: Dual Intel Xeon E5-2690 v2 (Ivy Bridge, 2013)
- 命令セット: AVX1のみ (AVX2なし, FMA3なし)
- RAM: DDR3
- GPU: なし
- 合計ハードウェアコスト: 300ドル未満
パフォーマンス指標 (Gemma 4 26B-A4B, Q8_0):
- デコード速度: ~5.2 tokens/sec
- プロンプト評価: ~16 tokens/sec
技術的課題: AVX2命令セットのギャップ
ik_llama.cpp フォークを含む最新の高パフォーマンス推論カーネルは、通常、AVX2およびFMA3(2014年のIntel Haswell/v3世代で導入)を最小ハードウェア要件として想定しています。Ivy Bridge (v2) CPUはこれらの命令を欠いているため、ソフトウェアが実在しないCPU命令を実行しようとすると、ビルドの失敗や実行時のクラッシュを即座に引き起こします。
ビルド時に GGML_USE_IQK_MULMAT を無効にすることで、コードベースの大部分をスカラーまたはSSE数学演算にフォールバックさせることができますが、Gemma 4 MoEのフィードフォワードネットワーク (FFN) における特定のグラフ演算が問題として残りました。具体的には、グラフビルダーが MOE_FUSED_UP_GATE および FUSED_UP_GATE 演算を生成しますが、非AVX2ビルド用のディスパッチャにそれに対応する計算パスが欠けてていました。これにより、各エキスパートFFNの出力テンソルが計算されず、モデルが未初期化のメモリを処理するというサイレントな失敗が発生していました。
解決策: スカラーフォールバックの実装
サイレントなデータの破損を解決し、Pre-AVX2ハードウェアとの互換性を可能にするために、パッチ(ik_llama.cpp への PR #2138 として提出)において3つの主要な変更が実装されました:
1. スカラーコンパイルパスの修正
iqk_quantize.cpp 内のいくつかのスカラー #else ブランチが、hsum_i32_8 のようなAVX2ヘルパーを誤って参照していました。これらは移植可能なスカラーループとして書き直され、AVX2特有のIQK呼び出しがビルドに混入することを防ぐために #if GGML_USE_IQK_MULMAT ガードが追加されました。
2. ランタイムディスパッチャのバグ修正
ディスパッチャを修正する代わりに、グラフビルダーを更新して、レガシーハードウェアに既存の計算パスが存在する演算を生成するようにしました。GGML_USE_IQK_MULMAT が無効な場合:
- 結合された
up_gate_expsテンソルは、2つのggml_view_3dスライスに分割されます。 - 2つの個別の
ggml_mul_mat_id呼び出しが実行されます。 - 結果は
ggml_fused_mul_unary(gate, up, SILU)を使用して結合されます。
このアプローチは、標準の GGML 実装(mul_mat_id および fused_mul_unary)を活用することで、MoEレイヤーがAVX2融合カーネルを必要とせずに正しく計算されることを保証します。
3. CIおよびビルドシステムのスタブ
テストスイートが非AVX2ハードウェアで実行可能であることを確えるため、IQKソースの #else スタブセクションにおける欠落している <cstdint> インクルードと誤った関数シグネチャを、iqk_mul_mat.h と一致するように修正しました。
デプロイメントの制約と注意点
Pre-AVX2ハードウェアでこれらの結果を再現しようとするユーザーは、以下の制約を遵守する必要があります:
- 実行時のリパッキングを無効にする:
--run-time-repackフラグは使用しないでください。この機能は、量子化された重みをAVX2専用のインターリーブレイアウト (Q8_0_R8) に並べ替えます。これをAVX1ハードウェアで使用すると、出力が乱れます。 - ビルド構成: プロジェクトは
GGML_USE_IQK_MULMATを off に設定してコンパイルする必要があります。
ローカルでのレガシー推論に関するコミュニティの視点
技術的なユーザー間の議論では、ローカル推論の教育的・プライバシー的価値と、クラウドプロバイダーの経済的現実との間の緊張関係が浮材に上がっています。
"I estimate that the server consumes probably around 500W during inference... 18k tokens inferred locally would therefore cost 0.15USD which is 30x the costs of using an inference provider."
レガシーハードウェアの電気代がAPIトークンのコストをうつに、ローカル推論の支持者は、主な動機はデータのプライバシーと、有料APIが利用できない場合のローカルなフォールバック手段を維持できる能力であると主張しています。