Skip to content
記事一覧に戻る
Infrastructure13 min

vLLM 0.9 最適化テクニック: チャンクドプリフィル・スペキュラティブ・FP8 KV キャッシュ

vLLM 0.9 Optimization: Chunked Prefill, Speculative, FP8 KV Cache

Yuki SatoML Platform Engineer
2026-04-2513 min
vLLMOptimizationFP8Speculative DecodingPrefill

vLLM 0.9 で変わったこと

vLLM 0.9 は「prefill と decode の分離」「FP8 KV キャッシュの本番化」「multi-step decoding の安定化」「chunked prefill のデフォルト化」という 4 大変更が中心。チューニングの引き出しが増えたぶん、設定ミスでの性能劣化も起きやすくなった。

Chunked Prefill

長文プロンプト(32k+)の TTFT を平準化するため、prefill を細かいチャンクで処理し、decode と並列に走らせる。社内 R&D では 16k プロンプトで TTFT が 1.4s → 0.8s に短縮。

```bash vllm serve <model> --enable-chunked-prefill --max-num-batched-tokens 8192 ```

Speculative Decoding

draft model(小さいモデル)が複数トークンを先読みし、target model がまとめて検証する。1.5-2x の高速化を達成しつつ、出力は target model と完全一致。組み合わせ例: Qwen3-72B (target) + Qwen3-7B (draft)。

```bash vllm serve Qwen/Qwen3-72B-Instruct \ --speculative-model Qwen/Qwen3-7B-Instruct \ --num-speculative-tokens 5 ```

FP8 KV キャッシュ

FP8 で KV を保持することでメモリ占有を半減、長コンテキスト時の同時接続数が 1.7-1.9 倍に。精度劣化は MMLU で 0.2 ポイント程度。

```bash vllm serve <model> --kv-cache-dtype fp8_e5m2 ```

Prefix Caching

同一 system prompt の大量並列リクエスト(典型例: エージェント)では prefix caching でプリフィル時間がほぼゼロ化する。社内 R&D では Slack BOT 用途で TTFT 0.7s → 0.1s に。

計測ハマりどころ

  • 単発リクエスト計測では並列度の効果が見えない → 必ず concurrent ベンチ
  • ベンチ前に warm-up 1 分間を入れる
  • 実 traffic シェイプを再現できる locust / k6 シナリオを作る

推奨デフォルト

社内 R&D で「大体うまくいく」設定:

```bash vllm serve <model> \ --tensor-parallel-size <n> \ --enable-chunked-prefill \ --enable-prefix-caching \ --kv-cache-dtype fp8_e5m2 \ --max-model-len 32768 \ --gpu-memory-utilization 0.9 ```

まとめ

vLLM 0.9 は「設定で 2-3 倍簡単に伸ばせる」状態に到達した。社内 R&D では既存の 0.6 系構成から上記設定に乗り換えただけで、同一 GPU で同時接続数が 2.4 倍、平均レイテンシが 35% 改善した。

まずは無料相談から

お客様のIT課題をお聞かせください。最適なソリューションをご提案いたします。

お問い合わせはこちら