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 は現在、
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
↓
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.05Gemma系は 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/