なぜHermes-4.3-36Bの量子化選択で運用が変わるのか:BF16/FP8/nvfp4の実測比較
Hermes-4.3-36BをBlackwell GPU上でBF16・FP8・nvfp4の3パターンで比較検証。nvfp4はBF16比2倍の速度だが、品質と速度のトレードオフは用途で切り替えるべきという結論に至った実測記録。
背景
ローカルLLM環境で対話・コード生成・MCP連携を行うにあたり、モデルの量子化レベルをどう選ぶかは恒常的な課題になる。NousResearch Hermes-4.3-36Bは、ツール利用(Function Calling)に強い36Bクラスのモデルで、vLLM環境での運用候補として評価した。
RTX PRO 6000 Blackwell(96GB VRAM)があれば、BF16(非量子化)でも動くが、VRAM使用率が90%を超えコンテキスト長に余裕がない。nvfp4(4bit)なら約22GBで済む。問題は「速さと引き換えに何を失うか」だった。
目的
- Hermes-4.3-36Bの3つの量子化パターン(BF16, FP8, nvfp4)で生成速度・TTFT・VRAM消費を定量比較する
- 「速い=賢い」という錯覚がどの程度発生するかを評価する
- 用途別の量子化選択基準を確立する
実験環境
| 項目 | 仕様 |
|---|---|
| GPU | NVIDIA RTX PRO 6000 Blackwell Max-Q 96GB |
| CPU | AMD EPYC 9175F |
| メモリ | DDR5-6400 768GB |
| Runtime | vLLM 0.14.0rc1 |
| Model | NousResearch / Hermes-4.3-36B |
実施内容
BF16(非量子化)
vllm serve NousResearch/Hermes-4.3-36B \
--dtype bfloat16 \
--max-num-seqs 1 \
--max-model-len 65536
FP8
vllm serve NousResearch/Hermes-4.3-36B \
--dtype bfloat16 \
--quantization fp8 \
--max-num-seqs 1 \
--max-model-len 65536
nvfp4(4bit)
vllm serve NousResearch/Hermes-4.3-36B-nvfp4 \
--max-num-seqs 1 \
--max-model-len 32768
それぞれの設定で同一の対話タスク・コード生成タスクを実行し、vLLMのログからスループットを計測した。
結果
横断比較
| 項目 | BF16 | FP8 | nvfp4 |
|---|---|---|---|
| 生成速度 (TG) | 17-19 tok/s | 18-20 tok/s | 31-33 tok/s |
| Prefill速度 (PP) | 300-500 tok/s | 1000+ tok/s | 280-500 tok/s |
| TTFT | 遅め | 改善 | 良好 |
| VRAM使用量 | 90%超 | 中 | 約22GB |
| KV cache使用率 | 6-8%(短文) | 改善 | 1-2%(大幅余裕) |
| 品質・安定性 | 最も安定 | 良好 | やや不安定な場面あり |
注目すべきポイント
nvfp4の生成速度はBF16の約1.7-2倍。 31-33 tok/sという速度は対話において「待たされない」体感を生む。VRAM消費も約22GBと、96GB GPUなら他のモデルとの同時運用も容易。
FP8のPrefillが突出して速い。 1000 tok/s超のPrefillは、長いSystem PromptやRAGコンテキストを送る場合にTTFTの大幅短縮に繋がる。生成速度自体はBF16とほぼ同等。
BF16は重いが品質が最も安定。 VRAMを90%以上使うためコンテキスト長に制約があるが、長文の一貫性や厳密なコード修正での信頼性が最も高かった。
考察
速さが生む「賢い」という錯覚
nvfp4の軽快な応答は、体感として「モデルが賢くなった」ように感じさせる。しかし実際には、量子化による品質低下は長文の一貫性や複雑な推論で顕在化する。「速い=賢い」という錯覚は、主観評価だけに頼ると見逃しやすい。
評価は「1回でテストが通る率」のような客観指標で行うべき。体感の軽さと実際の品質は別の軸で評価する必要がある。
用途で切り替える設計思想
検証の結果、以下の使い分けが最も合理的だった。
探索的開発(nvfp4が有利):
- 「まずは動かしてみる」フェーズ
- コード断片の高速な試行錯誤
- MCP + context7を前提とした対話
- 短い待機時間が開発リズムを維持する
破壊的変更(BF16/FP8が有利):
- リポジトリ全体の整合性を保つリファクタリング
- 重要ロジックの修正
- 1回でテストを通す確率が効率を左右する場面
- 最終レビュー段階
ツール利用能力の評価
Hermes-4.3-36Bは全体的な推論の深さで限界を感じる場面はあったが、ツール利用(MCP連携、Function Calling)は比較的安定していた。引数の指定や後続ステップへの接続に大きな破綻が少なく、外部ツール(静的解析等)と組み合わせる運用では実用的。
aider等のコンテキスト大量送信環境
aiderのように毎回6000トークン程度の履歴を送信する運用では、モデルの量子化精度よりコンテキスト設計(context7/MCP)が支配的になる。この場合、nvfp4のVRAM節約とコンテキスト余裕が直接的なメリットになる。
感想
「nvfp4は速いが雑」「BF16は遅いが堅い」という単純な二項対立ではなく、開発フェーズごとに切り替えるのが現実解だった。nvfp4をデフォルトにして、最終修正だけBF16に切り替える運用が、結果的に最もストレスが少なかった。
FP8は「BF16の重さは嫌だが4bitは不安」という中間需要にピタリとはまる。Prefillの速さ(1000 tok/s超)は、RAGやMCP連携で長いコンテキストを送る場面で特に効果的。
再現方法
1. モデル取得
# BF16/FP8用
huggingface-cli download NousResearch/Hermes-4.3-36B
# nvfp4用
huggingface-cli download NousResearch/Hermes-4.3-36B-nvfp4
2. vLLMサーバー起動
上記の「実施内容」セクションのコマンドを参照。--max-num-seqs 1は対話専用の設定。バッチ処理なら適宜増やす。
3. 計測
vLLMのログからAvg generation throughputとAvg prompt throughputを抽出。複数回のリクエストで安定値を確認する。
補足ノウハウ
vLLMでのFP8量子化
vLLMの--quantization fp8は実行時にBF16モデルをFP8に変換する。事前に量子化済みモデルを用意する必要はない。ただしBlackwell世代のGPU(compute capability 12.0)が必要。
nvfp4のVRAM見積もり
36BモデルのnvFP4量子化で約22GB。これは24GB GPUでも動作可能だが、KVキャッシュの余裕を考えると32GB以上が推奨。96GB環境なら、nvfp4モデルを2-3個同時にロードすることも可能。
量子化選択のフローチャート
- VRAMが足りない → nvfp4一択
- VRAMに余裕あり + 対話メイン → nvfp4(速度重視)
- VRAMに余裕あり + コード修正 → FP8(バランス)
- 最終レビュー・厳密性重視 → BF16(品質優先)

