YOLO26モデルのTensorRTエクスポート#
高性能な環境にコンピュータービジョンモデルをデプロイするには、速度と効率を最大限に高める形式が必要になる場合があります。これは、NVIDIA GPUにモデルをデプロイする場合に特に当てはまります。
TensorRTエクスポート形式を使用すると、NVIDIAハードウェア上で高速かつ効率的に推論できるよう、Ultralytics YOLO26モデルを強化できます。このガイドでは、変換プロセスのわかりやすい手順を説明し、ディープラーニングプロジェクトでNVIDIAの先進技術を最大限に活用できるよう支援します。
TensorRT#
NVIDIAが開発したTensorRTは、高速なディープラーニング推論向けに設計された先進的なソフトウェア開発キット(SDK)です。物体検出などのリアルタイムアプリケーションに適しています。
このツールキットはNVIDIA GPU向けにディープラーニングモデルを最適化し、より高速で効率的な処理を実現します。TensorRTモデルでは、レイヤーフュージョン、精度キャリブレーション(INT8およびFP16)、動的テンソルメモリ管理、カーネルの自動チューニングなどの手法を含むTensorRT最適化が実行されます。ディープラーニングモデルをTensorRT形式に変換することで、開発者はNVIDIA GPUの可能性を最大限に引き出せます。
TensorRTは、TensorFlow、PyTorch、ONNXなど、さまざまなモデル形式との互換性で知られており、異なるフレームワークのモデルを統合・最適化するための柔軟なソリューションを提供します。この汎用性により、多様なハードウェアおよびソフトウェア環境で効率的なモデルデプロイが可能になります。
TensorRTは、ビルドに使用したGPU上でエンジンのプロファイリングとチューニングを行います。デプロイ先GPUのアーキテクチャ向けにビルドし、TensorRT/CUDAランタイムを一致させてください。.engineファイルを移植可能なモデル形式として扱わないでください。エッジデプロイでは、Ultralytics Platformに8つのJetsonターゲット選択肢があり、それぞれの物理ビルドおよび検証ステータスが記録されています。または、デプロイ先デバイス上でローカルにエクスポートすることもできます。
TensorRTモデルの主な機能#
TensorRTモデルには、高速なディープラーニング推論における効率性と有効性に貢献する、さまざまな主要機能があります。
-
精度キャリブレーション:TensorRTは精度キャリブレーションをサポートしており、特定の精度要件に合わせてモデルを微調整できます。これにはINT8やFP16などの低精度形式のサポートが含まれ、許容可能な精度レベルを維持しながら推論速度をさらに向上できます。
-
レイヤーフュージョン:TensorRTの最適化プロセスにはレイヤーフュージョンが含まれます。これは、ニューラルネットワークの複数のレイヤーを単一の演算に結合する処理です。メモリアクセスと計算を最小限に抑えることで、計算オーバーヘッドを削減し、推論速度を向上させます。
-
動的テンソルメモリ管理:TensorRTは推論中のテンソルメモリ使用量を効率的に管理し、メモリオーバーヘッドを削減してメモリ割り当てを最適化します。これにより、GPUメモリをより効率的に利用できます。
-
カーネルの自動チューニング:TensorRTはカーネルの自動チューニングを適用し、モデルの各レイヤーに最適化されたGPUカーネルを選択します。この適応的なアプローチにより、モデルはGPUの計算能力を最大限に活用できます。
TensorRTのデプロイオプション#
YOLO26モデルをTensorRT形式にエクスポートするコードを見る前に、TensorRTモデルが通常どこで使用されるかを理解しましょう。
TensorRTには複数のデプロイオプションがあり、それぞれ統合の容易さ、パフォーマンス最適化、柔軟性のバランスが異なります。
- TensorFlow内でのデプロイ:この方法ではTensorRTをTensorFlowに統合し、最適化されたモデルを使い慣れたTensorFlow環境で実行できます。TF-TRTがこれらを効率的に処理できるため、サポート対象レイヤーと非サポートレイヤーが混在するモデルに有用です。
-
スタンドアロンTensorRT Runtime API:きめ細かな制御を提供し、パフォーマンスが重要なアプリケーションに適しています。より複雑ですが、サポートされていない演算子をカスタム実装できます。
-
NVIDIA Triton Inference Server:さまざまなフレームワークのモデルをサポートするオプションです。クラウドまたはエッジ推論に特に適しており、モデルの同時実行やモデル分析などの機能を提供します。
サポートされるタスク#
TensorRTエクスポートは、Ultralyticsの7つのタスクすべてをサポートします。セマンティックセグメンテーションと深度推定は、これらのヘッドを搭載して出荷される唯一のファミリーであるYOLO26でのみ利用できます。
YOLO26モデルのTensorRTへのエクスポート#
YOLO26モデルをTensorRT形式に変換することで、実行効率を高め、パフォーマンスを最適化できます。
インストール#
必要なパッケージをインストールするには、次を実行します。
# Install the required package for YOLO26
pip install ultralyticsインストール手順とベストプラクティスの詳細については、YOLO26インストールガイドをご確認ください。YOLO26に必要なパッケージのインストール中に問題が発生した場合は、解決策とヒントについて一般的な問題のガイドをご参照ください。
使用方法#
使用方法の説明を確認する前に、Ultralyticsが提供するYOLO26モデルのラインナップをご確認ください。プロジェクトの要件に最適なモデルを選択するのに役立ちます。
TensorRT形式は、Export、Predict、Validateモードをサポートします。推論と検証にはNVIDIA GPUが必要です。モデルをエクスポートした後、エクスポート済みモデルを読み込んで推論を実行するか、精度を検証してください。
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo26n.engine'from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")エクスポート引数#
| 引数 | 型 | デフォルト | 説明 |
|---|---|---|---|
format | str | 'engine' | エクスポートされたモデルの対象形式で、さまざまなデプロイ環境との互換性を定義します。 |
imgsz | intまたはtuple | 640 | モデル入力に使用する画像サイズです。正方形画像の場合は整数、特定の寸法の場合はタプル(height, width)を指定できます。 |
quantize | intまたはstr | None | 量子化精度: 16 (FP16) または 8 (INT8/PTQ。キャリブレーション data/fraction が必要)、32/未設定は FP32 です。quantize=8 で学習されたチェックポイントは、キャリブレーションなしで、保持している範囲から常に INT8 をエクスポートします。非推奨の half/int8 フラグを置き換えます。 |
dynamic | bool | False | 動的な入力サイズを許可し、さまざまな画像寸法を柔軟に扱えるようにします。 |
simplify | bool | True | onnxslimを使用してモデルグラフを簡略化し、パフォーマンスと互換性を向上させる可能性があります。 |
opset | int | None | 中間ONNXグラフのONNX opsetバージョンを指定します。設定しない場合は、サポートされている最新バージョンが使用されます。 |
workspace | floatまたはNone | None | TensorRT最適化用の最大ワークスペースサイズをGiB単位で設定し、メモリ使用量とパフォーマンスのバランスを取ります。TensorRTがデバイスの最大値まで自動割り当てを行うには、Noneを使用してください。 |
nms | bool、オプション | None | 生出力(None、デフォルト)、組み込み NMS(True)、または NMS フリーヘッド(False)を選択します。 |
batch | int | 1 | エクスポートするモデルのバッチ推論サイズ、またはpredictモードでエクスポート済みモデルが同時に処理する画像の最大数を指定します。 |
data | str | None | 量子化に不可欠なデータセット YAML へのパス。分類の場合は、データセットディレクトリまたは組み込みのデータセット名を指定します。quantize=8 で省略された場合、Ultralytics はモデルタスクのデフォルトのキャリブレーションデータセットを選択します。quantize=8 で学習されたチェックポイントには必要ありません。 |
fraction | float、int、またはlist | 1.0 | キャリブレーションサブセットを、比率、画像枚数、または [train, val, test] の比率/枚数として指定します。2項目のリストでは、test はすべて使用され、0 はスキップされます。 |
device | str | None | エクスポートに使用するデバイスを指定します:GPU(device=0)、NVIDIA Jetson用DLA(device=dla:0またはdevice=dla:1)。 |
TensorRTへのエクスポート時は、CUDAをサポートするGPUを使用してください。
TensorRT 11.2.1 does not support JetPack(Thorを含みます)。JetPackリリースでサポートされているTensorRT 10.xランタイムを使用してください。device=dla:0またはdevice=dla:1に関して、NVIDIAはDLA supportを備えた最後のリリースとしてTensorRT 10.7を挙げています。TensorRT 11.0、11.1、11.2はDLAをサポートしていません。
エクスポートプロセスの詳細については、エクスポートに関するUltralyticsドキュメントページをご覧ください。
INT8量子化を使用したTensorRTエクスポート#
INT8 精度を指定して TensorRT を使用し Ultralytics YOLO モデルをエクスポートすると、学習後量子化 (PTQ) が実行されます。TensorRT は PTQ にキャリブレーションを使用します。キャリブレーションは、YOLO モデルが代表的な入力データで推論処理を行う際に各活性化テンソル内の活性化の分布を測定し、その分布を使用して各テンソルの一連のスケール値を推定します。量子化の候補となる各活性化テンソルには、キャリブレーションプロセスによって導出される関連スケールが存在します。量子化認識学習によってファインチューニングされた quantize=8 を持つチェックポイントはすでに INT8 範囲を保持しているため、そのエクスポートでは範囲を使用し、キャリブレーションをスキップします。
TensorRT 11では、暗黙的量子化とIInt8Calibratorインターフェースが削除されました。TensorRT 11以降では、UltralyticsはNVIDIA ModelOptの明示的量子化を使用してINT8量子化を実行します。これは、強い型付けのエンジンをビルドする前にONNXグラフへQ/DQノードを挿入するものです。また、FP16にはModelOpt AutoCastによる混合精度変換が適用されます。quantize=8、quantize=16、data引数は同じように機能し、初回使用時にModelOptが自動的にインストールされます。TensorRT 7~10では、以下で説明する従来のキャリブレーターが使用されます。
暗黙的に量子化されたネットワークを処理する際、TensorRTはレイヤーの実行時間を最適化するためにINT8を機会的に使用します。レイヤーがINT8でより高速に実行され、データの入力と出力に量子化スケールが割り当てられている場合、そのレイヤーにはINT8精度のカーネルが割り当てられます。それ以外の場合、TensorRTはそのレイヤーで実行時間がより短くなる方の精度、FP32またはFP16をカーネルに選択します。
INT8精度でエクスポートする際は、デプロイでTensorRTモデルの重みを使用するデバイスと同じデバイスを使用することが極めて重要です。キャリブレーション結果はデバイスによって異なる可能性があるためです。
INT8エクスポートの設定#
Ultralytics YOLOモデルでexportを使用する際に指定する引数は、エクスポート済みモデルのパフォーマンスに大きく影響します。ただし、利用可能なデバイスリソースに基づいて選択する必要もあります。デフォルトの引数は、ほとんどのAmpere(またはそれ以降の)NVIDIAディスクリートGPUで機能するはずです。使用されるキャリブレーションアルゴリズムはGPUエクスポートでは"MINMAX_CALIBRATION"、NVIDIA JetsonでのDLAエクスポートでは"ENTROPY_CALIBRATION_2"です。利用可能なオプションの詳細は、TensorRT Developer Guideで確認できます。Ultralyticsのテストでは、GPUエクスポートには"MINMAX_CALIBRATION"が最適であることが確認されており、アルゴリズムはエクスポートデバイスに基づいて自動的に選択されます。
-
workspace:モデルの重みを変換する際に割り当てるデバイスメモリのサイズ(GiB単位)を制御します。-
キャリブレーションの要件と利用可能なリソースに応じて、
workspaceの値を調整してください。workspaceを大きくするとキャリブレーション時間が長くなる可能性がありますが、TensorRTがより広範な最適化手法を探索できるため、モデルのパフォーマンスと精度が向上する可能性があります。一方、workspaceを小さくするとキャリブレーション時間を短縮できますが、最適化戦略が制限され、量子化モデルの品質に影響する可能性があります。 -
デフォルトは
workspace=Noneです。これによりTensorRTがメモリを自動的に割り当てます。手動で設定する場合、キャリブレーションがクラッシュ(警告なしに終了)したときは、この値を増やす必要がある可能性があります。 -
workspaceの値がデバイスで利用可能なメモリを超えている場合、TensorRTはエクスポート中にUNSUPPORTED_STATEを報告します。これは、workspaceの値を下げるか、Noneに設定する必要があることを意味します。 -
workspaceが最大値に設定されていてキャリブレーションが失敗またはクラッシュする場合は、自動割り当て用にNoneを使用するか、imgszとbatchの値を減らして必要メモリを削減することを検討してください。 -
INT8のキャリブレーションは各デバイスに固有であることを忘れないでください。キャリブレーションに「ハイエンド」GPUを借りると、別のデバイスで推論を実行した際にパフォーマンスが低下する可能性があります。
-
-
batch:推論に使用する最大バッチサイズです。推論時にはより小さいバッチを使用できますが、指定したサイズを超えるバッチは受け付けません。
小さいバッチを使用すると、INT8キャリブレーション中のスケーリングが不正確になる可能性があります。これは、プロセスが観測したデータに基づいて調整を行うためです。小さいバッチでは値の全範囲を捉えられず、最終的なキャリブレーションで問題が発生する可能性があります。より大きなバッチサイズを使用すると、より代表性の高いキャリブレーション結果を確保できます。
NVIDIA による実験の結果、INT8 量子化キャリブレーションでは、モデルのデータを代表するキャリブレーション画像を少なくとも 500 枚使用することが推奨されています。これはガイドラインであり、厳格な要件ではありません。ご自身のデータセットで良好なパフォーマンスを発揮するために必要な事項については、ご自身で実験を行う必要があります。 TensorRT による INT8 キャリブレーションにはキャリブレーションデータが必要であるため、TensorRT 用の quantize=8 において quantize=8 (学習後量子化) で学習されなかったチェックポイントをエクスポートする場合は、必ず data 引数を使用し、バリデーションの画像を使用してキャリブレーションを行う data="my_dataset.yaml" を使用してください。quantize=8 で学習されたチェックポイントはキャリブレーションをスキップするため、チェックポイントに対して data を省略してください。INT8 量子化を指定して TensorRT にエクスポートする際に data に値が渡されない場合、エラーが発生する代わりにモデルタスクに基づいた「小規模な」サンプルデータセットの 1 つを使用することがデフォルトになります。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(
format="engine",
dynamic=True, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
quantize=8,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")- 動的軸でエクスポートします。明示的に設定しない限り、
dynamicはFalseのままになります。詳細については、エクスポート引数を参照してください。 - エクスポート済みモデルとINT8キャリブレーションの最大バッチサイズを8に設定します。
- 変換プロセスでデバイス全体を割り当てる代わりに、4 GiBのメモリを割り当てます。
- キャリブレーションにCOCOデータセットを使用します。具体的には、validationに使用される画像(合計5,000枚)です。
キャリブレーションキャッシュ
TensorRTはキャリブレーション用の.cacheを生成します。これは、同じデータを使用する今後のモデルの重みのエクスポートを高速化するために再利用できます。ただし、データが大きく異なる場合やbatchの値を大幅に変更した場合は、キャリブレーションの品質が低下する可能性があります。このような場合は、既存の.cacheの名前を変更して別のディレクトリに移動するか、完全に削除してください。
YOLOでTensorRT INT8を使用する利点#
-
モデルサイズの削減: FP32からINT8への量子化により、モデルサイズを4分の1(ディスク上またはメモリ上)に削減でき、モデルのデプロイ時にダウンロード時間の短縮、ストレージ要件の低減、メモリフットプリントの削減につながります。
-
消費電力の低減: INT8でエクスポートしたYOLOモデルの低精度演算は、FP32モデルと比較して消費電力を抑えられます。特にバッテリー駆動デバイスで効果的です。
-
推論速度の向上: TensorRTはターゲットハードウェア向けにモデルを最適化するため、GPU、組み込みデバイス、アクセラレーターでの推論速度が向上する可能性があります。
推論速度に関する注意事項
TensorRT INT8にエクスポートしたモデルで最初の数回の推論を実行する際は、前処理、推論、または後処理の時間が通常より長くなることがあります。推論中にimgszを変更した場合にも発生する可能性があります。特に、imgszがエクスポート時に指定した値と異なる場合に該当します(エクスポート時のimgszはTensorRTの「optimal」プロファイルに設定されます)。
YOLOでTensorRT INT8を使用するデメリット#
-
評価指標の低下: 低い精度を使用すると、
mAP、Precision、Recall、またはモデルパフォーマンスの評価に使用されるその他の指標が多少低下する可能性があります。スコアのキャリブレーションを維持するため、Sigmoidレイヤーは高い精度に維持されますが、INT8によって信頼度の値が変化する可能性はあります。そのため、動作しきい値はINT8モデル独自のF1曲線から選択してください。パフォーマンス結果のセクションを参照し、さまざまなデバイスの小規模なサンプルでINT8エクスポートを行った際のmAP50とmAP50-95の違いを比較してください。 -
開発時間の増加: データセットとデバイスに対するINT8キャリブレーションの「最適な」設定を見つけるには、相当なテストが必要になる場合があります。
-
ハードウェア依存性: キャリブレーションとパフォーマンス向上はハードウェアに大きく依存する可能性があり、モデルの重みを移植しにくくなります。
Ultralytics YOLOのTensorRTエクスポートパフォーマンス#
NVIDIA A100#
Ubuntu 22.04.3 LTS、python 3.10.12、ultralytics==8.2.4、tensorrt==8.6.1.post1でテスト
COCOでトレーニングされたこれらのモデルの使用例については、80個の事前学習済みクラスを含む検出ドキュメントをご覧ください。
各テストで事前学習済みの重みyolov8n.engineを使用し、mean(最速)、min、max(最遅)の推論時間を表示
| Precision | 評価テスト | 平均 (ms) | 最小 | 最大 (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | サイズ (ピクセル) |
|---|---|---|---|---|---|---|---|
| FP32 | 推論 | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | 推論 | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | 推論 | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
コンシューマーGPU#
Windows 10.0.19045、python 3.10.9、ultralytics==8.2.4、tensorrt==10.0.0b6でテスト
各テストで事前学習済みの重みyolov8n.engineを使用し、mean(最速)、min、max(最遅)の推論時間を表示
| Precision | 評価テスト | 平均 (ms) | 最小 | 最大 (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | サイズ (ピクセル) |
|---|---|---|---|---|---|---|---|
| FP32 | 推論 | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | 推論 | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | 推論 | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
組み込みデバイス#
JetPack 6.0(L4T 36.3)Ubuntu 22.04.4 LTS、python 3.10.12、ultralytics==8.2.16、tensorrt==10.0.1でテスト
各テストで事前学習済みの重みyolov8n.engineを使用し、mean(最速)、min、max(最遅)の推論時間を表示
| Precision | 評価テスト | 平均 (ms) | 最小 | 最大 (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | サイズ (ピクセル) |
|---|---|---|---|---|---|---|---|
| FP32 | 推論 | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | 推論 | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | 推論 | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
セットアップと設定の詳細については、NVIDIA JetsonでUltralytics YOLOを使用するクイックスタートガイドを参照してください。
セットアップと設定の詳細については、NVIDIA DGX SparkでUltralytics YOLOを使用するクイックスタートガイドを参照してください。
評価方法#
以下のセクションを展開すると、これらのモデルのエクスポート方法とテスト方法を確認できます。
エクスポート設定
エクスポート設定の引数の詳細については、export modeを参照してください。
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)
# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=16)
# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)予測ループ
詳細については、predict modeを参照してください。
import cv2
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
img = cv2.imread("path/to/image.jpg")
for _ in range(100):
result = model.predict(
[img] * 8, # batch=8 of the same image
verbose=False,
device="cuda",
)検証設定
検証設定の引数の詳細については、val modeを参照してください。
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
results = model.val(
data="data.yaml", # COCO, ImageNet, or DOTAv1 for appropriate model task
batch=1,
imgsz=640,
verbose=False,
device="cuda",
)エクスポートした YOLO26 TensorRT モデルのデプロイ#
Ultralytics YOLO26 モデルを TensorRT 形式に正常にエクスポートできたので、これらをデプロイする準備が整いました。さまざまな環境で TensorRT モデルをデプロイするための詳細な手順については、次のリソースをご覧ください。
-
Triton Server で Ultralytics をデプロイする: Ultralytics YOLO モデルで NVIDIA の Triton Inference(旧称 TensorRT Inference)Server を使用する方法を解説したガイドです。
-
NVIDIA TensorRT でディープニューラルネットワークをデプロイする: この記事では、GPU ベースのデプロイプラットフォームにディープニューラルネットワークを効率的にデプロイするために NVIDIA TensorRT を使用する方法を説明します。
-
NVIDIA ベースの PC 向けエンドツーエンド AI: NVIDIA TensorRT デプロイ: このブログ記事では、NVIDIA ベースの PC で AI モデルを最適化およびデプロイするための NVIDIA TensorRT の使用方法を説明します。
-
GitHub Repository for NVIDIA TensorRT: NVIDIA TensorRTのソースコードとドキュメントが含まれている公式のGitHub Repository for NVIDIA TensorRTです。
まとめ#
このガイドでは、Ultralytics YOLO26 モデルを NVIDIA の TensorRT モデル形式に変換する方法を説明しました。この変換手順は YOLO26 モデルの効率と速度を向上させるうえで重要であり、さまざまなデプロイ環境においてモデルをより効果的かつ適切に利用できるようにします。
使用方法の詳細については、TensorRT 公式ドキュメントをご覧ください。
Ultralytics YOLO26 のその他のインテグレーションに関心がある場合は、インテグレーションガイドページで、参考になる豊富なリソースと知見をご覧いただけます。
FAQ#
NVIDIA GPU 推論向けに Ultralytics YOLO26 モデルを最適化された TensorRT 形式へ変換するには、次の手順に従ってください。
-
必要なパッケージをインストールする:
pip install ultralytics -
YOLO26 モデルをエクスポートする:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # creates 'yolo26n.engine' # Run inference model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
詳細については、YOLO26 インストールガイドおよびエクスポートのドキュメントをご覧ください。
-
YOLO26 モデルの最適化に TensorRT を使用すると、次のようなメリットがあります。
- 推論速度の向上: TensorRT はモデルレイヤーを最適化し、精度を大きく損なうことなく推論を高速化するために精度キャリブレーション(INT8 および FP16)を使用します。
- メモリ効率: TensorRT はテンソルメモリを動的に管理し、オーバーヘッドを削減して GPU メモリの利用効率を高めます。
- レイヤーフュージョン: 複数のレイヤーを単一の演算に統合し、計算の複雑さを軽減します。
- カーネルの自動チューニング: 各モデルレイヤーに対して最適化された GPU カーネルを自動的に選択し、最大限のパフォーマンスを実現します。
詳細については、NVIDIA の TensorRT 公式ドキュメントおよびTensorRT の詳細な概要をご覧ください。
はい、INT8 量子化を指定して TensorRT を使用し YOLO26 モデルをエクスポートできます。このプロセスには、学習後量子化 (PTQ) とキャリブレーションが含まれますが、チェックポイントが
quantize=8(量子化認識学習) で学習された場合を除きます。その場合、チェックポイントが保持する範囲はキャリブレーションなしでエクスポートされます。-
INT8 でエクスポートする:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine", batch=8, workspace=4, quantize=8, data="coco.yaml") -
推論を実行する:
from ultralytics import YOLO model = YOLO("yolo26n.engine", task="detect") result = model.predict("https://ultralytics.com/images/bus.jpg")
詳細については、INT8 量子化を使用した TensorRT のエクスポートのセクションをご覧ください。
-
NVIDIA Triton Inference Server への YOLO26 TensorRT モデルのデプロイには、次のリソースを利用できます。
- Triton Server で Ultralytics YOLO26 をデプロイする: Triton Inference Server のセットアップと使用方法を手順ごとに解説しています。
- NVIDIA TensorRT でディープニューラルネットワークをデプロイする: 詳細なデプロイオプションと構成を含む、TensorRT を使用したディープラーニングモデルのデプロイに関する NVIDIA のガイドです。
これらのガイドを活用すると、さまざまなデプロイ環境に YOLO26 モデルを効率的に統合できます。
TensorRT によるパフォーマンス向上の度合いは、使用するハードウェアによって異なります。一般的なベンチマーク結果は次のとおりです。
-
NVIDIA A100:
- FP32 推論: ~0.52 ms / 画像
- FP16 推論: ~0.34 ms / 画像
- INT8 推論: ~0.28 ms / 画像
- INT8 精度では mAP がわずかに低下しますが、速度は大幅に向上します。
-
コンシューマー向け GPU(例: RTX 3080):
- FP32 推論: ~1.06 ms / 画像
- FP16 推論: ~0.62 ms / 画像
- INT8 推論: ~0.52 ms / 画像
さまざまなハードウェア構成の詳細なパフォーマンスベンチマークについては、パフォーマンスのセクションをご覧ください。
TensorRT のパフォーマンスに関するさらに詳しい知見については、Ultralytics ドキュメントおよびパフォーマンス分析レポートをご覧ください。
-