世界を動かす技術を、日本語で。

10年前のXeonがあれば十分です

概要

  • Gemma 4のMTPドラフターとベリファイアを、GPUなしの旧型サーバーで動作させる手法の解説
  • 主なボトルネックは メモリ帯域幅、CPU性能よりも重視
  • llama-cliの 最適化フラグ を駆使し、メモリ・キャッシュ効率を最大化
  • Speculative decodingMoEルーティング など最新手法の活用
  • ハードウェア制約下で最大限の性能を引き出す具体的なコマンドと解説

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やソースコード の調査が重要
  • 今後のアップデートでさらに最適化余地が広がる見込み

Hackerたちの意見

こんにちはHN。新しいGemma 4 Drafterモデルを動かす方法が全然見つからなくてイライラしたので、この投稿を書きました。主流のツールもこれを優先していないし、パフォーマンスの調整が隠されているのが気になって。結局、古いリサイクルサーバーで、Xeon E5-2620 v4と128GBのDDR3 RAM(GPUなし)を使って、現代の26B MoEモデル(Gemma 4)を読み取り速度で動かすことができました。かなりの労力がかかりましたが、なんとかうまくいきました。最後にクォンタもリンクしておきましたが、私が言及したik_llama-cppフォークを使わないと動かないので、詳しくは他の投稿を見てください。私はMLエンジニアじゃないので、専門家ではありませんし、サーバーはNixキャッシュとして忙しいですが、質問があればできる限り答えます。

(黒背景に紫は本当に読みづらい)「読み取り速度で動く」と言ってますが、ベンチマークは取ったんですか?

そのセットアップは何ワットですか?動かせたのはすごいけど、エネルギー消費が経済的に無駄になるなら、実用的というよりはビンテージ/レトロコンピューティング向きかも。

本当にDDR3を使ってるの?家にE5 v4のリグが2台あるけど、どちらもDDR4だよ。もしかして、2011-3がDDR3とDDR4をサポートしてるのかも。

ウェブサイトのレイアウトを改善することを考えてみてくれない?今のところ、質が平均以下で、すごく気が散るんだ。エンジニアかどうかはあまり重要じゃないし、優れたエンジニアでもひどい文章を書いたり、理想的じゃないレイアウトを使ったりすることがあるからね。

"-t 8は物理コアに一致する。マシンには16のSMTスレッドがあるけど、コアは8つだけ。メモリバウンドのワークロードでは、スレッドをオーバーサブスクライブするとスケジューリングコストが増えてスループットが増えない。コアはDDR3を待ってるだけで、互いには待ってない。" でも…それってSMTの典型的な使い方じゃないの?T0がDDR(3)を待ってる間にT1に何かをさせるっていう。 "--cpu-moe"の説明も理解できない。専門家が約4.0 GiBのパラメータを持っている場合、なぜ専門家のシーケンスを最適化することでキャッシュの無駄が減るの?20 MiBのL3キャッシュと4.0 GiBのパラメータがある場合、パラメータの目立った量をキャッシュできないんじゃないの?他の人が言ってたように、Intel Xeon E5-2xxx v4の一部だけがDDR3をサポートしていて、IntelによるとE5-2620 v4はその中には含まれてない。

E5 2620-v4はDDR4しかサポートしていませんよ。

AIの進歩で一番興味を引かれるのは、AGIや$AI_UNICORNの最新モデルじゃなくて、ローカルで動かせるものです。6年前に持っていたゲーミングPCに面白いけどあまり役に立たないモデルがあったのを覚えていますが、今はM5のノートパソコンで百倍も良いものが動かせるようになりました。もし市場がメモリ不足に反応し、Appleシリコンの進歩が同じペースで続けば、6年後にローカルで動かせるものはすごく楽しみですし、ちょっと怖いです。それがAI企業の評価にどう影響するのかも分かりません。イベントでそのアイデアについて一人の社員に聞いたことがあるんですが、彼は答えずにカクテルを取りに行っちゃいました。

便利さの問題ですね。WikipediaからSNS、メール、動画サーバーまで、たくさんのものをローカルで動かせます。でも、フルタイムの仕事と2人の子供がいる人は、これらの複雑さをパッチやメンテナンスする時間とエネルギーがないからやらないんです。このシステムはどんどん複雑になっていくし、それはバグも増えるってこと。自由と便利さの間の古くからのトレードオフですね。

コンシューマーハードウェアでローカルで動かせるものはかなり進歩しています。最高ではないゲーミングGPU、例えば5080を手に入れれば、2025年初頭の最先端よりも優れたローカルモデルを動かせます。やりたいことによっては、モデルを切り替える必要があるかもしれません。一つのサイズで全てに合う巨大モデルは、まだデータセンター向けのものです。

話しちゃいけないこと:

  • AIモデルビジネスには「モート」(持続的で守りやすい技術的優位性)はない。短期的な利点しかない。
  • AIビジネスは資本集約型のビジネスで、昔の工場と同じ。データセンターは高いし、モデルはエネルギーを大量に消費するし、ハードウェアは3~4年ごとに交換しなきゃいけない。
  • 小さくて専門的なモデルが下からマージンを食いつぶす。文字起こし、音声、画像検出には大きなモデルは必要ない。伝統的なソフトウェアビジネスのように高いマージンを期待する理由はない。AIの恩恵は主に消費者に行く。 編集: 規模の経済の可能性はある。少数のメガコープは、スケールを達成したときにコスト優位性を追求できる(Microsoft、Google、Amazon、Meta)。

AIモデルをトレーニングして評価を上げるのは、高頻度取引を思い出させるな。

ソフトウェア、特にゲームには昔からそういう傾向があるよね。5~6年前のゲームを安く手に入れて、普通のハードウェアで動かせる。でも、業界は5年間じっとしてるわけじゃないから、新しいソフトウェアが出てきて、より良いハードウェアが必要になるんだよ。

他の人たちがこれに気づいてくれて嬉しいな。俺は2012年のXeonで16GBから24GBのRAMを使って、Gemma 26B-A4B Q4をコンテナで動かしてるんだけど、1秒あたり8から12トークンくらい出てるよ。もちろん、大きなコンテキストと比べると全然だし、GPUで動かすのに比べるとllama.cppの画像デコーダーはめっちゃ遅いけど、小さな自動化タスクや一般的なトリビアの質問にはそこそこ使えるよ。スピードも十分で、終わるのを待たずに読み進められるしね。これが俺のセットアップだよ。自分のCPUに合った最適化、例えばAVX2を調べてみるといいかも。俺のはほとんど対応してなかったから。MTPも試してみたけど、パフォーマンスが良くならなかったな。キャッシュやコンテキストのバッチサイズをいじってみたり、Q2のためにもっと低くしたり、スレッドのオーバーコミットは避けた方がいいけど、デフォルトかllama-benchを試してみるのがいいと思う。これが最高だとは思わないけど、俺にはそこそこ機能したし、たまにGemmaをQwenに変えたりもしてるよ。q8_0をq4_0に下げてコンテキストを増やすこともできるけど、質が落ちるって言う人もいるし、俺もいくつかのモデルでそれを感じたことがある。

ビルド

cmake -B build -DCMAKE_BUILD_TYPE=Release -DGGML_NATIVE=ON -DGGML_BLAS=ON -DGGML_BLAS_VENDOR=OpenBLAS -DGGML_OPENMP=ON

実行

export OPENBLAS_NUM_THREADS=4 export OMP_NUM_THREADS=4 OPENBLAS_NUM_THREADS=4 OMP_NUM_THREADS=4
llama.cpp/build/bin/llama-server -hf unsloth/gemma-4-26B-A4B-it-GGUF:UD-Q4_K_XL --temp 1.0 --top-p 0.95 --top-k 64 --min-p 0.00 --jinja --host 0.0.0.0 --port 8080 --cache-type-k q8_0 --cache-type-v q8_0 --threads 4 --threads-batch 4 --ctx-size 8192 -n 8192 --batch-size 2048 --ubatch-size 512 --no-mmap --mlock --chat-template-kwargs '{"enable_thinking":false}' --no-mmproj -np 1 -fa 1

E5-2620 v4は素晴らしいよ。もう10年使ってる。アップグレードしたいと思ってたけど、今の価格を見てやめた。64GBのDDR4を使ってる。RX 9060 XT 16GBと組み合わせて、ゲームは相変わらず速く動くよ。DOOM The Dark AgesではCPUが少しボトルネックになってるかもしれないけど、60fps出てるから問題ない。GPUで軽いLLMを動かすのは簡単だし、CPUでもうまく動かせるのを見るのはいいね。1ヶ月前に2667 v4を30ドルで買ったんだけど、そこそこパフォーマンスが上がると思ってるけど、まだ必要性を感じてない。でも、記事のようにLLMに進むなら、2667は少し速いRAMを扱えるからアップグレードするかも。

E5-2620 v4は素晴らしいよ。もう10年使ってる。10年?マジで長いな。熱によるダメージでCPUは一定の時間(5~7年)で壊れると思ってたけど、俺が間違ってる?多分そうだよね。今のCPUは昔よりも強くてタフなのかな?

いい投稿だし、技術的にもすごい仕事だね。ビルドパイプラインを理解して、ローカルでできるようになる必要があると思う。ただ、電気代によっては、経済的に意味がないかもしれない。この古いサーバーは全然エネルギー効率が良くないし(古いXeonサーバーは負荷時に簡単に200W引き出すと思う)、そのモデルは現在Openrouterで1Mトークンあたり0.1$/0.3$(76 tpsと262kコンテキスト)だよ(それに、このサーバーはうるさい)。 編集: 訂正します、200Wは明らかに高すぎる見積もりだった。昔、いくつかの古いXeonサーバーを運用してたけど、すごく電力を消費してたけど、具体的にどれだったかは覚えてない。

負荷時には85Wに近いはずだよ。それに、低性能のクーラーでも信じられないほど静かだ。50°Cを超えることはほとんどないね。

2620v4はパワーをガンガン消費するモンスターじゃないよ。サーバーボードによっては、そうでもないかも。サーバーはたいていうるさいけど、ケースバイケースだね。こういうチップを使った予算重視のホスティングがたくさんあって、意外と電力効率がいいんだよ。

記事で見逃したかもしれないけど、最適化の効果はどうだったの?どれくらい速くなったの?

グラニットやサファイアラピッズはMoE推論負荷に対して過小評価されてるよ。でもKVキャッシュにはGPUが必要だね。それに、多くのボードはPCI 5を通じてRAMのCXL拡張もサポートしてるよ!出典:規制産業のワークロード向けにハイブリッド推論ビジネスを構築中。

これは素晴らしい仕事だね。古いDell R710に2 x Xeon 5600(合計12コア)と96GBのDDR3でどんな感じになるか知ってる人いたら教えてほしいな。

これをもう少しモダンなハードウェア、つまり5800XT 32GB DDR4や9060XT 16GBに適用するにはどうすればいい?