tensorrt-llm について
TensorRT-LLMを使うスキルガイドです。NVIDIAのオープンソースライブラリによるNVIDIA GPU上のLLM推論最適化を扱い、量子化、バッチ処理、並列デプロイ、サービス運用を説明します。
主な機能
- 01インフライトバッチ処理とページ化KVキャッシュ
- 02FP8・INT4・FP4量子化
- 03テンソル・パイプライン・エキスパート並列化
- 04マルチノードデプロイ
- 05投機的デコードとLoRA提供
活用シーン
- 01NVIDIA GPU上でのLLM提供
- 02GPUまたはノード間での推論拡張
- 03量子化モデルによるメモリ使用量の削減
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ orchestra-research/ ai-research-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
}'
主な機能
パフォーマンス最適化
- In-flight batching: 生成中の動的バッチ処理
- Paged KV cache: 効率的なメモリ管理
- Flash Attention: 最適化されたアテンションカーネル
- 量子化: FP8、INT4、FP4により2〜4倍の高速推論
- CUDA graphs: カーネル起動オーバーヘッドの削減
並列化
- Tensor parallelism (TP): GPU間でモデルを分割
- Pipeline parallelism (PP): レイヤー単位での分散
- Expert parallelism: Mixture-of-Expertsモデル向け
- Multi-node: 単一マシンを超えたスケール
高度な機能
- Speculative decoding: ドラフトモデルによる高速な生成
- LoRA serving: 効率的なマルチアダプターデプロイメント
- Disaggregated serving: プレフィルと生成の分離
よくあるパターン
量子化モデル(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セットアップ - テンソル/パイプライン並列化、マルチノード
- サービングガイド - 本番デプロイメント、モニタリング、オートスケーリング
リソース
コメント
Markdown 対応