概要
- Gemma 4のMTPドラフターとベリファイアを、GPUなしの旧型サーバーで動作させる手法の解説
- 主なボトルネックは メモリ帯域幅、CPU性能よりも重視
- llama-cliの 最適化フラグ を駆使し、メモリ・キャッシュ効率を最大化
- Speculative decoding や MoEルーティング など最新手法の活用
- ハードウェア制約下で最大限の性能を引き出す具体的なコマンドと解説
Gemma 4 MTPモデルをGPUなしDDR3サーバーで動かす最適化手法
- サーバー構成: Intel Xeon E5-2620 v4(8コア16スレッド)、128GB DDR3 RAM、GPUなし
- LLM推論において最も重要なのは メモリ帯域幅、CPUはしばしばアイドル状態
- llama-cliやollama等のブラックボックスツールでは最適化が不十分な場合が多い
- llama-cli の詳細なフラグ設定により、低速メモリ環境でも現実的な実行速度を実現
- コマンド例(抜粋):
- --spec-type mtp --draft-max 3 --spec-autotune (Speculative decodingの最適化)
- --cpu-moe --merge-up-gate-experts (MoEルーティングとキャッシュ効率化)
- -t 8 --parallel 8 (物理コア数に合わせたスレッド割当て)
- --mlock --run-time-repack (メモリピン留めと重み行列再配置)
- -sm graph -smgs -sas -mea 256 --split-mode-f32 (計算グラフ分割・並列化設定)
Speculative Decoding(推測デコーディング)の活用
- Speculative decoding は、ドラフターとベリファイアを組み合わせて推論速度を大幅に向上
- 小型ドラフターは L3キャッシュ に収まるため高速処理が可能
- ベリファイアは全重みを使うため メモリ帯域 が律速要因
- --spec-autotune でワークロードに応じて最適なチェーン長を自動調整
- CPU環境では 計算コストよりもメモリ転送コスト が高いため、Speculative decodingの効果が大きい
MoE(Mixture of Experts)モデルのCPU最適化
- Gemma 4 26B-A4B は128エキスパート、1トークンにつき8エキスパートが活性化
- --cpu-moe でエキスパート選択をキャッシュ効率優先に最適化
- --merge-up-gate-experts で2つの演算を1回のMatMulに統合し、メモリバス転送を削減
- -t 8 は物理コア数に合わせてスレッド数を最適化
- メモリ制約下ではスレッド過多によるスケジューリングコスト増大を防止
メモリ管理・KVキャッシュ・ピン留め
- --run-time-repack で重み行列をCPUキャッシュに最適な形状へ再配置
- 初回起動時に数秒のペナルティで、その後の推論速度を最大化
- --mlock でモデル全体を物理RAMに固定し、スワップアウトによる壊滅的な速度低下を防止
- Linuxでは ulimit -l でピン留め可能なメモリ上限を調整する必要
- --no-kv-offload でKVキャッシュのGPU転送を明示的に無効化
- GPUが存在しない環境でのエラー回避と最適化
計算グラフ分割・並列化の工夫
- -sm graph はグラフ単位でのSplit Mode(Tensor Parallelism)を指示
- 理想的には複数プロセッサが同時並列で同一レイヤーの異なる部分を計算
- 現状、 Gemma 4のMTP構造 ではgraph split未対応のため自動的にlayer splitへフォールバック
- 今後のエンジン更新でgraph split対応が進めば、さらなる高速化が期待
まとめ:ブラックボックスツールとの違いと自力最適化の意義
- ollama等のツールは内部最適化が見えず、パフォーマンスチューニングが困難
- ハードウェア制約下では 各種フラグの意味を理解し、手動で最適化 することが必須
- メモリ帯域・キャッシュ効率・スレッド割当・Speculative decoding・MoEルーティングなど、 総合的な知識と実験 によって旧型サーバーでも現代的なLLM推論が可能
- 最新AIエンジンはドキュメント不足も多く、 GitHub Pull Requestやソースコード の調査が重要
- 今後のアップデートでさらに最適化余地が広がる見込み