HyperAI超神経
Back to Headlines

TensorRT-LLMで大規模言語モデルの推論性能を最適化:ベンチマークとデプロイの実践ガイド

2日前

LLM 推論ベンチマークの最適化: TensorRT-LLM を使用したパフォーマンステューニング 大規模言語モデル(LLM)フレームワークの展開、統合、またはベンチマークにおいて推論性能を考慮することは非常に重要です。パフォーマンス指標がアプリケーションの要件を満たすようにフレームワークや特徴を調整する必要があります。本記事では、NVIDIA のオープンソース AI 推論エンジンである TensorRT-LLM の trtllm-bench アプリケーションを使用してモデルのパフォーマンステューニングを行い、その後 trtllm-serve を使用して展開する方法について解説します。 trtllm-bench を使用したベンチマーク trtllm-bench は Python ベースのツールで、完全な推論デプロイメントのオーバーヘッドなしにモデルのパフォーマンスを直接ベンチマークすることができます。 GPU 環境の設定 ベンチマークを行う前に、GPU 環境を正しく設定する必要があります。デフォルト設定に戻す場合は以下コマンドを実行します: nvidia-smi -a nvidia-smi -pm 1 GPU の最大使用状況を照会するには以下を実行します: nvidia-smi --query-gpu=power.max_limit --format=csv 特定の電力制限を設定する場合は以下を実行します: sudo nvidia-smi -pl <power_limit> データセットの準備 合成データセットを作成するには prepare_dataset を使用します。独自のデータセットを用意する場合は JSON Lines (jsonl) 形式でフォーマットしてください。1 行あたりのペイロードが配置された例は以下の通りです: {"input": "質問", "output": "回答"} 本記事では、ISL/OSL が 128/128 の合成データセットを使用した例を示します。 ベンチマークの実行 trtllm-bench を使用してベンチマークを実行する場合は、以下のコマンドを実行します: python trtllm-bench --model <model_name> --engine trtllm --batch_size 128 --sequence_length 128 コマンドが完了すると、結果は results.json に保存され、ターミナルにも表示されます。以下は出力の一部です: { "model": "<model_name>", "batch_size": 128, "sequence_length": 128, "throughput": 66.4, "latency": 1859.2 } パフォーマンス結果の分析 結果は PERFORMANCE OVERVIEW セクションに表示されます。重要なテルミンについては「LLM Inference Benchmarking: Fundamental Concepts」を参照してください。 要注意なのは最大トークン数とバッチサイズです。これらは TensorRT-LLM において特別な意味を持ちます。最大並列リクエスト数 (--concurrency) を指定することで、システムがサポートできるユーザー数を絞り込むことができます。 パフォーマンステューニングの具体例 NVIDIA の Llama-3.1 8B FP8 と Meta の Llama-3.1 8B FP16 の比較では、FP8 オプティマイズ済みチェックポイントを使用することで、同等のリソースで 2 倍以上のユーザーをサポートできることがわかりました。具体例では、FP16 モデルは約 256 の並列ユーザーで約 72 tokens/sec/user ですが、FP8 モデルは 512 の並列ユーザーで約 66 tokens/sec/user を達成しました。 このデータから、最大バッチサイズを 512 に設定すれば、ユーザーごとの初期トークン遅延(TTFT)が増えるリスクがありますが、より多くのユーザーをサポートできます。 大規模言語モデルの展開: trtllm-serve を使用して trtllm-serve を使用することで、OpenAI 対応のエンドポイントを簡単に立ち上げることができます。 サーバーの設定 trtllm-bench の結果に基づいてサーバーを調整するには、以下のコマンドを実行します: python trtllm-serve --model <model_name> --engine trtllm --max_batch_size 512 --extra_llm_api_options llm_api_options.yml --extra_llm_api_options 引数を使用して、LLM API レベルでの設定を直接変更できます。Benchmark との設定揃えのため、以下の内容の llm_api_options.yml ファイルを作成します: concurrency: 512 fp16: true サーバーの展開とベンチマーク サーバーが動作していることを確認し、GenAI-Perf や benchmark_serving.py を使用してパフォーマンスを検証します。将来的には、trtllm-bench で最適化されたサーバーの立ち上げ機能を追加予定です。 本記事は、TensorRT-LLM の trtllm-bench と trtllm-serve を活用することで、大規模言語モデルのパフォーマンスベンチマークとチューニングを簡単に実行できる方法を紹介しています。TensorRT-LLM の具体的なチューニングやモデル固有の調整については、公式ドキュメントや既存のブログ記事を参照してください。 業界関係者は、TensorRT-LLM のベンチマークとチューニング機能が LLM の性能評価と最適化において大きな役割を果たすと評価しています。このツールにより、開発者は少ないリソースで多くのユーザーをサポートしながら、ハイパー性能を実現することが可能になります。NVIDIA は今後、さらに高度な機能を追加し、ユーザーの利便性を向上させる計画です。

Related Links