コンテンツへスキップ

TensorRT YOLO11 モデルのエクスポート

高性能環境でコンピュータビジョンモデルを展開するには、スピードと効率を最大化するフォーマットが必要になることがあります。これは、NVIDIA GPU上でモデルを展開する場合に特に当てはまります。

TensorRT エクスポート・フォーマットを使用することで Ultralytics YOLO11NVIDIA モデルを強化することができます。このガイドでは、変換プロセスの手順をわかりやすく説明し、ディープラーニング・プロジェクトで NVIDIA の高度なテクノロジーを最大限に活用できるようにします。

TensorRT

TensorRT 概要

TensorRTNVIDIA によって開発された、高速ディープラーニング推論用に設計された高度なソフトウェア開発キット(SDK)です。物体検出のようなリアルタイムアプリケーションに適している。

このツールキットは、ディープラーニングモデルをNVIDIA GPU 向けに最適化し、より高速で効率的なオペレーションを実現します。TensorRT モデルはTensorRT 最適化を受けますが、これにはレイヤー融合、精度キャリブレーション(INT8 および FP16)、動的tensor メモリ管理、カーネル自動チューニングなどの技術が含まれます。ディープラーニングモデルをTensorRT 形式に変換することで、開発者はNVIDIA GPUの潜在能力を十分に発揮することができます。

TensorRT は、TensorFlow 、 PyTorchおよびONNX を含む様々なモデル形式との互換性で知られ、開発者に異なるフレームワークのモデルを統合し最適化するための柔軟なソリューションを提供します。この汎用性により、多様なハードウェアおよびソフトウェア環境での効率的なモデル展開が可能になります。

TensorRT モデルの主な特徴

TensorRT モデルは、高速ディープラーニング推論における効率性と有効性に貢献する、さまざまな主要機能を提供する:

  • 精密キャリブレーション:TensorRT は精密キャリブレーションをサポートしており、特定の精度要件に合わせてモデルを微調整することができます。これにはINT8やFP16のような低精度フォーマットのサポートも含まれ、許容可能な精度レベルを維持しながら推論速度をさらに向上させることができます。

  • レイヤー融合:TensorRT 最適化プロセスには、ニューラルネットワークの複数のレイヤーを1つの演算に統合するレイヤー融合が含まれます。これにより計算オーバーヘッドが削減され、メモリアクセスと計算が最小化されるため推論速度が向上します。

TensorRT レイヤー・フュージョン

  • 動的なTensor メモリ管理:TensorRT 推論中のtensor メモリ使用量を効率的に管理し、メモリのオーバーヘッドを減らし、メモリ割り当てを最適化する。その結果、より効率的なGPU メモリ利用が可能になる。

  • 自動カーネルチューニング:TensorRT は自動カーネルチューニングを適用し、モデルの各レイヤーに最適化されたGPU カーネルを選択します。この適応的アプローチは、モデルがGPUの計算能力をフルに活用することを保証します。

配備オプションTensorRT

YOLO11 モデルをTensorRT フォーマットにエクスポートするコードを見る前に、TensorRT モデルが通常どこで使われるのかを理解しよう。

TensorRT にはいくつかの導入オプションがあり、各オプションで統合のしやすさ、パフォーマンスの最適化、柔軟性のバランスが異なっている:

  • TensorFlow 内に配置する: この方法はTensorRT をTensorFlow に統合し、最適化されたモデルを使い慣れたTensorFlow 環境で実行できるようにします。TF-TRTはこれらを効率的に処理できるため、サポートされているレイヤーとサポートされていないレイヤーが混在するモデルに便利です。

TensorRT 概要

  • スタンドアロンTensorRT ランタイムAPI:きめ細かい制御が可能で、パフォーマンスを重視するアプリケーションに最適。より複雑ですが、サポートされていない演算子のカスタム実装が可能です。

  • NVIDIA Triton 推論サーバー:様々なフレームワークのモデルをサポートするオプション。特にクラウドやエッジ推論に適しており、モデルの同時実行やモデル分析などの機能を提供する。

YOLO11 モデルのエクスポートTensorRT

YOLO11 モデルをTensorRT フォーマットに変換することで、実行効率を改善し、パフォーマンスを最適化することができます。

インストール

必要なパッケージをインストールするには、以下を実行する:

インストール

# Install the required package for YOLO11
pip install ultralytics

インストールプロセスに関する詳しい説明とベストプラクティスについては、YOLO11 インストールガイドをご覧ください。YOLO11 に必要なパッケージをインストールする際に、何らかの問題が発生した場合は、解決策やヒントについて、よくある問題ガイドを参照してください。

使用方法

使い方の説明に入る前に、 Ultralytics が提供するYOLO11 モデルのラインナップをご確認ください。これは、あなたのプロジェクトの要件に最も適したモデルを選択するのに役立ちます。

使用方法

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to TensorRT format
model.export(format="engine")  # creates 'yolo11n.engine'

# Load the exported TensorRT model
tensorrt_model = YOLO("yolo11n.engine")

# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TensorRT format
yolo export model=yolo11n.pt format=engine # creates 'yolo11n.engine''

# Run inference with the exported model
yolo predict model=yolo11n.engine source='https://ultralytics.com/images/bus.jpg'

エクスポートの引数

議論 タイプ デフォルト 説明
format str 'engine' エクスポートされたモデルのターゲットフォーマットで、さまざまな展開環境との互換性を定義します。
imgsz int または tuple 640 モデル入力に必要な画像サイズ。正方形画像の場合は整数,正方形画像の場合はタプルになります. (height, width) 具体的な寸法については
half bool False FP16(半精度)量子化を有効にし、モデルサイズを縮小し、サポートされているハードウェアでの推論を高速化する可能性があります。
int8 bool False INT8量子化を有効にし、モデルをさらに圧縮し、主にエッジデバイスのために、最小限の精度損失で推論を高速化する。
dynamic bool False ダイナミックな入力サイズを可能にし、さまざまな画像サイズに柔軟に対応。
simplify bool True でモデルグラフを簡略化する。 onnxslimパフォーマンスと互換性を向上させる可能性がある。
workspace float または None None TensorRT 、メモリ使用量とパフォーマンスのバランスをとるために、ワークスペースの最大サイズをGiB単位で設定する。 None TensorRT 、デバイスの最大値まで自動で割り当てられる。
nms bool False 正確で効率的な検出の後処理に不可欠なNMS(Non-Maximum Suppression)を追加。
batch int 1 エクスポートモデルのバッチ推論サイズ、またはエクスポートされたモデルが同時に処理する画像の最大数を指定します。 predict モードだ。
data str 'coco8.yaml' への道 データセット 設定ファイル(デフォルト: coco8.yaml)、量子化に不可欠である。

エクスポートプロセスの詳細については、Ultralytics ドキュメントのエクスポートに関するページをご覧ください。

INT8 量子化によるTensorRT のエクスポート

INT8精度の TensorRT を使用してUltralytics YOLO モデルをエクスポートすると、ポストトレーニング量子化(PTQ)が実行されます。TensorRT はPTQのためにキャリブレーションを使用します。これは、YOLO モデルが代表的な入力データに対して推論を処理する際に、各アクティベーションtensor 内のアクティベーションの分布を測定し、その分布を使用して各tensor のスケール値を推定します。量子化の候補となる各活性化tensor は、キャリブレーションプロセスによって推測される関連スケールを持つ。

暗黙的に量子化されたネットワークを処理するとき、TensorRT はレイヤーの実行時間を最適化するためにINT8を臨機応変に使用する。あるレイヤがINT8で高速に動作し、そのデータ入出力に量子化スケールが割り当てられている場合、INT8精度のカーネルがそのレイヤに割り当てられる。そうでない場合、TensorRT 、そのレイヤの実行時間が速くなる方に基づいて、カーネルにFP32またはFP16のいずれかの精度を選択する。

チップ

較正結果はデバイスによって異なる可能性があるため、TensorRT モデルウェイトを配備に使用するデバイスと同じものを INT8 精度でエクスポートするために使用することが重要です。

INT8エクスポートの設定

を使用する際に提供される引数です。 輸出 Ultralytics YOLO モデルの場合 大いに はエクスポートされたモデルのパフォーマンスに影響します。また、利用可能なデバイスリソースに基づいて選択する必要がありますが、デフォルトの引数 べきである ほとんどの場合 Ampere (または新しい)NVIDIA ディスクリートGPU.使用される校正アルゴリズムは "ENTROPY_CALIBRATION_2" オプションの詳細については、こちらをご覧ください。 TensorRT 開発者ガイドUltralytics テストによると "ENTROPY_CALIBRATION_2" が最良の選択であり、輸出はこのアルゴリズムを使うことが確定している。

  • workspace :モデルの重みを変換する際のデバイスメモリの割り当てサイズ(GiB単位)を制御します。

    • を調整する。 workspace 校正のニーズとリソースの利用可能性に応じて、値を設定してください。より大きな workspace キャリブレーションにかかる時間は長くなるかもしれないが、TensorRT 、より幅広い最適化戦術を検討することができるようになり、モデルのパフォーマンスを向上させる可能性がある。 精度.逆に workspace は較正時間を短縮できるが、最適化戦略が制限され、量子化モデルの品質に影響を与える可能性がある。

    • デフォルトは workspace=NoneTensorRT 手動で設定する場合、キャリブレーションがクラッシュ(警告なしに終了)する場合は、この値を増やす必要があるかもしれません。

    • TensorRT 報告する UNSUPPORTED_STATE の値が workspace の値は、デバイスが利用可能なメモリよりも大きい。 workspace に設定する必要がある。 None.

    • もし workspace が最大値に設定され、較正が失敗/クラッシュする場合は、以下の使用を検討してください。 None の値を小さくすることで、自動アロケーションが可能になる。 imgsz そして batch を使用することで、必要なメモリを削減することができる。

    • INT8のキャリブレーションは各デバイスに固有であることを忘れないでください。キャリブレーションのために "ハイエンド"GPU を借用すると、推論を他のデバイスで実行したときにパフォーマンスが低下する可能性があります。

  • batch :推論に使用される最大バッチサイズ。推論中はより小さなバッチを使用することができるが、推論は指定されたバッチより大きなバッチは受け付けない。

キャリブレーション中、2回 batch 提供されたサイズが使用される。小バッチの使用は、較正時に不正確なスケーリングにつながる可能性があります。これは、プロセスが見たデータに基づいて調整するためです。小ロットの場合、値の全範囲を把握できない可能性があり、最終的な較正に問題が生じるため batch サイズは自動的に2倍になる。もし バッチサイズ が指定されている batch=1校正は batch=1 * 2 較正のスケーリング誤差を減らす。

NVIDIA の実験によると、INT8量子化キャリブレーションでは、モデルのデータを代表するキャリブレーション画像を少なくとも500枚使用することを推奨しています。これはガイドラインであり ハードあなたのデータセットで何が必要かを試してみる必要がある TensorRT 、INT8の較正には較正データが必要ですので、必ず data 引数 int8=True TensorRT 、使用する。 data="my_dataset.yaml"の画像を使用する。 バリデーション で校正する。に値が渡されない場合 data INT8量子化でTensorRT 。 モデルタスクに基づく "小さな "サンプルデータセット エラーをスローしない。

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(
    format="engine",
    dynamic=True,  
    batch=8,  
    workspace=4,  
    int8=True,
    data="coco.yaml",  
)

# Load the exported TensorRT INT8 model
model = YOLO("yolov8n.engine", task="detect")

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolo11n.pt format=engine batch=8 workspace=4 int8=True data=coco.yaml # creates 'yolov8n.engine''

# Run inference with the exported TensorRT quantized model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'
キャリブレーション・キャッシュ

TensorRT を生成します。 .cache これは、同じデータを使った将来のモデル重みのエクスポートを高速化するために再利用することができるが、データが大きく異なる場合や、次のような場合は、キャリブレーションがうまくいかない可能性がある。 batch 値が大幅に変更される。このような状況では、既存の .cache は名前を変えて別のディレクトリに移動するか、完全に削除する必要がある。

TensorRT INT8 でYOLO を使用する利点

  • モデルサイズの縮小:FP32からINT8への量子化により、(ディスク上またはメモリ上の)モデルサイズが4分の1になり、ダウンロード時間が短縮されます。

  • 消費電力の低減:INT8でエクスポートされたYOLO モデルの精度を下げた演算は、FP32モデルに比べて消費電力を抑えることができ、特にバッテリー駆動のデバイスに適しています。

  • 推論速度の向上: TensorRT は、ターゲットとなるハードウェアに合わせてモデルを最適化するため、GPU、組み込みデバイス、アクセラレータでの推論速度が向上する可能性があります。

推論速度に関するメモ

TensorRT INT8 にエクスポートされたモデルを使った最初の数回の推論呼び出しは、前処理、推論、後処理に通常より長い時間がかかることが予想されます。これは imgsz 推論中、特に imgsz は、エクスポート時に指定されたものと同じではありません(エクスポート imgsz はTensorRT 「最適」プロファイルとして設定されている)。

TensorRT INT8でYOLO 。

  • 評価指標の低下: より低い精度を使用すると mAP, Precision, Recall または モデルの性能を評価するために使用されるその他の指標 は多少悪くなる可能性が高い。詳細は パフォーマンス結果セクション の違いを比較する。 mAP50 そして mAP50-95 様々なデバイスの小さなサンプルでINT8でエクスポートした場合。

  • 開発時間の増加:データセットとデバイスに応じたINT8較正の「最適」設定を見つけるには、かなりの量のテストが必要です。

  • ハードウェア依存性:キャリブレーションや性能向上はハードウェアに大きく依存する可能性があり、モデルの重み付けは移植性が低い。

Ultralytics YOLO TensorRT 輸出実績

NVIDIA A100

パフォーマンス

Ubuntu 22.04.3 LTSでテスト、 python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

80の訓練済みクラスを含むCOCO上で訓練されたこれらのモデルの使用例については、Detection Docsを参照してください。

推論時間 mean, min (最速)、そして max (最も遅い) 各テストで、事前に訓練された重みを使用する。 yolov8n.engine

精密 評価試験 平均
(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

COCOで訓練されたこれらのモデルの使用例については、Segmentation Docsを参照してください。

推論時間 mean, min (最速)、そして max (最も遅い) 各テストで、事前に訓練された重みを使用する。 yolov8n-seg.engine

精密 評価試験 平均
(ms)
最小|最大
(ms)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(M)
mAPval
50-95(M)
batch サイズ
(ピクセル)
FP32 予測する 0.62 0.61 | 0.68 8 640
FP32 COCOval 0.63 0.52 0.36 0.49 0.31 1 640
FP16 予測する 0.40 0.39 | 0.44 8 640
FP16 COCOval 0.43 0.52 0.36 0.49 0.30 1 640
INT8 予測する 0.34 0.33 | 0.37 8 640
INT8 COCOval 0.36 0.46 0.32 0.43 0.27 1 640

ImageNetで訓練されたこれらのモデルの使用例については、Classification Docsを参照してください。

推論時間 mean, min (最速)、そして max (最も遅い) 各テストで、事前に訓練された重みを使用する。 yolov8n-cls.engine

精密 評価試験 平均
(ms)
最小|最大
(ms)
トップ トップ5 batch サイズ
(ピクセル)
FP32 予測する 0.26 0.25 | 0.28 8 640
FP32 イメージネットバル 0.26 0.35 0.61 1 640
FP16 予測する 0.18 0.17 | 0.19 8 640
FP16 イメージネットバル 0.18 0.35 0.61 1 640
INT8 予測する 0.16 0.15 | 0.57 8 640
INT8 イメージネットバル 0.15 0.32 0.59 1 640

COCOで訓練されたこれらのモデルの使用例については、Pose Estimation Docsを参照してください。

推論時間 mean, min (最速)、そして max (最も遅い) 各テストで、事前に訓練された重みを使用する。 yolov8n-pose.engine

精密 評価試験 平均
(ms)
最小|最大
(ms)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(P)
mAPval
50-95(P)
batch サイズ
(ピクセル)
FP32 予測する 0.54 0.53 | 0.58 8 640
FP32 COCOval 0.55 0.91 0.69 0.80 0.51 1 640
FP16 予測する 0.37 0.35 | 0.41 8 640
FP16 COCOval 0.36 0.91 0.69 0.80 0.51 1 640
INT8 予測する 0.29 0.28 | 0.33 8 640
INT8 COCOval 0.30 0.90 0.68 0.78 0.47 1 640

DOTAv1で訓練されたこれらのモデルの使用例については、Oriented Detection Docsを参照のこと。

推論時間 mean, min (最速)、そして max (最も遅い) 各テストで、事前に訓練された重みを使用する。 yolov8n-obb.engine

精密 評価試験 平均
(ms)
最小|最大
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch サイズ
(ピクセル)
FP32 予測する 0.52 0.51 | 0.59 8 640
FP32 DOTAv1val 0.76 0.50 0.36 1 640
FP16 予測する 0.34 0.33 | 0.42 8 640
FP16 DOTAv1val 0.59 0.50 0.36 1 640
INT8 予測する 0.29 0.28 | 0.33 8 640
INT8 DOTAv1val 0.32 0.45 0.32 1 640

コンシューマー向けGPU

検出性能(COCO)

Windows 10.0.19045でテスト、 python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6

推論時間 mean, min (最速)、そして max (最も遅い) 各テストで、事前に訓練された重みを使用する。 yolov8n.engine

精密 評価試験 平均
(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

Windows 10.0.22631でテスト、 python 3.11.9, ultralytics==8.2.4, tensorrt==10.0.1

推論時間 mean, min (最速)、そして max (最も遅い) 各テストで、事前に訓練された重みを使用する。 yolov8n.engine

精密 評価試験 平均
(ms)
最小|最大
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch サイズ
(ピクセル)
FP32 予測する 1.76 1.69 | 1.87 8 640
FP32 COCOval 1.94 0.52 0.37 1 640
FP16 予測する 0.86 0.75 | 1.00 8 640
FP16 COCOval 1.43 0.52 0.37 1 640
INT8 予測する 0.80 0.75 | 1.00 8 640
INT8 COCOval 1.35 0.47 0.33 1 640

Pop!_OS 22.04 LTSでテスト、 python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

推論時間 mean, min (最速)、そして max (最も遅い) 各テストで、事前に訓練された重みを使用する。 yolov8n.engine

精密 評価試験 平均
(ms)
最小|最大
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch サイズ
(ピクセル)
FP32 予測する 2.84 2.84 | 2.85 8 640
FP32 COCOval 2.94 0.52 0.37 1 640
FP16 予測する 1.09 1.09 | 1.10 8 640
FP16 COCOval 1.20 0.52 0.37 1 640
INT8 予測する 0.75 0.74 | 0.75 8 640
INT8 COCOval 0.76 0.47 0.33 1 640

組み込み機器

検出性能(COCO)

JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTSでテスト、 python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1

推論時間 mean, min (最速)、そして max (最も遅い) 各テストで、事前に訓練された重みを使用する。 yolov8n.engine

精密 評価試験 平均
(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 JetsonwithUltralytics YOLO のクイックスタートガイドで、セットアップと設定の詳細をご覧ください。

評価方法

これらのモデルがどのようにエクスポートされ、テストされたかについては、以下のセクションを参照してください。

エクスポート設定

エクスポート設定引数の詳細については、エクスポート・モードを参照してください。

from ultralytics import YOLO

model = YOLO("yolov8n.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, half=True)

# 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, int8=True, data="coco8.yaml"
)
予測ループ

詳細は予測モードを参照。

import cv2

from ultralytics import YOLO

model = YOLO("yolov8n.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 モード を参照してください。

from ultralytics import YOLO

model = YOLO("yolov8n.engine")
results = model.val(
    data="data.yaml",  # COCO, ImageNet, or DOTAv1 for appropriate model task
    batch=1,
    imgsz=640,
    verbose=False,
    device="cuda",
)

エクスポートされたYOLO11 TensorRT モデルの展開

Ultralytics YOLO11 モデルをTensorRT フォーマットにエクスポートすることに成功しました。様々な設定におけるTensorRT モデルのデプロイに関する詳しい説明は、以下のリソースをご覧ください:

概要

このガイドでは、Ultralytics YOLO11 のモデルを、NVIDIA'TensorRT のモデルフォーマットに変換することに焦点を当てた。この変換ステップは、YOLO11 モデルの効率と速度を向上させ、より効果的で多様な展開環境に適したものにするために非常に重要です。

使い方の詳細については、TensorRT の公式ドキュメントをご覧ください。

その他のUltralytics YOLO11 の統合についてご興味がおありでしたら、統合ガイドのページで、有益なリソースや洞察を幅広くご紹介しています。

よくあるご質問

YOLO11 モデルをTensorRT フォーマットに変換する方法は?

Ultralytics YOLO11 のモデルをTensorRT 形式に変換し、最適化されたNVIDIA GPU 推論を行うには、以下の手順に従う:

  1. 必要なパッケージをインストールする

    pip install ultralytics
    
  2. YOLO11 モデルをエクスポートします:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n.pt")
    model.export(format="engine")  # creates 'yolo11n.engine'
    
    # Run inference
    model = YOLO("yolo11n.engine")
    results = model("https://ultralytics.com/images/bus.jpg")
    

詳細については、YOLO11 インストールガイドおよびエクスポートドキュメントをご覧ください。

YOLO11 モデルにTensorRT を使用する利点は何ですか?

YOLO11 モデルを最適化するためにTensorRT を使用すると、いくつかの利点がある:

  • 推論速度の高速化:TensorRT はモデルレイヤーを最適化し、高精度キャリブレーション(INT8とFP16)を使用することで、精度を大幅に犠牲にすることなく推論速度を高速化します。
  • メモリ効率:TensorRT はtensor のメモリを動的に管理し、オーバーヘッドを削減し、GPU のメモリ使用率を向上させる。
  • レイヤー融合:複数のレイヤーを1つの演算に統合し、計算の複雑さを軽減する。
  • カーネルの自動チューニング:各モデルレイヤーに最適化されたGPU カーネルを自動的に選択し、最高のパフォーマンスを保証します。

詳しくは、TensorRT の詳細機能をご覧ください。また、TensorRT の概要セクションもご覧ください。

TensorRT 、YOLO11 モデルでINT8量子化は使えますか?

はい、TensorRT 、INT8量子化を使ってYOLO11 モデルをエクスポートすることができます。このプロセスには、学習後の量子化(PTQ)とキャリブレーションが含まれます:

  1. INT8でエクスポート

    from ultralytics import YOLO
    
    model = YOLO("yolov8n.pt")
    model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml")
    
  2. 推論を実行する

    from ultralytics import YOLO
    
    model = YOLO("yolov8n.engine", task="detect")
    result = model.predict("https://ultralytics.com/images/bus.jpg")
    

詳細については、INT8量子化でTensorRT

YOLO11 TensorRT モデルをNVIDIA Triton 推論サーバーにデプロイするには?

YOLO11 TensorRT モデルをNVIDIA Triton Inference Server にデプロイするには、以下のリソースを使用する:

これらのガイドは、様々な配備環境においてYOLOv8 モデルを効率的に統合するのに役立ちます。

TensorRT にエクスポートされたYOLOv8 モデルで確認されたパフォーマンスの向上とは?

TensorRT によるパフォーマンスの向上は、使用するハードウェアによって異なります。以下は代表的なベンチマークです:

  • NVIDIA A100:

    • FP32推論:~0.52ミリ秒/画像
    • FP16推論:~0.34ミリ秒/画像
    • INT8推論:~0.28ミリ秒/画像
    • INT8精度ではmAPがわずかに減少しているが、スピードは大幅に向上している。
  • コンシューマー向けGPU(例:RTX 3080)

    • FP32推論:~1.06ミリ秒/画像
    • FP16推論:~0.62ミリ秒/画像
    • INT8推論:~0.52ミリ秒/画像

さまざまなハードウェア構成の詳細な性能ベンチマークは、性能のセクションで見ることができる。

TensorRT のパフォーマンスに関するより包括的な洞察については、Ultralytics のドキュメントおよびパフォーマンス分析レポートを参照してください。

📅作成:1年前 ✏️更新 3日前

コメント