NVIDIAが開発したオープンソースの大規模言語モデル推論最適化ライブラリで、TensorRT技術を通じてGPU推論に最先端のパフォーマンス最適化を提供します。
TensorRT-LLMプロジェクト詳細紹介
プロジェクト概要
TensorRT-LLMは、NVIDIAが開発したオープンソースライブラリで、NVIDIA GPU上での大規模言語モデル(LLM)の推論性能を最適化するために特化しています。使いやすいPython APIを提供し、LLMの定義を可能にし、NVIDIA GPU上で推論を効率的に実行するための最先端の最適化技術をサポートしています。
主要機能
1. 高度な最適化技術
TensorRT-LLMは、以下を含む様々な先進的な最適化機能を提供します。
- カスタムアテンションカーネル:特別に最適化されたアテンションメカニズムの実装
- 動的バッチ処理(Inflight Batching):異なる長さの入力シーケンスをリアルタイムで処理
- ページングKVキャッシュ:効率的なキーバリューキャッシュ管理
- 投機的デコーディング(Speculative Decoding):複数のトークンを予測することで生成を高速化
- 多様な量子化サポート:FP8、FP4、INT4 AWQ、INT8 SmoothQuantなど
2. 量子化技術の詳細
TensorRT-LLMは、業界をリードする統一量子化ツールキットを提供し、NVIDIAハードウェア上での深層学習/生成AIのデプロイメントを大幅に加速させつつ、モデルの精度を維持します。
主要な量子化手法:
- FP8:大規模バッチ推論シナリオで通常、最高の性能と精度を提供し、バッチサイズが16以上のシナリオに適しています。
- INT8 SmoothQuant:重み平滑化とINT8チャネル量子化、アクティベーション範囲のテンソルレベルでのキャリブレーション
- INT4 AWQ:重みの再スケーリングとブロックレベルでのINT4量子化、小規模バッチ推論シナリオ(バッチサイズが4以下)に推奨されます。
- W4A8 AWQ:重みをINT4に量子化し、アクティベーションをINT8に量子化
性能向上:
ベンチマークテストによると、量子化技術は顕著な性能向上をもたらします。
- FP8量子化:FP16ベースラインと比較して、Llama 3 8Bモデルで1.45倍、70Bモデルで1.81倍の高速化を実現します。
- INT4 AWQ:バッチサイズが1のシナリオにおいて、70Bモデルで最大2.66倍の性能向上を実現します。
- メモリ最適化:すべての量子化バージョンのLlama 3 70Bモデルは、単一のNVIDIA H100 GPUで実行可能であり、FP16精度では少なくとも2つのGPUが必要です。
3. マルチGPUおよびマルチノードサポート
TensorRT-LLMには、前処理および後処理ステップ、ならびにマルチGPUおよびマルチノード通信プリミティブが含まれており、シンプルなオープンソースのモデル定義APIを通じて画期的なLLM推論性能を実現します。
4. 幅広いハードウェアサポート
TensorRT-LLMは、NVIDIA Hopper、NVIDIA Ada Lovelace、およびNVIDIA Ampereアーキテクチャに基づくGPUをサポートしています。特に:
- H100 GPU:FP8形式の自動変換と最適化されたカーネルをサポートします。
- H200 GPU:Llama2-13Bで約12,000トークン/秒の性能を達成できます。
- RTXシリーズ:コンシューマー向けGPUでの大規模モデル推論をサポートします。
インストールと使用方法
Dockerインストール(推奨)
# プリビルドされたDockerコンテナを実行
docker run --ipc host --gpus all -it nvcr.io/nvidia/tensorrt-llm/release
LLM API使用例
from tensorrt_llm import BuildConfig, SamplingParams
from tensorrt_llm._tensorrt_engine import LLM
def main():
build_config = BuildConfig()
build_config.max_batch_size = 256
build_config.max_num_tokens = 1024
# HuggingFaceモデル名、ローカルのHFモデルパス、またはTensorRTモデルオプティマイザの量子化チェックポイントをサポート
llm = LLM(model="TinyLlama/TinyLlama-1.1B-Chat-v1.0",
build_config=build_config)
# プロンプトの例
prompts = [
"Hello, my name is",
"The capital of France is",
"The future of AI is",
]
# サンプリングパラメータを作成
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
for output in llm.generate(prompts, sampling_params):
print(f"Prompt: {output.prompt!r}, Generated text: {output.outputs[0].text!r}")
オンラインサービスデプロイメント
# OpenAI互換サーバーを起動
trtllm-serve --model TinyLlama/TinyLlama-1.1B-Chat-v1.0 --port 8000
量子化ワークフロー
基本的な量子化コマンド
# FP8量子化
python quantize.py --model_dir $MODEL_PATH --qformat fp8 --kv_cache_dtype fp8 --output_dir $OUTPUT_PATH
# INT4 AWQ量子化
python quantize.py --model_dir $MODEL_PATH --qformat int4_awq --awq_block_size 64 --tp_size 4 --output_dir $OUTPUT_PATH
# INT8 SmoothQuant量子化
python quantize.py --model_dir $MODEL_PATH --qformat int8_sq --kv_cache_dtype int8 --output_dir $OUTPUT_PATH
# 自動量子化(複数の手法の組み合わせ)
python quantize.py --model_dir $MODEL_PATH --autoq_format fp8,int4_awq,w4a8_awq --output_dir $OUTPUT_PATH --auto_quantize_bits 5 --tp_size 2
サポートされるモデル
TensorRT-LLMは、以下を含む多数の人気LLMアーキテクチャをサポートしています。
- Llamaシリーズ:Llama 2, Llama 3, Llama 3.1, Llama 3.3
- Falconシリーズ:Falcon-180Bを含む
- GPTシリーズ:ChatGPT関連アーキテクチャ
- Gemmaシリーズ:Googleのオープンソースモデル
- Mixtralシリーズ:混合エキスパートモデル
- DeepSeekシリーズ:DeepSeek R1を含む
- CodeLlama:コード生成専用モデル
エコシステム統合
NVIDIAエコシステム
- NVIDIA NeMo:生成AIアプリケーションの構築、カスタマイズ、デプロイメントのためのエンドツーエンドフレームワーク
- Triton Inference Server:プロダクションレベルの推論サーバー
- NVIDIA Dynamo:データセンター規模の分散推論サービスフレームワーク
サードパーティ統合
- HuggingFace Hub:事前量子化モデルを提供
- LlamaIndex:RAGアプリケーション開発
- SageMaker LMI:AWSマネージド推論
性能ベンチマーク
性能向上例:
- CPUプラットフォームと比較:推論速度が最大36倍向上
- RTX非最適化と比較:Windows RTXプラットフォームで大規模言語モデルの速度が最大4倍向上
- Falcon-180B:単一のH200 GPU上でINT4 AWQを使用して推論を実現
- Llama-70B:A100と比較して6.7倍の速度向上を実現
ベストプラクティス推奨事項
量子化手法の選択
異なるシナリオに応じて適切な量子化手法を選択します。
小規模バッチ推論(バッチサイズが4以下):
- 重み量子化手法(例:INT4 AWQ)の使用を推奨
- 主にメモリ帯域幅の制限を考慮
大規模バッチ推論(バッチサイズが16以上):
- FP8量子化を優先的に選択し、通常、最高の性能と精度を提供
- 結果が要件を満たさない場合は、INT8 SmoothQuant、次にAWQおよび/またはGPTQを試す
特定ドメインアプリケーション:
- コード補完のような高度に特化したアプリケーションの場合、ドメイン関連のデータセットを使用してキャリブレーションを行うことを推奨
技術的優位性
- 使いやすさ:高度なPython APIを提供し、LLMの定義と最適化プロセスを簡素化
- 性能:カーネル融合、量子化、ランタイム最適化など、すべての主要な最適化技術を網羅
- スケーラビリティ:単一GPUからマルチノードまで、様々なデプロイメントシナリオをサポート
- 互換性:PyTorchと深く統合されており、主要な推論エコシステムをサポート
- オープンソース:完全にオープンソースであり、コミュニティ主導で継続的に開発
将来の展望
TensorRT-LLMは、オープンソースのモジュール型モデル定義APIを通じて使いやすさと拡張性を向上させ、新しいアーキテクチャや機能強化の定義、最適化、実行を可能にし、LLMの進化に合わせて容易にカスタマイズできます。
プロジェクトの継続的な開発方向には以下が含まれます。
- より多くのモデルアーキテクチャのサポート
- より高度な量子化技術
- より優れたマルチノード拡張機能
- より緊密なエコシステム統合