第5部 どうやってモデルを動かすのか第9章

vLLM / SGLang / TensorRT-LLM / TGI

1,000人が同時に質問してきても、待たせずに答えたい。データセンターのサーバ向け推論エンジンは、そのための工夫のかたまりです。主役の vLLM・SGLang・TensorRT-LLM と、役目を終えた TGI、その上に載る NVIDIA Dynamo までを整理します。

約14分で読めます2026年10月改訂

このページの内容(11項目)
  1. サーバ向けエンジンが解いている問題
  2. 3つの基本技: 連続バッチ・PagedAttention・プレフィックスキャッシュ
  3. vLLM: サーバ向けの定番
  4. SGLang: エージェント時代の追い上げ役
  5. TensorRT-LLM: NVIDIA の純正チューン
  6. TGI: 役目を終えたパイオニア
  7. エンジンの上の層: NVIDIA Dynamo
  8. 比較と選び方
  9. 次に読む章
  10. さらに深く学ぶ
  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["各ユーザーへ
ストリーミング返信"]
図1: サーバ向けエンジンの基本の流れ

エージェント(第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
図2: プリフィルとデコードを別のGPU群に分ける「分離型サービング」の考え方

主な機能は、プリフィルとデコードを別々のGPU群に分けて増減させる分離型サービング、KVキャッシュの重なりを見てリクエストを振り分ける KV-aware ルーティング、KVキャッシュをGPUからCPU・SSDへ逃がす仕組みなどです。プリフィルは計算性能、デコードはメモリ帯域が効くという第6章の話が、そのまま設計に反映されています。

比較と選び方

名前開発元強み状況2026年10月時点
vLLMコミュニティ(PyTorch Foundation)対応範囲の広さ、情報の多さ活発。v0.32.0
SGLangLMSYS(ホスト)キャッシュ再利用、エージェント・強化学習活発。v0.5.22
TensorRT-LLMNVIDIANVIDIA GPU での最適化活発。安定版 1.2.1
TGIHugging Face(歴史的な定番)メンテナンスモード、アーカイブ済み

実際の選び方は、次の順で考えると迷いにくくなります。

  1. まず vLLM か SGLang で動かしてみる。どちらも OpenAI互換APIなので、アプリ側のコードはほぼ同じで済む
  2. 使うモデルとハードウェアで、両方のベンチマークを自分で取る。結果はモデルや設定でよく入れ替わる
  3. NVIDIA GPU を限界まで使い切りたいなら TensorRT-LLM も比較に入れる
  4. 複数台にまたがる規模になったら、Dynamo などのオーケストレーション層を検討する

よくある誤解

「最速のエンジン」が1つ決まっている

速さはモデル、GPU、同時接続数、入力の長さでよく入れ替わる。公開ベンチマークより、自分の条件での測定が大事

TGI はいまも Hugging Face おすすめのサーバ

TGI はメンテナンスモードで、リポジトリはアーカイブ済み。Hugging Face 自身が vLLM や SGLang を推奨している

Dynamo は vLLM のライバルのエンジン

Dynamo はエンジンの上に載るオーケストレーション層。中で vLLM・SGLang・TensorRT-LLM を動かす

確認クイズ

Q1. PagedAttention が主に解決したのはどんな問題?

  • モデルの重みが大きすぎること
  • KVキャッシュのメモリが無駄に使われること
  • トークナイザが遅いこと

KVキャッシュをページ単位で管理し、すき間なく詰めることで、同じGPUメモリでより多くのリクエストをさばけるようにしました。

Q2. 全員に同じ長いシステムプロンプトを付けるチャットサービス。どんな仕組みが特に効く?

プレフィックスキャッシュ(SGLang なら RadixAttention)です。共通の先頭部分のKVキャッシュを使い回せるので、毎回のプリフィル計算を省け、最初の1文字が出るまでの時間(TTFT)が縮みます。

Q3. 2026年10月時点で、新しくサーバを立てるときの選択として最も適切でないのは?

  • vLLM で始める
  • SGLang で始める
  • TGI で始める

TGI はメンテナンスモードに入り、リポジトリもアーカイブされています。新規なら vLLM や SGLang を選びましょう。

この章のまとめ

  • サーバ向けエンジンは、TTFT・トークン間隔・スループットのバランスを取りながら大勢をさばく
  • 連続バッチ処理、PagedAttention、プレフィックスキャッシュが共通の基本技
  • vLLM は対応範囲の広い定番、SGLang はキャッシュ再利用とエージェント・強化学習に強い
  • TensorRT-LLM は NVIDIA GPU 向けの純正チューン。TGI は引退
  • 大規模になると、Dynamo のようなオーケストレーション層がエンジンを束ねる

次に読む章

さらに深く学ぶ

この章の内容をもう一歩掘り下げるための原典です。

第9章の論文・資料をすべて見る →

出典・参考

  1. vllm-project/vllm(GitHub) — README(機能、対応モデル数、ハードウェア、インストール)(2026年10月確認)
  2. vLLM Docs, “vLLM V1” — V0 の完全廃止、V1 の設計(2026年10月確認)
  3. vLLM Docs, Quickstart — vllm serve、既定ポート 8000(2026年10月確認)
  4. vllm(PyPI)、sglang(PyPI)、tensorrt-llm(PyPI)、ai-dynamo(PyPI) — 各バージョンと公開日(2026年10月確認)
  5. PyTorch Foundation, “PyTorch Foundation Welcomes vLLM as a Hosted Project” — 2025年5月
  6. Kwon et al., “Efficient Memory Management for Large Language Model Serving with PagedAttention” (2023), arXiv:2309.06180
  7. sgl-project/sglang(GitHub) と SGLang Quickstart — 位置づけ、対応ハードウェア、sglang serve(2026年10月確認)
  8. Zheng et al., “SGLang: Efficient Execution of Structured Language Model Programs” (2023), arXiv:2312.07104 — RadixAttention
  9. NVIDIA/TensorRT-LLM(GitHub) と Quick Start Guide — PyTorch ベースの設計、trtllm-serve、リリース一覧(2026年10月確認)
  10. huggingface/text-generation-inference(GitHub) — メンテナンスモードの告知、2026年3月21日のアーカイブ、最終リリース v3.3.7(2026年10月確認)
  11. ai-dynamo/dynamo(GitHub) — Dynamo の位置づけと機能(2026年10月確認)