状態:ドラフト(2026-10-27)、一部実測。 機能リストとオプションは、vLLM 0.32.0の公式ドキュメント(リポジトリ
docs/)と、0.8.0から0.32.0までのリリースノートを2026-10-27に直接開いて確認しました。実測は0.31.0(2026-10-05リリース)の公式コンテナで行いました。0.32.0のイメージは新たにダウンロードする必要があったため使用せず、両バージョンのドキュメントで異なる点は記事ごとに記載しました。 2026-10-27追加。 承認を得てvLLM 0.32.0イメージとQwen3-0.6B・Qwen3-0.6B-GPTQ-Int8・Qwen3-4B-AWQ・Qwen3-VL-2B-Instructを取得し、再測定しました。3-1節に両バージョンの比較を、各項に「2026-10-27再測定」節を追加しました。0.31.0の数値は削除していません。 作成規則:実測データを基本とし、測定できなかったものは「未測定」、確認できなかったものは「未確認」と表示します。
目次
1. このシリーズが扱う内容
vLLMは言語モデルをサービングするエンジンです。PagedAttention(Kwon他、SOSP 2023)から始まりましたが、現在はスケジューラー、キャッシュ、デコーディング加速、出力強制、量子化、複数GPU、運用ツールまで非常に多くの機能を備えています。このサイトには、すでにvLLMを扱った記事が多数あります。
- 「LLM KVキャッシュ解剖」:KVキャッシュの原理、PagedAttention・連続バッチング・プレフィックスキャッシュ、LMCache、NVIDIA Dynamo
- 「トス ML/AI Infraの準備」:vLLMの内部構造(全4回)、SGLangとの比較(第5回)、1.7Bモデル負荷試験(第14回)、LoRA(第15回)、Dynamo実践(第24回)、OpenTelemetry(第25回)
このシリーズは、それらの記事が扱っていない機能を補完することに注力します。重複する機能は簡潔にまとめ、過去の記事へとつなげます。
| 編 | 扱う機能 | 実測 |
|---|---|---|
| 1 | 機能マップ、バージョン別の変更 | 要約 |
| 2 | 連続バッチング、chunked prefill、プレフィックスキャッシュ、cache_salt | 繰り返し測定、機能をオフにしたベースライン |
| 3 | 推論デコーディング(n-gram、EAGLE、MTP、suffix) | n-gramの2つの実装、提案長、同時実行数 |
| 4 | 構造化出力(xgrammar、guidance) | 正確性、初回リクエストのコスト、トークンあたりのコスト |
| 5 | ツール呼び出し(パーサー、tool_choice、strict) | スキーマ準拠率 |
| 6 | 量子化(FP8、AWQ、GPTQ、KV FP8) | オンラインFP8、パープレキシティ |
| 7 | KVオフロードと分散サービング | CPUオフロード |
| 8 | スリープモード、起動時間、/metrics、認証 | スリープ、コンパイルキャッシュ、パス別認証 |
| 9 | 並列化、マルチモーダル、プーリング、LoRA | 埋め込み・再ランクのみ |
2. 機能マップ
「節約するもの」はその機能が削減するコスト、「メリット条件」は実測やドキュメントで効果が出た条件です。
| 機能 | 原理(論文) | 有効にするオプション(0.31・0.32) | デフォルト | 節約するもの | メリット条件 | メリットのない条件 |
|---|---|---|---|---|---|---|
| PagedAttention | KVをブロックに分割(Kwon他、SOSP 2023) | 常時 | 有効 | KVメモリの無駄 | リクエスト長がバラバラなとき | 該当なし |
| 連続バッチング | ステップ単位のスケジュール(Yu他、OSDI 2022) | --max-num-seqs |
256 | 空のバッチスロット | 同時リクエストが多いとき | リクエストが1つだけのとき |
| chunked prefill | プリフィルを分割してデコードと混在(Sarathi) | --max-num-batched-tokens |
有効、2,048(70GB未満のGPUサーバー) | デコードの停止時間 | 長い入力とデコードが混在するとき | 短い入力のみが来るとき |
| プレフィックスキャッシュ | ブロックハッシュによるKVの再利用 | --enable-prefix-caching |
有効 | プリフィル計算 | 共通の先頭部分が長く、頻繁に来るとき | 先頭部分が毎回異なるとき |
| cache_salt | 最初のブロックハッシュにソルトを追加 | リクエストの cache_salt |
なし | テナント間のタイミング漏洩 | 複数顧客が1つのエンジンを使用するとき | 単一ユーザー |
| 推論デコーディング | ドラフトをまとめて検証(Leviathan他、ICML 2023) | --speculative-config |
無効 | デコードステップ数 | 同時性が低く出力が予測可能なとき | 高い同時性、ランダムな出力 |
| 構造化出力 | トークンマスク(XGrammar、MLSys 2025) | response_format, structured_outputs |
auto | 形式エラー | 機械が読み取る出力 | 自由な文章 |
| ツール呼び出し | パーサー + 構造タグ | --enable-auto-tool-choice --tool-call-parser |
無効 | 呼び出しパースエラー | エージェント | ツールを理解していないモデル |
| 重み量子化 | FP8、AWQ、GPTQ | --quantization |
なし | 重みメモリ・読み込み | 同時性が低いとき、大規模モデル | 大規模バッチ |
| KV量子化 | KV FP8 | --kv-cache-dtype fp8 |
auto(モデルの精度) | KVメモリ | KVが不足しているとき | KVに余裕があるとき |
| マルチLoRA | アダプターのバッチ計算(Punica、S-LoRA) | --enable-lora --max-loras |
無効 | モデルの数 | アダプターが複数あるとき | アダプターが1つのとき |
| KVオフロード | KVコネクター、CPUレイヤー | --kv-offloading-size |
無効 | 押し出されたプレフィックスの再計算 | GPUのKVが不足し、再利用があるとき | 再利用がないとき |
| 分散サービング | プリフィル・デコードの分離(DistServe、OSDI 2024) | --kv-transfer-config(NIXLなど) |
無効 | 末尾のITL | 高速なGPU間接続 | 低速な接続、スループット目標 |
| 並列化 TP・PP・DP・EP | Megatron-LMなど | --tensor-parallel-size など |
1 | GPU1枚の限界 | モデルが収まらないとき | モデルが収まるとき |
| スリープモード | CuMemアロケーター | --enable-sleep-mode + 開発モード |
無効 | 再起動時間 | GPUを交互に使用するとき | 常時サービング |
| マルチモーダル・プーリング | エンコーダー、LAST/CLSプーリング | モデルに依存、 --runner pooling |
モデルに依存 | 個別サーバー | 同一エンジンで統一 | 特化型エンジンのほうが早いとき |
OpenAI互換API(/v1/completions, /v1/chat/completions, /v1/embeddings, /v1/responses など)と /metrics は機能というよりこれらすべての入口であるため、表から除外しました。本シリーズのすべての測定はこのAPIで行い、指標は第8回にまとめています。
機能同士を同時に使用できない場合もあります。0.32.0のドキュメントの互換性表によると、推論デコーディングはLoRA、プーリング、プロンプト埋め込み入力と同時に使用できません(❌)。実測中も、0.31.0はn-gram推論デコーディングを有効にすると、「非同期スケジュールを無効にする」、「Model Runner V2がまだngramをサポートしていないためV1実行器に戻る」という警告を出しました。
3. 実測値の要約
すべて8GBクラスのノートPC用GPU(Ada世代)1枚、vLLM 0.31.0、Qwen3-Reranker-0.6B(bf16、再ランク用にファインチューニングされた0.6B因果言語モデル)、コンテナメモリ制限4GiBまたは4.5GiBの環境で測定しました。同じ条件を3〜4回繰り返して中央値を使用し、サーバー起動後の最初のバッチはウォームアップとして除外しました。
| 機能 | 条件 | 結果(中央値) |
|---|---|---|
| 連続バッチング | 同時16、入力256・出力128 | 単発 174.6 tok/s → デフォルト 1,683.1 tok/s(9.6倍) |
| chunked prefill | デコード中の3,700トークン入力 | デコード最大停止 512トークンチャンク 35.6ms、デフォルト 109.8ms、チャンク無効 197.6ms |
| プレフィックスキャッシュ | 3,200トークン共通 | 1つ目のトークン 174.7ms → 18.9ms、無効時 173.8ms |
| cache_salt | 同じプレフィックス、異なるソルト | 異なるソルトはキャッシュ0トークン、173.7ms |
| n-gram推論デコーディング | 同時1、文章コピー | 176.4 → 704.1 tok/s(提案4個、4.0倍)、提案8個 1,117.0 tok/s(6.3倍)、受容率96%以上 |
| n-gram推論デコーディング | 同時1、ランダム出力 | プロンプトセットの中で受容率が低い1つは10%低下(171.4 → 153.6 tok/s)。同時32ではスループット14%減少 |
| 構造化出力 | JSONスキーマ、同時16 | 正しいJSON 46/48(不正な2個は長さ超過)、なしの場合は0/48。初回リクエスト 446ms(xgrammar) |
| ツール呼び出し | required、strictなし/あり | スキーマ準拠 0/5 → 5/5、値は不正確 |
| FP8オンライン量子化 | 同時 1/16/64 | スループット 1.36/1.24/1.08倍、重み 1.12 → 0.71GiB |
| KV CPUオフロード | 追い出された1,600トークンのプレフィックス | 再計算 77.3ms → CPUで35.1ms(GPUヒット 14.0ms) |
| スリープモード | 段階2、段階1 | 段階2:GPU 6,168 → 606MiB、復帰 0.39秒(再起動 32秒)、出力同一。段階1:コンテナOOM 2回 |
| 起動時間 | 同一設定での再起動 | 65秒 → 32秒(コンパイルキャッシュ) |
| 認証 | --api-key |
/v1/* 401, /invocations 200(生成実行) |
| 埋め込み・再ランク | 64文、32ドキュメント | 371.8ms、33.9ms |
測定できなかったのは、テンソル・パイプライン・データ・エキスパート並列(GPU1枚のため)、分散サービング(同上の理由)、EAGLE・MTP・suffix推論デコーディングです。EAGLEはドラフトの重み(pickle形式かつ独自ライセンス)、suffixは追加パッケージが必要なため取得を見送りました。初期バージョンで未測定だったマルチモーダル入力とAWQ・GPTQは、3-1節の再測定で測定しました。
3-1. 2026-10-27再測定:0.32.0と対話モデル
| 機能 | 2026-10-27 0.31.0測定(再ランク 0.6B) | 0.32.0再測定 |
|---|---|---|
| 連続バッチング・チャンク・プレフィックスキャッシュ | 9.6倍、109.8ms、174.7 → 18.9ms | 同一モデルで1.5%以内で同等(1,683.6 tok/s、108.2ms、175.2 → 18.9ms) |
認証(/invocations) |
キーなしで200 | キーなしで200(そのまま) |
| スリープ 段階2・段階1 | 復帰 0.39秒、段階1でコンテナOOM | 復帰 0.41秒、段階1で再びOOM |
| n-gram推論デコーディング | コピー 4.0倍、貪欲出力 10/12一致、KV 23%減少 | Qwen3-0.6B:コピー 3.7倍、コード返却 3.1倍、 説明 0.97倍(受容 3%)、貪欲出力 12/12一致、KV 2%減少(V2実行器) |
| 構造化出力 | 強制なしの場合、正しいJSON 0/48 | Qwen3-0.6B:強制なしでも値は18/18一致したが、コードブロックのためそのままでは読めず 0/18、強制すると18/18 |
| ツール呼び出し | strictなしの場合、スキーマ準拠 0/5 | Qwen3-0.6B・GPTQ・4B AWQ:autoを含め36/36すべて一致する都市・単位 |
| 量子化 | FP8 1.36倍 | Qwen3-0.6B: FP8 1.37倍、GPTQ 8bit 1.40倍(パープレキシティ -1.4%·+1.6%)。4B AWQ は 8GB で秒間 80 トークン |
| マルチモーダル | 未計測 | VL-2B デフォルト設定は KV -0.07GiB で起動失敗、サイズヒントで KV 2.13GiB。896px 画像 808トークン·初トークン 238ms、同じ画像を再度 32.7ms。デフォルト設定は内部アドレスを実際に取得する |
この計測の限界
- 最初の計測のモデルは対話ができません。 新たにダウンロードせず、すでにある重みだけを使うことにしたため、最初は生成モデルとして Qwen3-Reranker-0.6B を使用しました(3-1節の再計測は対話用の Qwen3-0.6B)。再ランク(「yes/no」判定)用に微調整されたモデルであるため、チャットで尋ねるとほぼ「No.」と答え、長く書かせると同じ言葉を繰り返す傾向が強いです。スループット·遅延·メモリのように内容に関係のない計測には問題ありませんが、ツール呼び出しや構造化出力の「内容」、推測デコーディングの受容率は一般的な対話モデルとは異なる可能性があります。各記事にこの点を記載しています。
- 小さなモデル、小さな GPU です。 0.6B モデルはステップ時間において固定費(カーネル実行、スケジュール)が占める割合が大きく、大きなモデルでは比率が変わります。
4. バージョンごとに変わったこと
vLLM はおおよそ2週間ごとにリリースされます。以前の記事を読んだり、古い設定を移行する際に役立つ変化だけをピックアップしました(リリースノートで確認)。
| バージョン | 変更点 |
|---|---|
| 0.8.0 | V1 エンジンがデフォルトに |
| 0.10.0 | V0 エンジンコードの整理を開始(V0 の推測デコーディングワーカーなどを削除) |
| 0.11.0 | V0 エンジン完全削除。CPU KV オフロード(LRU)導入。プレフィックスキャッシュハッシュのデフォルトが sha256(ドキュメント基準) |
| 0.12.0 | guided_json など guided_* リクエストフィールド削除、 structured_outputs に統一 |
| 0.14.0 | 非同期スケジュール(エンジンのスケジュールと GPU 実行をオーバーラップ)がデフォルト |
| 0.19.0 | 汎用 CPU KV オフロード(ポリシー置換可能) |
| 0.21.0 | xgrammar 構造タグによる strict ツール呼び出し |
| 0.28.0 | 大きな GPU の max_num_batched_tokens デフォルト 8,192 → 16,384 |
| 0.29.0 | Model Runner V2 がすべてのモデルのデフォルト |
| 0.31.0 | オンライン量子化 --quantization fp8 が fp8_per_tensor に移行(実測で警告を確認) |
| 0.32.0 | max_tokens をコンテキストから事前に除外しない(長いプロンプトが拒否されなくなる)。デフォルトの CORS が「許可なし」。カスケードアテンション削除。Python 3.10 サポート終了。64段階を超えてネストされた JSON スキーマを拒否。MRV2 に GPU n-gram 提案器 |
V0 から V1 に移行する過程で消えた機能もあります。0.32.0 の V1 ガイドは best_of、リクエストごとのロジットプロセッサ、GPU↔CPU KV 交換(プリエンプション時のスワップ)、リクエストごとの構造化出力バックエンドを「削除済み」と記載しています。V1 のプリエンプションはスワップではなく再計算(RECOMPUTE)がデフォルトです。
5. どこから見るべきか
- スループットが足りない場合:第2部(バッチ処理とチャンク)、第6部(量子化)、第7部(オフロード)
- 1人あたりの応答速度が重要な場合:第3部(推測デコーディング)、第6部(量子化)
- エージェントを作る場合:第4部(構造化出力)、第5部(ツール呼び出し)
- サーバーを運用する場合:第8部(スリープ、起動、メトリクス、認証)
- モデルが GPU に収まらない場合:第9部(並列化)、第6部(量子化)
参考
- vLLM ドキュメント(0.32.0):https://docs.vllm.ai/en/latest/ 、リポジトリの
docs/features/,docs/configuration/,docs/usage/ - vLLM リリースノート 0.8.0~0.32.0:https://github.com/vllm-project/vllm/releases
- Kwon 他、「Efficient Memory Management for Large Language Model Serving with PagedAttention」、SOSP 2023. https://arxiv.org/abs/2309.06180
- Yu 他、「Orca: A Distributed Serving System for Transformer-Based Generative Models」、OSDI 2022.
- Leviathan 他、「Fast Inference from Transformers via Speculative Decoding」、ICML 2023. https://arxiv.org/abs/2211.17192
- Dong 他、「XGrammar」、MLSys 2025. https://arxiv.org/abs/2411.15100
- Zhong 他、「DistServe」、OSDI 2024. https://arxiv.org/abs/2401.09670
- これまでのシリーズ:LLM KV キャッシュ解剖、トス ML/AI Infra 準備