YOLO26モデルのTensorRTエクスポート#
高性能環境にコンピュータービジョンモデルをデプロイするには、速度と効率を最大化するフォーマットが必要となる場合があります。NVIDIA GPUにモデルをデプロイする場合は特に重要です。
TensorRTエクスポート形式を使用すると、Ultralytics YOLO26モデルを最適化し、NVIDIAハードウェア上で高速かつ効率的に推論できます。このガイドでは、変換プロセスのわかりやすい手順を説明し、ディープラーニングプロジェクトで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の最適化プロセスでは、ニューラルネットワークの複数のレイヤーを1つの演算にまとめるレイヤー融合が行われます。これにより、メモリアクセスと演算を最小限に抑え、計算オーバーヘッドを削減して推論速度を向上させます。
-
動的テンソルメモリ管理: 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形式はエクスポート、予測、検証モードに対応しています。推論と検証にはNVIDIA GPUが必要です。モデルをエクスポートしてから、エクスポート済みモデルを読み込み、推論または精度の検証を行ってください。
from ultralytics import YOLO
# YOLO26モデルを読み込みます
model = YOLO("yolo26n.pt")
# モデルをTensorRT形式にエクスポートします
model.export(format="engine") # 'yolo26n.engine'を作成しますfrom ultralytics import YOLO
# エクスポートしたTensorRTモデルを読み込む
model = YOLO("yolo26n.engine")
# 推論を実行
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# エクスポートしたTensorRTモデルを読み込む
model = YOLO("yolo26n.engine")
# COCO8データセットで精度を検証します
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 | raw出力(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はThorを含むJetPackに対応していません。お使いのJetPackリリースがサポートするTensorRT 10.xランタイムを使用してください。device=dla:0またはdevice=dla:1では、NVIDIAによるとTensorRT 10.7がDLAに対応する最後のリリースです。TensorRT 11.0、11.1、11.2はDLAに対応していません。
エクスポートプロセスの詳細については、Ultralyticsのエクスポートに関するドキュメントページをご覧ください。
INT8量子化でのTensorRTエクスポート#
TensorRTを使用してUltralytics YOLOモデルをINT8精度でエクスポートすると、トレーニング後量子化(PTQ)が実行されます。PTQではTensorRTがキャリブレーションを使用します。代表的な入力データで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モデルのエクスポート時に指定する引数は、エクスポート後のモデルのパフォーマンスに大きく影響します。使用可能なデバイスリソースに応じて選択する必要がありますが、デフォルトの引数は、ほとんどのAmpere(またはそれ以降)のNVIDIAディスクリートGPUで機能するはずです。GPUへのエクスポートでは"MINMAX_CALIBRATION"、NVIDIA JetsonのDLAへのエクスポートでは"ENTROPY_CALIBRATION_2"のキャリブレーションアルゴリズムが使用されます。利用可能なオプションの詳細は、TensorRT開発者ガイドをご覧ください。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: 推論に使用する最大バッチサイズです。dynamic=Trueを指定すると、推論時により小さいバッチを使用できますが、指定したサイズを超えるバッチは受け付けられません。
小さいバッチを使用すると、INT8キャリブレーション時のスケーリングが不正確になる場合があります。これは、キャリブレーションが処理対象のデータに基づいて調整されるためです。小さいバッチでは値の全範囲を捉えられず、最終的なキャリブレーションに問題が生じる可能性があります。より大きなバッチサイズを使用すると、より代表性の高いキャリブレーション結果が得られます。
NVIDIAは実験に基づき、INT8量子化のキャリブレーションには、モデルのデータを代表する画像を少なくとも500枚使用することを推奨しています。これはガイドラインであり、必須要件ではありません。データセットで十分なパフォーマンスを得るために必要な条件は、実験して確認してください。TensorRTでのINT8キャリブレーションにはキャリブレーションデータが必要なため、TensorRT向けにquantize=8でエクスポートする際は、quantize=8(トレーニング後量子化)でトレーニングされていないチェックポイントには、必ずdata引数を使用してください。また、検証用の画像をキャリブレーションに使用するdata="my_dataset.yaml"を指定してください。quantize=8でトレーニングされたチェックポイントではキャリブレーションが省略されるため、dataは指定しないでください。TensorRTへのINT8量子化エクスポートでdataの値を指定しない場合、エラーを出す代わりに、モデルのタスクに応じた「小規模」サンプルデータセットのいずれかがデフォルトで使用されます。
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)!
)
# エクスポートしたTensorRT INT8モデルを読み込む
model = YOLO("yolo26n.engine", task="detect")
# 推論を実行
result = model.predict("https://ultralytics.com/images/bus.jpg")- 動的軸でエクスポートされ、入力サイズは32ピクセルからエクスポート時の
imgszの2倍まで受け付けます。明示的に設定しない限り、dynamicはFalseのままです。詳しくはエクスポート引数をご覧ください。 - エクスポートするモデルとINT8キャリブレーションの最大バッチサイズを8に設定します。
- 変換プロセスでデバイス全体のメモリを割り当てる代わりに、4 GiBのメモリを割り当てます。
- キャリブレーションにはCOCOデータセットを使用します。具体的には、検証に使用する画像(合計5,000枚)を使用します。
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、またはモデルのパフォーマンス評価に使用されるその他の指標が多少悪化する可能性があります。スコアのキャリブレーションを維持するためにシグモイド層は高精度のままですが、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個の事前学習済みクラスが含まれています。COCOについてもご確認ください。
各テストでは、事前学習済みの重みyolov8n.engineを使用し、mean、min(最速)、max(最遅)の推論時間を表示しています。
| 適合率 | 評価テスト | 平均 (ms) | 最小 | 最大 (ms) | mAP検証 50(B) | mAP検証 50-95(B) | batch | サイズ (ピクセル) |
|---|---|---|---|---|---|---|---|
| FP32 | 推論 | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCO検証 | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | 推論 | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCO検証 | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | 推論 | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCO検証 | 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(最遅)の推論時間を表示しています。
| 適合率 | 評価テスト | 平均 (ms) | 最小 | 最大 (ms) | mAP検証 50(B) | mAP検証 50-95(B) | batch | サイズ (ピクセル) |
|---|---|---|---|---|---|---|---|
| FP32 | 推論 | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCO検証 | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | 推論 | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCO検証 | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | 推論 | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCO検証 | 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(最遅)の推論時間を表示しています。
| 適合率 | 評価テスト | 平均 (ms) | 最小 | 最大 (ms) | mAP検証 50(B) | mAP検証 50-95(B) | batch | サイズ (ピクセル) |
|---|---|---|---|---|---|---|---|
| FP32 | 推論 | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCO検証 | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | 推論 | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCO検証 | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | 推論 | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCO検証 | 2.32 | 0.46 | 0.32 | 1 | 640 |
セットアップと設定の詳細については、Ultralytics YOLOでNVIDIA Jetsonを使用するクイックスタートガイドをご覧ください。
セットアップと設定の詳細については、Ultralytics YOLOでNVIDIA DGX Sparkを使用するクイックスタートガイドをご覧ください。
評価方法#
以下のセクションを展開すると、これらのモデルのエクスポート方法とテスト方法を確認できます。
エクスポート設定
エクスポート設定の引数について詳しくは、エクスポートモードをご覧ください。
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)
# キャリブレーション用`data`を使用したTensorRT INT8(つまり、モデルのタスクに応じたCOCO、ImageNet、またはDOTAv1)
out = model.export(
format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)予測ループ
詳しくは、予測モードをご覧ください。
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で処理
verbose=False,
device="cuda",
)検証設定
検証設定の引数について詳しくは、valモードをご覧ください。
from ultralytics import YOLO
model = YOLO("yolo26n.engine")
results = model.val(
data="data.yaml", # モデルのタスクに応じたCOCO、ImageNet、またはDOTAv1
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の活用方法を説明するブログ記事です。
-
NVIDIA TensorRTのGitHubリポジトリ: NVIDIA TensorRTのソースコードとドキュメントを含む公式GitHubリポジトリです。
概要#
このガイドでは、Ultralytics YOLO26モデルをNVIDIAのTensorRTモデル形式に変換する方法を説明しました。この変換手順はYOLO26モデルの効率と速度を向上させ、多様なデプロイ環境に適した、より効果的なモデルにするうえで重要です。
使用方法の詳細については、TensorRT公式ドキュメントをご覧ください。
Ultralytics YOLO26とのその他の統合に関心がある方は、統合ガイドのページで豊富な参考資料と情報をご覧いただけます。
よくある質問#
NVIDIA GPUで推論を最適化するために、Ultralytics YOLO26モデルをTensorRT形式に変換するには、次の手順に従ってください。
-
必要なパッケージをインストールする:
pip install ultralytics -
YOLO26モデルをエクスポートする:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # 'yolo26n.engine'を作成します # 推論を実行 model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
詳しくは、YOLO26インストールガイドとエクスポートのドキュメントをご覧ください。
-
YOLO26モデルの最適化にTensorRTを使用すると、いくつかのメリットがあります。
- 推論速度の向上: TensorRTはモデルのレイヤーを最適化し、精度を大きく損なうことなく推論を高速化するために、精度キャリブレーション(INT8およびFP16)を使用します。
- メモリ効率: TensorRTはテンソルメモリを動的に管理し、オーバーヘッドを削減してGPUメモリの利用率を高めます。
- レイヤー融合: 複数のレイヤーを単一の演算にまとめ、計算の複雑さを軽減します。
- カーネルの自動チューニング: モデルの各レイヤーに最適化されたGPUカーネルを自動的に選択し、最大限のパフォーマンスを実現します。
詳しくは、NVIDIAのTensorRT公式ドキュメントとTensorRTの詳細解説をご覧ください。
はい、TensorRTを使用してYOLO26モデルをINT8量子化でエクスポートできます。このプロセスでは、学習後量子化(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によるパフォーマンスの向上度合いは、使用するモデルとハードウェアによって異なります。各精度による相対的な向上を示す、YOLOv8nを使用して測定した一般的なベンチマークを以下に示します。
-
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のドキュメントとパフォーマンス分析レポートをご覧ください。
-