blog.dopana

Back

TensorRT-LLM(TRT-LLM)は、NVIDIA GPU上でLLMとVisual Genモデルの推論を最適化するNVIDIAのオープンソースライブラリ。attention/GEMM/MoE用カスタムカーネル、prefill-decode分離や投機的デコードなどのアルゴリズム的ランタイム最適化を、使いやすいPython APIの背後に提供します。Apache 2.0ライセンス、~14.3k GitHubスター、2024年3月からGitHubで完全オープンソース化。現行はリリース1.3(Python 3.10–3.12、CUDA 13.2、PyTorch 2.11)。

何を解決するのか#

LLM推論はメモリ帯域幅(重み + KVキャッシュ)と計算量に制約されます。一般的なフレームワークはその性能をほとんど引き出せません:

ボトルネック素朴な方法TensorRT-LLM
attention汎用カーネルFlashAttention型融合、XQAカーネル(Llama-70Bで2.4x)
量子化FP16のみFP8、FP4、INT8、INT4(AWQ)
バッチ処理静的In-flight/continuous batching、ページ化KVキャッシュ
デコードgreedyのみ投機的デコード、MTP
MoE高密度フォールバックWide Expert Parallelism

アーキテクチャ#

C++のブラックボックスではなく、PyTorch上に構築:

  • 高レベルPython LLM API — モデル定義、エンジン構築、生成実行を数行で
  • attention、GEMM、MoE向けカスタムカーネル
  • 実行を調整するPython + C++ランタイム
  • モジュール式 — モデルはネイティブPyTorchで記述され、拡張が容易
  • 単一GPUからマルチGPU / マルチノード(TP、PP、CP、EP)までスケール

より広いエコシステムとも統合:NVIDIA Dynamo(データセンター規模の分散サーバー)とTriton Inference Server。

主要な最適化#

最適化効果
カスタム融合カーネルattention、GEMM、MoEルーティング
ページ化KVキャッシュ + prefix再利用メモリ浪費を削減、システムプロンプトを共有
In-flight batchingGPU利用率を向上
FP8 / FP4量子化DeepSeek-R1-FP4、約2倍のメモリ節約
投機的デコード(EAGLE型、N-gram、MTP)Llama 3.3 70B:3倍のスループット
Prell/Decode分離両フェーズを独立してスケール
Wide Expert Parallelism(EP)MoEを多数のGPUへスケール
Multiblock attention長文スループット3x以上(H200)
MultiShot / NVSwitchAllReduceを3倍高速化
CUDA Graphバッチングカーネル起動オーバーヘッドを低減
LoRA複数アダプターの同時提供

性能の実績#

  • Llama 4 — B200で40,000 token/s超
  • Llama 4 Maverickで1,000 token/s/ユーザー超(Blackwell)
  • H200 — Llama 2 13Bで約12,000 tok/s
  • DeepSeek-R1:Blackwellで世界記録の推論(FP4)
  • XQAカーネル:同じレイテンシ予算でLlama-70Bスループット2.4倍
  • Falcon-180B INT4 AWQをH200単体で実行

Visual Generation#

2025年4月からTRT-LLMはVisual Genもカバー — 画像・動画向け拡散モデル。NVIDIAはNVL72ラック(72 GPU)での動画生成スケーリングにTRT-LLMを使用。

サーバーとデプロイ#

trtllm-serve llama-3.1-8b-instruct-fp8 # OpenAI互換サーバー
bash
trtllm-bench latency --model <model-dir> # エンジンのベンチマーク
bash
  • 本番提供にはTriton Inference Serverバックエンド
  • NVIDIA Dynamo、NIMと連携
  • 新しいオープンウェイトモデルにDay-0対応(GPT-OSS、EXAONE 4.0、DeepSeek)

はじめに#

from tensorrt_llm import LLM, SamplingParams

llm = LLM(model="nvidia/Llama-3.1-8B-Instruct-FP8")

params = SamplingParams(max_tokens=128, temperature=0.8)
outputs = llm.generate(["TensorRT-LLMについて教えてください。"], params)

for out in outputs:
    print(out.outputs[0].text)
python
pip install tensorrt-llm
# またはプリビルドwheel入りのNGCコンテナを使用
bash

TRT-LLM vs vLLM#

項目TRT-LLMvLLM
ピークスループット2-3倍高い基準
コールドスタート約28分のエンジンコンパイル約60秒
ハードウェアNVIDIA CUDAのみマルチプラットフォーム(ROCm、XPU、TPU、CPU)
OpenAI APITritonバックエンド経由ネイティブ
量子化FP4/FP8/INT4FP8/FP4/INT4
PagedAttention部分的ネイティブ

2026年のコンセンサス:一般的なサーバーと移植性にはvLLM、NVIDIAハードウェアで絶対的なピーク性能を求め、コンパイル時間を許容できるならTRT-LLM。

注意点#

  • NVIDIA GPUのみ対応
  • エンジンのコンパイルは遅く(数分)、エンジンはGPUアーキテクチャ固有
  • テレメトリがデフォルトで有効 — TRTLLM_NO_USAGE_STATS=1または--no-telemetryでオプトアウト
  • APIに3ヶ月の非推奨ポリシー

まとめ#

TRT-LLMは、NVIDIAにおける最速のLLM・Visual Gen推論への道。実績は語ります:B200で40,000 tok/s超。代償はCUDAロックインとエンジンコンパイル時間。移植性よりNVIDIAハードウェアでのピーク性能を重視する場面で選ぶべきです。

参考資料#