見出し画像

Gemma 4 26B を llama.cpp + MTP で実運用化した構成と最適化まとめ


今回、ローカルLLM環境として、

Gemma 4 23B
+
llama.cpp
+
MTP(Speculative Decoding)
+
WSL2
+
RTX3060 12GB
+
Open WebUI

を組み合わせ、高速かつ実用的な推論環境を構築できた。

特に重要なのは、単純に「モデルを動かした」のではなく、

MTPを有効化した高速推論

まで到達した点である。

これはローカルLLM運用の中でも、かなり高度な領域に属する。


1. 全体構成

今回の構成は以下。

Windows 11
↓
WSL2 Ubuntu
↓
CUDA on WSL
↓
llama.cpp
↓
llama-server
↓
OpenAI API mode
↓
Open WebUI
↓
ブラウザUI

この構成の利点は、

  • Linux系の高速推論環境

  • Windows側UI運用

  • OpenAI互換API

  • WebUI連携

を同時に実現できる点。

特に OpenAI API mode を使用したことで、Open WebUIとの統合が容易になり、ChatGPTライクな操作環境をローカルで構築できた。


2. ハードウェア構成

使用GPUは:

NVIDIA GeForce RTX 3060 12GB

VRAM 12GBという制約があるため、23B級モデルを動かすには量子化が必須だった。

そのため、

GGUF量子化モデル

を使用。

llama.cpp側でCUDA offloadを有効化し、可能な限りGPU実行へ寄せた。


3. llama.cpp の役割

今回の中核は:

llama.cpp GitHub

llama.cpp は現在、

  • CUDA backend

  • Flash Attention

  • Speculative Decoding

  • MTP

  • OpenAI API互換

などが急速に強化されており、ローカルLLMの標準基盤になりつつある。

今回は llama-server を利用。

これにより:

localhost:8080/v1

形式でOpenAI API互換サーバとして動作。

Open WebUI 側からは:

OpenAI API provider

として接続できた。


4. MTP(Multi-Token Prediction)

今回最大のポイントは:

MTP(Speculative Decoding)

の導入。

通常LLMは:

1 token生成
↓
次token計算
↓
1 token生成

を逐次実行する。

しかしMTPでは:

Draft model が先読み生成
↓
Main model が採用判定

を行うことで高速化できる。

今回ログでは:

draft acceptance rate = 0.65〜0.76

を達成。

これはかなり優秀。

一般的には:

Acceptance Rate評価0.3以下効果薄0.4〜0.55普通0.6〜0.7良好0.75以上非常に優秀

今回の構成は「良好〜非常に優秀」の範囲に入った。


5. 実測性能

ログ結果:

44〜50 tokens/sec

を記録。

これはRTX3060としてはかなり高速。

一般的な26B級運用では:

状態速度未調整10〜20 t/sCUDA最適化20〜35 t/sMTP有効40〜55 t/s

現在は上位帯。

特に:

1000 tokens / 約20秒

近辺まで短縮できたことで、会話レスポンスが実用レベルへ到達した。


6. WSL2 の実用性

以前は:

WSL2は遅い

という評価も多かった。

しかし現在は:

  • CUDA on WSL

  • GPU paravirtualization

  • memory transfer改善

が進み、

Windows Nativeとの差が小さい

状態になっている。

今回も:

prompt eval
≈ 1200 tokens/sec

が出ており、WSL2のオーバーヘッドはほぼ問題になっていない。

つまり現在は:

OS差
より
推論最適化差

の方が大きい。


7. Open WebUI 連携

UIには:

Open WebUI

を使用。

構成:

ブラウザ
↓
Open WebUI
↓
OpenAI API
↓
llama-server
↓
Gemma 4 23B

これにより:

  • ChatGPT風UI

  • 会話履歴

  • System Prompt

  • API統合

が利用可能になった。

ローカル環境ながら、かなり完成度の高い操作性を実現できた。


8. チューニング

速度に影響した要素:

sampler設定

以下が安定。

--temp 0.8
--top-k 40
--top-p 0.92
--min-p 0.03
--repeat-penalty 1.05

Gemma系は sampler が重いため、

top-k過大
top-p過大

だとMTP効率が悪化しやすい。


Context

長すぎるcontextはKV cache負荷増加を招く。

そのため:

-c 4096〜8192

が現実的。


Batch Size

RTX3060では:

-b 1024

付近が有効なケースが多い。


9. 現在の到達レベル

今回の環境は単なる:

ローカルLLM導入

ではない。

既に:

レベル内容初級WebUI導入中級CUDA推論上級OpenAI API化上級+MTP導入実戦級acceptance最適化

まで進んでいる。

特に:

  • llama.cpp

  • CUDA

  • WSL2

  • OpenAI API

  • Open WebUI

  • MTP

を安定統合できたことは大きい。

10.注意点

手元のgemma-4-26B-A4B-it-assistant-Q8_0.ggufはgemma4_assistantアーキテクチャを使用しており、AtomicChatが配布するフォーク専用GGUFでなければロードできません。
つまり、手元のファイルはHugging Face公式(google/)のQ8_0変換版で、AtomicChat版とはアーキテクチャが異なります。

解決策:AtomicChat版に差し替える

bash

# AtomicChat版の26B-A4B用ドラフターをダウンロード
huggingface-cli download AtomicChat/gemma-4-26B-A4B-it-assistant-GGUF \
  --include "*Q4_K_M*" \
  --local-dir ~/models/gemma4-assistant-atomic

# ダウンロード確認
ls ~/models/gemma4-assistant-atomic/

いいなと思ったら応援しよう!