vLLM(ブイエルエルエム)
UC Berkeley発の高スループットLLM推論フレームワーク。PagedAttentionによりGPU KVキャッシュを仮想メモリ方式で管理し、従来比最大24倍のスループットを実現する。OpenAI互換APIサーバーとして広く採用される。
vLLMとは
vLLM(Virtual LLM)は2023年6月にUC Berkeleyの研究チーム(Woosuk Kwon、Zhuohan Li ら)が発表した高スループットLLM推論フレームワークです。NeurIPS 2023に採択された論文「Efficient Memory Management for Large Language Model Serving with PagedAttention」で提案されたPagedAttentionアルゴリズムを核心技術として採用しています。
2026年5月現在、GitHubスター45,000超・PyPI月間ダウンロード400万件以上を記録しており、セルフホスト型LLM APIサーバーとして事実上の業界標準となっています。Meta・Microsoft・IBM等の大企業から個人開発者まで幅広く採用されています。
PagedAttentionの仕組み
LLM推論の最大ボトルネックはKVキャッシュ(Key-Value Cache)のメモリ管理です。従来の実装では各シーケンスに最大コンテキスト長分の連続メモリを事前確保するため、GPUメモリの60〜80%が断片化・未使用状態になっていました。PagedAttentionはOSの仮想メモリ管理からインスピレーションを得た革新的アプローチです。
- 物理ブロック(Physical Blocks): KVキャッシュを16トークン単位の固定サイズブロックに分割。RTX 4090の24GB VRAMを物理ブロックプールとして管理し必要時に動的割り当て
- 論理ブロック(Logical Blocks): 各シーケンスは論理ブロックの連続列として表現。物理的に連続でなくてもよいため断片化が解消される
- コピーオンライト(Copy-on-Write): Beam SearchやParallel Samplingで共通プレフィックスを持つシーケンスが物理ブロックを共有し、分岐時のみコピーが発生。メモリ使用量を大幅削減
この結果HuggingFace TransformersやDeepSpeedと比較して最大24倍のスループット向上が実証されています。
主な機能・スペック比較
| 機能 | 詳細 |
|---|---|
| 対応モデル | Llama 1/2/3/3.1/3.2/3.3、Mistral、Mixtral、Falcon、Qwen 2/2.5、Gemma 2/3、DeepSeek V2/V3/R1 など100+モデル |
| テンソル並列化 | 1〜8+ GPU(--tensor-parallel-size指定) |
| パイプライン並列化 | 複数ノード分散推論対応 |
| 量子化 | AWQ、GPTQ、INT4、INT8、FP8ネイティブ対応 |
| 推論方式 | Continuous Batching + PagedAttention |
| API互換性 | OpenAI Chat Completions / Completions API完全互換 |
| ストリーミング | SSE(Server-Sent Events)対応 |
| 最大コンテキスト | モデル依存(128K+対応) |
| ライセンス | Apache 2.0 |
ベンチマーク比較(Llama 3.1 8B、RTX 4090 24GB、バッチサイズ32)
| フレームワーク | スループット(req/s) | レイテンシ P50(ms) | VRAM効率 |
|---|---|---|---|
| vLLM 0.6.x | 25.4 | 142 | 92% |
| HuggingFace TGI 2.x | 18.2 | 195 | 71% |
| DeepSpeed-MII | 20.8 | 160 | 83% |
| llama.cpp server | 12.1 | 310 | 64% |
| Ollama | 9.8 | 380 | 61% |
インストール・クイックスタート
# PyPIからインストール(CUDA 12.1環境)
pip install vllm
# OpenAI互換APIサーバー起動
vllm serve meta-llama/Llama-3.1-8B-Instruct --host 0.0.0.0 --port 8000 --dtype bfloat16
# 2GPUテンソル並列化(70Bモデル向け)
vllm serve meta-llama/Llama-3.1-70B-Instruct --tensor-parallel-size 2 --gpu-memory-utilization 0.95
自作PCでの活用
RTX 4090(24GB)単体構成: Llama 3.1 8B(BF16、約16GB)が余裕で動作。スループット約25 req/s。vllm serveコマンド1行でOpenAI互換APIがlocalhostに起動し、既存のChatGPT APIコードをbase_urlのみ変更で転用可能。
RTX 4090x2台構成: --tensor-parallel-size 2でLlama 3.1 70B(BF16)をデプロイ可能。スループット約8 req/sで運用でき、GPT-4oに匹敵するプライベートAPIを構築できます。
RTX 4070 Ti(16GB)構成: Llama 3.1 8BをAWQ INT4量子化(約5GB VRAM)で動作させると約18 req/sのスループット。
競合フレームワークとの比較
| フレームワーク | 強み | 弱み | 適用場面 |
|---|---|---|---|
| vLLM | 汎用性・対応モデル数・コミュニティ | 構造化生成の速度 | 汎用プロダクション |
| SGLang | 構造化生成・JSON速度 | 対応モデル数 | Tool Use・Structured Output |
| TensorRT-LLM | 最高スループット | モデル依存・柔軟性低 | NVIDIA専用最高性能 |
| Ollama | 使いやすさ・Windows対応 | スループット低 | ローカル1ユーザー |
| llama.cpp | CPU・低VRAM動作 | GPU最適化不足 | エッジ・低スペック |
よくある質問(FAQ)
Q1: vLLMをWindowsで動かせますか? A: 公式サポートはLinuxのみ(CUDA 11.8+/12.1+)。WSL2経由でWindows上のNVIDIA GPUでも動作しますが、パフォーマンスはLinux native環境より5〜15%低下します。2026年時点でWindows native対応は未実装です。
Q2: OpenAI Pythonライブラリで使えますか? A: はい、openaiライブラリのbase_urlをhttp://localhost:8000/v1に変更するだけで動作します。チャット補完・ストリーミング・ツール呼び出しなど主要パラメータは完全互換です。
Q3: バッチサイズはどう設定しますか? A: Continuous Batching機能により手動バッチサイズ設定は不要です。--max-num-seqs(デフォルト256)で同時処理シーケンス数の上限を制御し、GPUメモリに応じて自動最適化されます。
まとめ
- UC Berkeley発オープンソースLLM推論フレームワーク(NeurIPS 2023)
- PagedAttentionにより最大24倍のスループット向上を実現
- Llama・Mistral・Qwen・DeepSeekなど100+モデルをサポート
- OpenAI互換APIサーバーとして1コマンドで起動可能
- RTX 4090単体〜マルチGPU構成まで対応するプロダクションLLMの標準基盤