tensorrt-llm について
tensorrt-llmは、NVIDIA GPU上のLLM推論を最適化するオープンソースライブラリです。モデルをデプロイ、サービングするチーム向けに、量子化や動的バッチ処理、マルチGPU対応を備えています。
主な機能
- 01NVIDIA GPU推論の最適化
- 02動的バッチ処理とKVキャッシュ
- 03FP8、INT4、FP4量子化
- 04テンソル・パイプライン・エキスパート並列化
- 05投機的デコードとLoRAサービング
活用シーン
- 01NVIDIA GPUでのLLMデプロイ
- 02量子化による推論負荷の軽減
- 03GPUまたはノード間でのスケーリング
- 04trtllm-serveによるモデル提供
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill tensorrt-llmインストール後、Claude Code で/tensorrt-llmを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/multi-gpu.mdoptimization.mdserving.md詳細
TensorRT-LLM
NVIDIA GPU 上で最先端のパフォーマンスを実現し、LLM 推論を最適化する NVIDIA のオープンソースライブラリです。
TensorRT-LLM を使用する場面
次のような場合に TensorRT-LLM を使用してください:
- NVIDIA GPU(A100、H100、GB200)にデプロイする
- 最大スループットが必要(Llama 3 で 24,000+ トークン/秒)
- リアルタイムアプリケーション向けに低レイテンシが必要
- 量子化モデル(FP8、INT4、FP4)を扱う
- 複数の GPU またはノードにわたってスケールする
次のような場合は vLLM を使用してください:
- より簡単なセットアップと Python 中心の API が必要
- TensorRT のコンパイルなしで PagedAttention を使用したい
- AMD GPU または NVIDIA 以外のハードウェアを扱う
次のような場合は llama.cpp を使用してください:
- CPU または Apple Silicon にデプロイする
- NVIDIA GPU を使わずにエッジデプロイが必要
- よりシンプルな GGUF 量子化形式を使用したい
クイックスタート
インストール
# Docker (recommended)
docker pull nvidia/tensorrt_llm:latest
# pip install
pip install tensorrt_llm==1.2.0rc3
# Requires CUDA 13.0.0, TensorRT 10.13.2, Python 3.10-3.12
基本的な推論
from tensorrt_llm import LLM, SamplingParams
# Initialize model
llm = LLM(model="meta-llama/Meta-Llama-3-8B")
# Configure sampling
sampling_params = SamplingParams(
max_tokens=100,
temperature=0.7,
top_p=0.9
)
# Generate
prompts = ["Explain quantum computing"]
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
print(output.text)
trtllm-serve によるサービング
# Start server (automatic model download and compilation)
trtllm-serve meta-llama/Meta-Llama-3-8B \
--tp_size 4 \ # Tensor parallelism (4 GPUs)
--max_batch_size 256 \
--max_num_tokens 4096
# Client request
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/Meta-Llama-3-8B",
"messages": [{"role": "user", "content": "Hello!"}],
"temperature": 0.7,
"max_tokens": 100
}'
主な機能
パフォーマンス最適化
- インフライトバッチング:生成中の動的バッチング
- Paged KV キャッシュ:効率的なメモリ管理
- Flash Attention:最適化されたアテンションカーネル
- 量子化:FP8、INT4、FP4 により推論を 2~4 倍高速化
- CUDA グラフ:カーネル起動のオーバーヘッドを削減
並列処理
- テンソル並列処理(TP):モデルを複数の GPU に分割
- パイプライン並列処理(PP):レイヤー単位で分散
- エキスパート並列処理:Mixture-of-Experts モデル向け
- マルチノード:単一マシンを超えてスケール
高度な機能
- 投機的デコーディング:ドラフトモデルを使って生成を高速化
- LoRA サービング:複数アダプターのデプロイを効率化
- 分離型サービング:プリフィルと生成を分離
よくあるパターン
量子化モデル(FP8)
from tensorrt_llm import LLM
# Load FP8 quantized model (2× faster, 50% memory)
llm = LLM(
model="meta-llama/Meta-Llama-3-70B",
dtype="fp8",
max_num_tokens=8192
)
# Inference same as before
outputs = llm.generate(["Summarize this article..."])
マルチ GPU デプロイ
# Tensor parallelism across 8 GPUs
llm = LLM(
model="meta-llama/Meta-Llama-3-405B",
tensor_parallel_size=8,
dtype="fp8"
)
バッチ推論
# Process 100 prompts efficiently
prompts = [f"Question {i}: ..." for i in range(100)]
outputs = llm.generate(
prompts,
sampling_params=SamplingParams(max_tokens=200)
)
# Automatic in-flight batching for maximum throughput
パフォーマンスベンチマーク
Meta Llama 3-8B(H100 GPU):
- スループット:24,000 トークン/秒
- レイテンシ:約 10ms/トークン
- PyTorch と比較して:100 倍高速
Llama 3-70B(8× A100 80GB):
- FP8 量子化:FP16 より 2 倍高速
- メモリ:FP8 により 50% 削減
対応モデル
- LLaMA ファミリー:Llama 2、Llama 3、CodeLlama
- GPT ファミリー:GPT-2、GPT-J、GPT-NeoX
- Qwen:Qwen、Qwen2、QwQ
- DeepSeek:DeepSeek-V2、DeepSeek-V3
- Mixtral:Mixtral-8x7B、Mixtral-8x22B
- ビジョン:LLaVA、Phi-3-vision
- HuggingFace 上の 100 以上のモデル
参考資料
- 最適化ガイド - 量子化、バッチング、KV キャッシュのチューニング
- マルチ GPU セットアップ - テンソル/パイプライン並列処理、マルチノード
- サービングガイド - 本番環境へのデプロイ、モニタリング、自動スケーリング
リソース
- ドキュメント:https://nvidia.github.io/TensorRT-LLM/
- GitHub:https://github.com/NVIDIA/TensorRT-LLM
- モデル:https://huggingface.co/models?library=tensorrt_llm
エージェントの作業手順
- 環境を確認します。 ハードウェア、フレームワークとサーバーのバージョン、モデル形式、想定負荷を確認します。
- 入力を明確にします。 データまたはユーザーから、形式、識別子、パラメーターを確認します。結果を左右する値は推測せず、質問してください。
- まず小規模に実行します。 拡張する前に、単一のリクエストを処理または記録するか、エンドツーエンドで実行します。
- 上記の手順と参照情報を使用して、タスク全体を実行します。
- 結果を検証します。 レイテンシ、スループット、出力の正確性を参照値と照らし合わせて測定し、リソース使用量とコストを確認します。
- 報告します。 実行した内容(バージョン、コマンド、パラメーター)、確認した内容、未確認の事項を明示します。
| 次の状況が発生した場合 | 対応 |
|---|---|
| サーバーの起動に失敗する、または OOM が発生する | モデルサイズとメモリ、量子化、並列処理の設定を確認します。 |
| これらの手順に記載された関数、フラグ、エンドポイントがインストール済みのバージョンにない | インストール済みバージョンのドキュメント(help()、--help、公式ドキュメント)を確認して適宜調整し、ユーザーに伝えます。API を決して捏造しないでください。 |
| 必須の入力、識別子、パラメーターが曖昧である | ユーザーに質問するか、実行前に仮定を明示します。 |
誠実性に関するルール
- 結果、パラメーター、識別子、引用、統計情報を決して捏造しないでください。実行または検証できない場合は、その旨を率直に伝えます。
- サービスや認証情報を公開しないでください。プロビジョニングの前にクラウドコストを確認します。
- ここに記載されたバージョン固有の情報は古くなっている可能性があるため、インストール済みバージョンの公式ドキュメントで確認します。
- 費用が発生する操作、共有 GPU やクラウドクォータを消費する操作、個人データや患者データに触れる操作、元に戻せない操作を行う前に、ユーザーに確認してください。
関連スキル
serving-llms-vllm:vLLM の PagedAttention と連続バッチ処理を使用し、高スループットで LLM を提供します。miles-rl-training:本番環境に対応した slime のフォークである miles を使用する、エンタープライズグレードの RL トレーニングに関するガイダンスを提供します。llama-cpp:NVIDIA ハードウェアを使わずに、CPU、Apple Silicon、コンシューマー向け GPU で LLM 推論を実行します。
コメント
Markdown 対応