mcpField
T
tensorrt-llm

tensorrt-llm

github.com/kalarislabsその他7344 回インストール4 日前に更新
リポジトリ

tensorrt-llm について

tensorrt-llmは、NVIDIA GPU上のLLM推論を最適化するオープンソースライブラリです。モデルをデプロイ、サービングするチーム向けに、量子化や動的バッチ処理、マルチGPU対応を備えています。

主な機能

  1. 01NVIDIA GPU推論の最適化
  2. 02動的バッチ処理とKVキャッシュ
  3. 03FP8、INT4、FP4量子化
  4. 04テンソル・パイプライン・エキスパート並列化
  5. 05投機的デコードとLoRAサービング

活用シーン

  1. 01NVIDIA GPUでのLLMデプロイ
  2. 02量子化による推論負荷の軽減
  3. 03GPUまたはノード間でのスケーリング
  4. 04trtllm-serveによるモデル提供

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill tensorrt-llm

インストール後、Claude Code で/tensorrt-llmを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
multi-gpu.md
optimization.md
serving.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 以上のモデル

参考資料

リソース

エージェントの作業手順

  1. 環境を確認します。 ハードウェア、フレームワークとサーバーのバージョン、モデル形式、想定負荷を確認します。
  2. 入力を明確にします。 データまたはユーザーから、形式、識別子、パラメーターを確認します。結果を左右する値は推測せず、質問してください。
  3. まず小規模に実行します。 拡張する前に、単一のリクエストを処理または記録するか、エンドツーエンドで実行します。
  4. 上記の手順と参照情報を使用して、タスク全体を実行します。
  5. 結果を検証します。 レイテンシ、スループット、出力の正確性を参照値と照らし合わせて測定し、リソース使用量とコストを確認します。
  6. 報告します。 実行した内容(バージョン、コマンド、パラメーター)、確認した内容、未確認の事項を明示します。
次の状況が発生した場合対応
サーバーの起動に失敗する、または 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 推論を実行します。

コメント