YOLO26 モデルの TensorRT エクスポート#
High-performanceな環境でcomputer visionモデルをデプロイする際、速度と効率を最大化するフォーマットが求められることがあります。これは、NVIDIA GPU上でモデルをデプロイする場合に特に当てはまります。
TensorRTエクスポートフォーマットを使用すると、NVIDIAハードウェア上での迅速かつ効率的な推論に向けてUltralytics YOLO26モデルを最適化できます。このガイドでは、変換プロセスの分かりやすい手順を説明し、deep learningプロジェクトでNVIDIAの先進技術を最大限に活用できるようサポートします。
TensorRT#
NVIDIAが開発したTensorRTは、高速な深層学習推論のために設計された高度なソフトウェア開発キット(SDK)です。object detectionのようなリアルタイムアプリケーションに最適です。
このツールキットはディープラーニングモデルを NVIDIA GPU 向けに最適化し、より高速で効率的な動作を実現します。TensorRT モデルは、レイヤー融合、精度調整(INT8 および FP16)、動的なテンソルメモリ管理、カーネルの自動チューニングなどの手法を含む TensorRT 最適化を受けます。ディープラーニングモデルを TensorRT フォーマットに変換することで、開発者は NVIDIA GPU の潜在能力を最大限に引き出すことができます。
TensorRTは、TensorFlow、PyTorch、ONNXなどさまざまなモデルフォーマットとの互換性で知られており、異なるフレームワークからのモデルを統合・最適化するための柔軟なソリューションを開発者に提供します。この汎用性により、多様なハードウェアおよびソフトウェア環境全体で効率的なmodel deploymentが可能になります。
TensorRTは、ビルド時のGPU上でエンジンをプロファイルおよびチューニングします。デプロイ用GPUアーキテクチャに合わせてビルドし、TensorRT/CUDAランタイムを一致させてください。.engineファイルをポータブルなモデルフォーマットとして扱わないでください。エッジデプロイの場合、Ultralytics Platformでは8つのJetsonターゲット選択肢を提供しており、それぞれについて物理的なビルドおよび検証ステータスがドキュメント化されています。または、宛先デバイス上でローカルにエクスポートすることも可能です。
TensorRT モデルの主な特徴#
TensorRT モデルは、高速なディープラーニング推論における効率性と有効性に寄与する一連の主な機能を提供します。
-
精度キャリブレーション: TensorRT は精度キャリブレーションをサポートしており、特定の精度要件に合わせてモデルを微調整できます。これには INT8 や FP16 などの低精度フォーマットのサポートが含まれており、許容可能な精度レベルを維持しながら推論速度をさらに向上させることができます。
-
レイヤー融合 (Layer Fusion): TensorRTの最適化プロセスにはレイヤー融合が含まれており、neural networkの複数のレイヤーが単一の演算にまとめられます。これにより、メモリのアクセスと計算が最小限に抑えられ、計算オーバーヘッドが削減されて推論速度が向上します。
-
動的テンソルメモリ管理: TensorRT は推論中にテンソルメモリの使用量を効率的に管理し、メモリオーバーヘッドを削減してメモリ割り当てを最適化します。その結果、GPU メモリの利用効率が向上します。
-
自動カーネルチューニング: TensorRT は自動カーネルチューニングを適用して、モデルの各レイヤーに最適な GPU カーネルを選択します。この適応的なアプローチにより、モデルは GPU の計算能力を最大限に活用できます。
TensorRT におけるデプロイオプション#
YOLO26 モデルを TensorRT フォーマットにエクスポートするためのコードを確認する前に、TensorRT モデルが通常どこで使用されているかを理解しましょう。
TensorRT はいくつかのデプロイオプションを提供しており、各オプションは統合の容易さ、パフォーマンスの最適化、柔軟性のバランスが異なります。
- TensorFlow内でのデプロイ: この方法では、TensorRTをTensorFlowに統合し、慣れ親しんだTensorFlow環境で最適化されたモデルを実行できるようにします。TF-TRTがこれらを効率的に処理できるため、サポートされているレイヤーとサポートされていないレイヤーが混在するモデルに役立ちます。
-
スタンドアロン TensorRT Runtime API: きめ細かな制御が可能で、パフォーマンスが重要なアプリケーションに最適です。より複雑ですが、サポートされていない演算子のカスタム実装が可能です。
-
NVIDIA Triton Inference Server: さまざまなフレームワークからのモデルをサポートするオプションです。特にクラウドやエッジでの推論に適しており、並行モデル実行やモデル分析などの機能を提供します。
サポートされているタスク#
TensorRTのエクスポートは、すべての7つのUltralyticsタスクをサポートしています。セマンティックセグメンテーションと深度推定は、それらのヘッドを搭載している唯一のファミリであるYOLO26でのみ利用可能です。
YOLO26 モデルの TensorRT へのエクスポート#
YOLO26 モデルを TensorRT フォーマットに変換することで、実行効率を改善し、パフォーマンスを最適化できます。
インストール#
必要なパッケージをインストールするには、以下を実行してください:
# Install the required package for YOLO26
pip install ultralyticsインストールの詳細な手順とベストプラクティスについては、YOLO26 Installation guideをご確認ください。YOLO26に必要なパッケージのインストール中に問題が発生した場合は、Common Issues guideを参照して解決策やヒントを確認してください。
使用方法#
使用方法の説明に入る前に、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です。非推奨となった 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 | False | Non-Maximum Suppression (NMS) を追加します。これは正確で効率的な検出後処理に不可欠です。 |
batch | int | 1 | エクスポートモデルのバッチ推論サイズ、またはpredictモードでエクスポートされたモデルが同時に処理する画像の最大数を指定します。 |
data | str | None | データセットのYAMLへのパス(量子化に必須)です。分類の場合は、データセットディレクトリまたは組み込みのデータセット名を指定します。quantize=8 を指定して省略した場合、Ultralytics はモデルタスクに応じたデフォルトのキャリブレーション用データセットを選択します。 |
fraction | float | 1.0 | INT8量子化キャリブレーションに使用するデータセットの割合を指定します。フルデータセットのサブセットでキャリブレーションを行えるため、実験やリソースが限られている場合に便利です。INT8が有効で指定されていない場合、フルデータセットが使用されます。 |
device | str | None | エクスポートするデバイスを指定します: GPU (device=0)、NVIDIA Jetson用のDLA (device=dla:0またはdevice=dla:1)。 |
TensorRT にエクスポートする際は、CUDA をサポートする GPU を使用するようにしてください。
TensorRT 11.0はDLAをサポートしていません。device=dla:0またはdevice=dla:1にはTensorRT 10.xを使用するか、TensorRT 11.0 GPUエンジンをエクスポートしてください。
エクスポートプロセスの詳細については、Ultralytics documentation page on exporting をご覧ください。
INT8 量子化による TensorRT エクスポート#
INT8精度でTensorRTを使用してUltralytics YOLOモデルをエクスポートすると、学習後量子化(PTQ)が実行されます。TensorRTはPTQにキャリブレーションを使用します。これは、YOLOモデルが代表的な入力データに対して推論処理を行う際に各アクティベーションテンソル内のアクティベーションの分布を測定し、その分布を使用して各テンソルのスケール値を推定するものです。量子化の候補となる各アクティベーションテンソルには、キャリブレーションプロセスによって導出される関連スケールが存在します。
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がより幅広い最適化戦略を探索できるようになり、モデルのパフォーマンスとaccuracyが向上する可能性があります。逆に、workspaceを小さくするとキャリブレーション時間は短縮されますが、最適化戦略が制限され、量子化されたモデルの品質に影響を与える可能性があります。 -
デフォルトは
workspace=Noneであり、TensorRTがメモリを自動的に割り当てられるようにします。手動で設定する場合、キャリブレーションがクラッシュ(警告なしで終了)する場合はこの値を増やす必要がある場合があります。 -
TensorRT は、
workspaceの値がデバイスで使用可能なメモリよりも大きい場合、エクスポート中にUNSUPPORTED_STATEを報告します。これは、workspaceの値を下げるか、Noneに設定する必要があることを意味します。 -
workspaceが最大値に設定されていてキャリブレーションが失敗・クラッシュする場合は、自動割り当てのためにNoneを使用するか、imgszおよびbatchの値を下げてメモリ要件を減らすことを検討してください。 -
注意:INT8 のキャリブレーションは各デバイス固有です。キャリブレーションのために「ハイエンド」GPU を借りると、別のデバイスで推論を実行した際にパフォーマンスが低下する可能性があります。
-
-
batch: 推論で使用される最大バッチサイズ。推論時にはより小さなバッチを使用できますが、指定されたサイズを超えるバッチの推論は受け付けられません。
小さなバッチを使用すると、INT8キャリブレーション中のスケーリングが不正確になる可能性があります。これは、プロセスが確認したデータに基づいて調整を行うためです。小さなバッチでは値の全範囲を捉えきれず、最終的なキャリブレーションに問題が生じる可能性があります。より大きなbatch sizeを使用すると、より代表的なキャリブレーション結果を確実に得ることができます。
NVIDIA による実験では、INT8 量子化キャリブレーションを行う際に、モデルのデータを代表する少なくとも 500 枚のキャリブレーション画像を使用することが推奨されています。これはガイドラインであり、厳格な要件ではありません。ご自身のデータセットで良好なパフォーマンスを達成するために何が必要かを検証する必要があります。TensorRT を使用した INT8 キャリブレーションにはキャリブレーションデータが必要であるため、TensorRT の quantize=8 を使用する際は必ず data 引数を使用し、キャリブレーションに validation の画像を使用する data="my_dataset.yaml" を使用してください。INT8 量子化で TensorRT へエクスポートする際に data の値が渡されない場合、エラーをスローする代わりに、デフォルトで "small" example datasets based on the model task のいずれかが使用されます。
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")- 動的軸を持つエクスポート。明示的に設定されていない場合でも、
quantize=8でエクスポートする際にデフォルトで有効になります。詳細については、export argumentsを参照してください。 - エクスポートされたモデルと INT8 キャリブレーションの最大バッチサイズを 8 に設定します。
- 変換プロセス全体にデバイスを割り当てるのではなく、4 GiB のメモリを割り当てます。
- キャリブレーションにCOCO dataset、具体的にはvalidationに使用される画像(合計5,000枚)を使用します。
キャリブレーションキャッシュ
TensorRTはキャリブレーションの.cacheを生成します。これは同じデータを使用して将来のモデルウェイトのエクスポートを高速化するために再利用できますが、データが大きく異なる場合やbatchの値が大幅に変更された場合は、不十分なキャリブレーションにつながる可能性があります。このような状況では、既存の.cacheの名前を変更して別のディレクトリに移動するか、完全に削除する必要があります。
YOLO と TensorRT INT8 を使用する利点#
-
モデルサイズの縮小: FP32 から INT8 への量子化により、モデルサイズを 4 倍に縮小(ディスクまたはメモリ上で)できるため、ダウンロード時間の短縮、ストレージ要件の低減、モデルデプロイ時のメモリフットプリントの削減につながります。
-
消費電力の低減: INT8 でエクスポートされた YOLO モデルの低精度操作は、特にバッテリー駆動のデバイスにおいて、FP32 モデルと比較して消費電力を抑えられる可能性があります。
-
推論速度の向上: TensorRT はターゲットハードウェアに合わせてモデルを最適化し、GPU、組み込みデバイス、アクセラレータでの推論速度を向上させます。
推論速度に関する注意
TensorRT INT8にエクスポートされたモデルによる最初の数回の推論呼び出しでは、前処理、推論、および/または後処理の時間が通常より長くなることが予想されます。これは、推論中にimgszを変更する場合、特にimgszがエクスポート時に指定されたものと異なる場合(エクスポートのimgszがTensorRTの「最適」プロファイルとして設定されている場合)にも発生する可能性があります。
YOLO と TensorRT INT8 を使用する欠点#
-
評価指標の低下: より低い精度を使用すると、
mAP、Precision、Recall、またはモデルのパフォーマンス評価に使用されるその他の指標が幾分悪化することを意味します。スコアのキャリブレーションを維持するためにシグモイドレイヤーはより高い精度に保たれますが、INT8でも信頼度値がシフトする可能性があるため、INT8モデル自身のF1曲線から動作閾値を選択してください。さまざまなデバイスの小さなサンプルでINT8を用いてエクスポートした際の違いを比較するには、Performance results sectionを参照し、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の事前トレーニング済みクラスを含むこれらのモデルの使用例については、Detection Docs をご覧ください。
事前学習済み重み yolov8n.engine を使用した各テストの mean、min(最速)、および max(最遅)の推論時間
| 適合率 | 評価テスト | 平均 (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(最遅)の推論時間
| 適合率 | 評価テスト | 平均 (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(最遅)の推論時間
| 適合率 | 評価テスト | 平均 (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 Server(旧TensorRT Inference Server)を使用する方法に関するガイド。
-
NVIDIA TensorRTを使用したディープニューラルネットワークのデプロイ: この記事では、NVIDIA TensorRTを使用して、GPUベースのデプロイプラットフォーム上でディープニューラルネットワークを効率的にデプロイする方法を説明します。
-
NVIDIAベースのPC向けエンドツーエンドAI: NVIDIA TensorRTデプロイ: このブログ記事では、NVIDIAベースのPC上でAIモデルを最適化およびデプロイするためのNVIDIA TensorRTの使用方法について説明します。
-
NVIDIA TensorRTのGitHubリポジトリ:: NVIDIA TensorRTのソースコードとドキュメントが含まれる公式GitHubリポジトリです。
要約#
このガイドでは、Ultralytics YOLO26モデルをNVIDIAのTensorRTモデル形式に変換することに焦点を当てました。この変換ステップは、YOLO26モデルの効率と速度を向上させ、多様なデプロイ環境においてより効果的に機能させるために不可欠です。
使用方法の詳細については、TensorRT公式ドキュメントをご覧ください。
その他のUltralytics YOLO26の統合について興味がある場合は、integration guide pageに豊富な情報源とインサイトが掲載されています。
よくある質問 (FAQ)#
Ultralytics YOLO26モデルをNVIDIA GPUでの推論を最適化するために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 Installation guideおよびexport documentationをご覧ください。
-
TensorRTを使用してYOLO26モデルを最適化することには、いくつかの利点があります。
- 推論速度の高速化: TensorRTはモデルのレイヤーを最適化し、精度を大幅に犠牲にすることなく推論を高速化するために精度キャリブレーション(INT8およびFP16)を使用します。
- メモリ効率: TensorRTはテンソルメモリを動的に管理し、オーバーヘッドを削減してGPUメモリの使用率を向上させます。
- レイヤー融合: 複数のレイヤーを単一のオペレーションに統合し、計算の複雑さを軽減します。
- カーネル自動チューニング: モデルの各レイヤーに対して最適化されたGPUカーネルを自動的に選択し、パフォーマンスを最大化します。
詳細を学ぶには、NVIDIAの公式TensorRTドキュメントおよび当社の詳細なTensorRT概要をご覧ください。
はい、YOLO26モデルはTensorRTを使用してINT8量子化でエクスポート可能です。このプロセスには、学習後量子化(PTQ)とキャリブレーションが含まれます。
-
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")
詳細については、exporting TensorRT with INT8 quantization sectionを参照してください。
-
YOLO26 TensorRTモデルをNVIDIA Triton Inference Serverにデプロイするには、以下のリソースを使用できます。
- 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 / 画像
さまざまなハードウェア構成の詳細なパフォーマンスベンチマークは、performance sectionにあります。
TensorRTのパフォーマンスに関するより包括的な知見については、Ultralytics documentationおよび当社のパフォーマンス分析レポートを参照してください。
-