vLLM Model Runner V2 リリースノート / 新機能
vLLM は Model Runner V2(MRV2)を発表しました。これは vLLM のモデルランナーをゼロから再実装したもので、実行効率の向上と技術的負債の削減を目的としています。MRV2 はモジュラーで GPU ネイティブ、かつ非同期優先のコアを導入し、既存のユーザー向け API を変更せずにパフォーマンスを改善します。
GPU ネイティブな入力準備と永続バッチング
MRV2 は永続的なリクエスト状態をステップごとの入力テンソルから切り離し、入力準備を Triton カーネルを用いて直接 GPU 上で行うことでスループットを向上させます。
vLLM V1 ではリクエストの順序がブロックテーブルのレイアウトに密接に結びついており、リクエストの追加・削除時に複雑な並べ替えが必要でした。MRV2 はこれを、各ライブリクエストがライフタイム全体で固定行を占める安定したステートテーブルに置き換えます。ランナーは gather 操作を用いて各ステップで正しい順序の入力ブロックテーブルを生成します。この設計により CachedRequestState のような冗長なバックアップ状態が不要になり、状態管理がシンプルになります。
input_ids、positions、query_start_loc、seq_lens などのテンソル構築を GPU に移すことで、MRV2 は次を実現します:
- CPU オーバーヘッドの削減: Python および CPU 側のテンソル操作を最小化。
- コードの簡素化: CPU 側操作が課す制約を排除。
- 互換性の向上: GPU に常駐した準備がデバイス側の結果を同期なしで消費できるようになり、非同期および投機的デコードが改善されます。
非同期優先アーキテクチャ
MRV2 は、サポートされるすべてのモデルと機能に対して CPU と GPU の間にゼロ同期を前提としています。この非同期優先設計により、スケジューラとワーカーは GPU がステップ N を実行している間にステップ N+1 の準備を行えるため、GPU の利用率が最大化されます。
このアーキテクチャは、従来の非同期スケジューリングと投機的デコードの組み合わせにおける課題を解決します。入力準備がデバイス上で行われるため、準備カーネルは GPU が生成したリジェクションサンプリング結果を直接消費できます。出力は別の CUDA ストリームを介して非同期に CPU に転送され、メイン計算ストリームとホスト側処理が完全に分離されます。
Triton ネイティブなサンプリング改善
サンプリングは最適化された Triton カーネルを用いて再設計され、メモリ効率と数値制御が向上しました:
- Gumbel-Max サンプリング: 明示的な softmax の実体化を回避し、ステートレスなカーネル内 RNG を利用。
- Top-k logprobs: まず top‑k ロジットを特定し、選択された候補に対してのみ logprob を計算することで効率化。
- Prompt logprobs: 単一プロンプト内でもより細かいチャンク化を行い、メモリ使用量を削減。
- 投機的デコード: カーネル内部で
idx_mappingの間接参照を使用することで、すべてのロジットベクトルに合わせてリクエスト状態を拡張する必要がなくなり、互換性が向上。
ModelState によるモジュール化
多様なモデルアーキテクチャをサポートしつつ共有実行パスを汚染しないよう、MRV2 は ModelState 抽象を導入しました。このインターフェースはマルチモーダル埋め込み、アテンションメタデータ、CUDA グラフキャプチャなど、モデル固有のロジックを定義し、メインランナーは共通の実行パスに集中できます。
このモジュール化によりコードの複雑さが大幅に削減されました。元々 6,700 行を超えていた gpu_model_runner.py は、現在は 1,300 行未満の複数ファイルに分割されています。
パフォーマンスベンチマーク
MRV2 は、特にホスト側オーバーヘッドがボトルネックになるシナリオで測定可能な性能向上を示します:
- スループット:
Qwen3-0.6Bを単一GB200GPU でテストした場合、MRV2 は 25K 出力トークン/秒を達成し、MRV1 の 16K と比較して 56.2% のスループット増加 を示しました。 - レイテンシ:
GLM-4.7-FP8をMTP=1で4xGB200GPU 上で実行した際、投機的デコード中の CPU‑GPU 同期ポイントが排除された結果、平均 Time Per Output Token (TPOT) が 6.3% 減少 しました。
現在のステータスと制限事項
v0.18.0 時点で MRV2 は実験的段階にあり、機能は完全ではありません。現在 サポートされていない 機能は以下の通りです:
- 線形アテンションモデル(例: Qwen3.5、Nemotron 3 Super)
- Eagle、Eagle3、MTP 以外の投機的デコード手法
- Logits processors、LoRA、EPLB、DBO
MRV2 を有効にするには環境変数 export VLLM_USE_V2_MODEL_RUNNER=1 を設定してください。