
vLLM / SGLang / TensorRT-LLM / TGI
1,000人が同時に質問してきても、待たせずに答えたい。データセンターのサーバ向け推論エンジンは、そのための工夫のかたまりです。主役の vLLM・SGLang・TensorRT-LLM と、役目を終えた TGI、その上に載る NVIDIA Dynamo までを整理します。
このページの内容(11項目)
お昼どきのラーメン屋に、100人の行列ができたら?
1杯ずつ作って出していたら、最後の人は何時間も待つことになります。うまい店は、麺を何人分もまとめて茹で、空いた席にすぐ次の人を通し、スープは仕込んでおいたものを使い回します。
ChatGPT のようなサービスの裏側でも、同じことが起きています。大勢のリクエストをどう束ね、どう待たせずに返すか。その工夫を詰め込んだのが、vLLM や SGLang といったサーバ向け推論エンジンです。
サーバ向けエンジンが解いている問題
ひとことで言うと
サーバ向け推論エンジンは、限られたGPUで、できるだけ多くの人に、できるだけ待たせずにトークンを返すためのソフトウェアです。
ローカルで1人が使うときは「自分の返事が速いか」だけを気にすれば十分でした(第6章)。サーバでは、見るべき数字が増えます。
| 指標 | 意味 | ラーメン屋で言うと |
|---|---|---|
| TTFT | 最初のトークンが返るまでの時間 | 席に着いてから1杯目が出るまで |
| ITL・TPOT | トークンとトークンの間隔 | 替え玉が出てくる間隔 |
| スループット | GPU全体で1秒あたりに作るトークン数 | 1時間に出せる杯数 |
| 同時接続数 | 同時にさばける会話の数 | 席の数 |
やっかいなのは、これらが引っ張り合うことです。たくさんまとめて計算すればスループットは上がりますが、1人あたりの待ち時間は延びがちです。どこで折り合いをつけるかが、運用の腕の見せどころになります。
3つの基本技: 連続バッチ・PagedAttention・プレフィックスキャッシュ
どのサーバ向けエンジンにも、ほぼ共通して入っている技があります。くわしくは第15章で扱うので、ここでは要点だけ押さえます。
連続バッチ処理 continuous batching
複数のリクエストをまとめて計算し、返事を書き終えた人はすぐ抜け、新しく来た人はすぐ加わる方式。全員が終わるのを待たずに席を回すので、GPUが遊びにくくなります。
PagedAttention ページドアテンション
KVキャッシュを小さな「ページ」に分けて、空いている場所に詰めて置く方式。OSの仮想メモリの考え方をKVキャッシュに持ち込み、メモリの無駄を大きく減らしました。2023年に vLLM の論文で提案されています。
プレフィックスキャッシュ prefix caching
共通のシステムプロンプトや、続いている会話の前半など、同じ「先頭部分」のKVキャッシュを使い回す仕組み。プリフィルの計算を省けるので、TTFTが縮みます。
flowchart TD R["次々に届くリクエスト"] --> S["スケジューラ
連続バッチ処理"] S --> P["先頭が同じなら
キャッシュを再利用"] P --> G["GPUでまとめて計算"] G --> K["KVキャッシュ
ページ単位で管理"] K --> G G --> O["各ユーザーへ
ストリーミング返信"]
エージェント(第20章)やコーディング支援のように、同じ長い文脈を何度も送り直す使い方が増えたことで、プレフィックスキャッシュの重要性はますます高まっています。
vLLM: サーバ向けの定番
vLLM は、カリフォルニア大学バークレー校の Sky Computing Lab で生まれたオープンソースの推論・サービングエンジンです。PagedAttention を武器に2023年に登場し、いまでは2,000人を超える貢献者がいる大きなプロジェクトになりました。2025年5月には PyTorch Foundation のホストプロジェクトになっています。
# インストール(README では uv を推奨)
uv pip install vllm
# Hugging Face のモデルIDを指定して、OpenAI互換サーバを起動
vllm serve Qwen/Qwen2.5-1.5B-Instruct
# → 既定では http://localhost:8000/v1
最新版は 2026年10月18日の v0.32.0 で、ほぼ2週間おきに新しい版が出ています2026年10月時点。中身は2025年に作り直された V1エンジンに一本化され、古いV0エンジンは完全に廃止されました。V1では、チャンク化プリフィルなどの最適化が既定で有効になっています。
- 対応モデル: Hugging Face 上の200以上のアーキテクチャ(MoE、ハイブリッド型、マルチモーダル、埋め込みモデルなど)
- 量子化: FP8、MXFP4、NVFP4、INT4、GPTQ/AWQ、GGUF など
- 分散: テンソル並列、パイプライン並列、エキスパート並列など
- API: OpenAI互換に加え、Anthropic Messages API と gRPC
- ハードウェア: NVIDIA・AMD・Intel の GPU、CPU のほか、TPU や Ascend、Apple シリコンなどはプラグインで対応
迷ったらまず vLLM、と言われるのは、この「対応範囲の広さ」と「情報の多さ」のためです。
SGLang: エージェント時代の追い上げ役
SGLang は、非営利団体 LMSYS がホストするオープンソースの推論フレームワークです(Apache 2.0)。2023年12月の論文で、KVキャッシュを木構造で管理して使い回す RadixAttention を提案しました。共通の先頭を持つリクエストが多いほど、計算を大きく省けます。
RadixAttention は「分かれ道のある道路地図」です。「東京駅から」で始まる道案内を何本も覚えるとき、共通の区間は1本だけ覚え、途中から枝分かれさせる。同じシステムプロンプトや会話の履歴を共有するリクエストで、プリフィルのやり直しを避けられます。
# インストールと起動(公式 Quickstart より)
uv pip install --prerelease=allow sglang
sglang serve Qwen/Qwen3-0.6B --host 0.0.0.0 --port 30000
README は SGLang を「エージェント的なワークロード、大規模サービング、強化学習のロールアウトに最適化」と紹介しています。強化学習で大量の文章を生成させる用途では、verl や slime など多くの学習フレームワークが SGLang を組み込んでいます。最新版は 2026年10月16日の v0.5.22 です2026年10月時点。
対応ハードウェアも広く、NVIDIA・AMD の GPU、Google TPU、Intel、Huawei Ascend、Apple シリコンなどが README に並んでいます。OpenAI互換・Anthropic互換のAPIに加え、プリフィルとデコードを別のGPUに分ける構成(PD分離)や、KVキャッシュをCPUメモリやストレージに階層的に置く HiCache も用意されています。
TensorRT-LLM: NVIDIA の純正チューン
TensorRT-LLM は、NVIDIA が開発するオープンソース(Apache 2.0)の推論ライブラリです。NVIDIA の GPU 専用ですが、そのぶん Blackwell 世代などの最新GPU向けに作り込まれたカーネルや、FP8・NVFP4 といった低精度フォーマットを使い切れるのが持ち味です。
かつては「モデルをあらかじめ TensorRT のエンジンにビルドする」手間がかかることで知られていました。いまは PyTorch を土台にした設計に変わり、Hugging Face のモデルIDを渡すだけでサーバを起動できます。
# NGCの公式コンテナ内で、OpenAI互換サーバを起動(Quick Start Guide より)
trtllm-serve "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
PyPI 上の最新の安定版は 2026年4月の 1.2.1 で、開発版は 1.4.0rc1(2026年10月21日)まで進んでいます2026年10月時点。NVIDIA の Dynamo や Triton Inference Server とも連携できるように作られています。
TGI: 役目を終えたパイオニア
TGI(Text Generation Inference)は、Hugging Face が自社の Hugging Chat や Inference Endpoints のために作ったサーバです。連続バッチ処理やトークンのストリーミングを早くから実用化し、一時期はvLLMと並ぶ定番でした。
注意: TGI は新規採用を避けましょう
TGI はメンテナンスモードに入り、GitHub リポジトリは 2026年3月21日にアーカイブ(読み取り専用)されました。最後のリリースは v3.3.7 です。README では、今後は vLLM や SGLang、ローカルなら llama.cpp や MLX を使うよう案内されています2026年10月時点。
TGI の README は、自分たちが「推論エンジンが transformers のモデル定義に頼る流れ」を作り、それが後続のエンジンに受け継がれた、と振り返っています。ツールが引退しても、その考え方は vLLM や SGLang の中に生きているわけです。
エンジンの上の層: NVIDIA Dynamo
モデルが巨大になり、1台のGPUサーバでは足りなくなると、「何十台ものサーバにどうリクエストを配るか」が問題になります。そこで登場したのが、エンジンの上に載るオーケストレーション層です。
NVIDIA Dynamo は、README で自らを「推論エンジンを置き換えるのではなく、SGLang・TensorRT-LLM・vLLM を協調するマルチノードの推論システムに変える層」と説明しています。最新版は 2026年10月22日の 1.6.0 です2026年10月時点。
flowchart TD U["大量のリクエスト"] --> D["Dynamo
ルーティングと自動スケール"] D --> P["プリフィル用GPU群
入力を読む"] P --> X["KVキャッシュを転送"] X --> C["デコード用GPU群
返事を書く"] P -.-> E["中身は vLLM・SGLang・
TensorRT-LLM"] C -.-> E
主な機能は、プリフィルとデコードを別々のGPU群に分けて増減させる分離型サービング、KVキャッシュの重なりを見てリクエストを振り分ける KV-aware ルーティング、KVキャッシュをGPUからCPU・SSDへ逃がす仕組みなどです。プリフィルは計算性能、デコードはメモリ帯域が効くという第6章の話が、そのまま設計に反映されています。
比較と選び方
| 名前 | 開発元 | 強み | 状況2026年10月時点 |
|---|---|---|---|
| vLLM | コミュニティ(PyTorch Foundation) | 対応範囲の広さ、情報の多さ | 活発。v0.32.0 |
| SGLang | LMSYS(ホスト) | キャッシュ再利用、エージェント・強化学習 | 活発。v0.5.22 |
| TensorRT-LLM | NVIDIA | NVIDIA GPU での最適化 | 活発。安定版 1.2.1 |
| TGI | Hugging Face | (歴史的な定番) | メンテナンスモード、アーカイブ済み |
実際の選び方は、次の順で考えると迷いにくくなります。
- まず vLLM か SGLang で動かしてみる。どちらも OpenAI互換APIなので、アプリ側のコードはほぼ同じで済む
- 使うモデルとハードウェアで、両方のベンチマークを自分で取る。結果はモデルや設定でよく入れ替わる
- NVIDIA GPU を限界まで使い切りたいなら TensorRT-LLM も比較に入れる
- 複数台にまたがる規模になったら、Dynamo などのオーケストレーション層を検討する
よくある誤解
「最速のエンジン」が1つ決まっている
速さはモデル、GPU、同時接続数、入力の長さでよく入れ替わる。公開ベンチマークより、自分の条件での測定が大事
TGI はいまも Hugging Face おすすめのサーバ
TGI はメンテナンスモードで、リポジトリはアーカイブ済み。Hugging Face 自身が vLLM や SGLang を推奨している
Dynamo は vLLM のライバルのエンジン
Dynamo はエンジンの上に載るオーケストレーション層。中で vLLM・SGLang・TensorRT-LLM を動かす
確認クイズ
Q2. 全員に同じ長いシステムプロンプトを付けるチャットサービス。どんな仕組みが特に効く?
プレフィックスキャッシュ(SGLang なら RadixAttention)です。共通の先頭部分のKVキャッシュを使い回せるので、毎回のプリフィル計算を省け、最初の1文字が出るまでの時間(TTFT)が縮みます。
この章のまとめ
- サーバ向けエンジンは、TTFT・トークン間隔・スループットのバランスを取りながら大勢をさばく
- 連続バッチ処理、PagedAttention、プレフィックスキャッシュが共通の基本技
- vLLM は対応範囲の広い定番、SGLang はキャッシュ再利用とエージェント・強化学習に強い
- TensorRT-LLM は NVIDIA GPU 向けの純正チューン。TGI は引退
- 大規模になると、Dynamo のようなオーケストレーション層がエンジンを束ねる
次に読む章
さらに深く学ぶ
この章の内容をもう一歩掘り下げるための原典です。
- Efficient Memory Management for Large Language Model Serving with PagedAttentionvLLMの論文。KVキャッシュをOSのページのように小さなブロックで管理し、メモリの無駄をほぼなくしてスループットを大きく上げました。
- DistServe: Disaggregating Prefill and Decoding for Goodput-optimized Large Language Model Serving性質の違うプリフィルとデコードを別のGPUに分ける「分離型」推論を提案した論文。NVIDIA Dynamoなどの設計の背景です。
- SGLang: Efficient Execution of Structured Language Model ProgramsSGLangの論文。RadixAttentionでプレフィックスのKVキャッシュを木構造で共有し、複雑な呼び出しを効率よく実行します。
出典・参考
- vllm-project/vllm(GitHub) — README(機能、対応モデル数、ハードウェア、インストール)(2026年10月確認)
- vLLM Docs, “vLLM V1” — V0 の完全廃止、V1 の設計(2026年10月確認)
- vLLM Docs, Quickstart —
vllm serve、既定ポート 8000(2026年10月確認) - vllm(PyPI)、sglang(PyPI)、tensorrt-llm(PyPI)、ai-dynamo(PyPI) — 各バージョンと公開日(2026年10月確認)
- PyTorch Foundation, “PyTorch Foundation Welcomes vLLM as a Hosted Project” — 2025年5月
- Kwon et al., “Efficient Memory Management for Large Language Model Serving with PagedAttention” (2023), arXiv:2309.06180
- sgl-project/sglang(GitHub) と SGLang Quickstart — 位置づけ、対応ハードウェア、
sglang serve(2026年10月確認) - Zheng et al., “SGLang: Efficient Execution of Structured Language Model Programs” (2023), arXiv:2312.07104 — RadixAttention
- NVIDIA/TensorRT-LLM(GitHub) と Quick Start Guide — PyTorch ベースの設計、
trtllm-serve、リリース一覧(2026年10月確認) - huggingface/text-generation-inference(GitHub) — メンテナンスモードの告知、2026年3月21日のアーカイブ、最終リリース v3.3.7(2026年10月確認)
- ai-dynamo/dynamo(GitHub) — Dynamo の位置づけと機能(2026年10月確認)