TensorRT YOLOv8 モデルのエクスポート
高性能環境でコンピュータビジョンモデルを展開するには、スピードと効率を最大化するフォーマットが必要になることがあります。これは、NVIDIA GPU上でモデルを展開する場合に特に当てはまります。
TensorRT エクスポート・フォーマットを使用することで Ultralytics YOLOv8NVIDIA モデルを強化することができます。このガイドでは、変換プロセスの手順をわかりやすく説明し、ディープラーニング・プロジェクトで NVIDIA の高度なテクノロジーを最大限に活用できるようにします。
TensorRT
TensorRTNVIDIA 、高速ディープラーニング推論用に設計された先進的なソフトウェア開発キット(SDK)である。物体検出のようなリアルタイムアプリケーションに適している。
このツールキットは、ディープラーニングモデルをNVIDIA GPU 向けに最適化し、より高速で効率的なオペレーションを実現します。TensorRT モデルはTensorRT 最適化を受けますが、これにはレイヤー融合、精度キャリブレーション(INT8 および FP16)、動的tensor メモリ管理、カーネル自動チューニングなどの技術が含まれます。ディープラーニングモデルをTensorRT 形式に変換することで、開発者はNVIDIA GPUの潜在能力を十分に発揮することができます。
TensorRT は、TensorFlow 、 PyTorchおよびONNX を含む様々なモデル形式との互換性で知られ、開発者に異なるフレームワークのモデルを統合し最適化するための柔軟なソリューションを提供します。この汎用性により、多様なハードウェアおよびソフトウェア環境での効率的なモデル展開が可能になります。
TensorRT モデルの主な特徴
TensorRT モデルは、高速ディープラーニング推論における効率性と有効性に貢献する、さまざまな主要機能を提供する:
精密キャリブレーション:TensorRT は精密キャリブレーションをサポートしており、特定の精度要件に合わせてモデルを微調整することができます。これにはINT8やFP16のような低精度フォーマットのサポートも含まれ、許容可能な精度レベルを維持しながら推論速度をさらに向上させることができます。
レイヤー融合:TensorRT 最適化プロセスには、ニューラルネットワークの複数のレイヤーを1つの演算に統合するレイヤー融合が含まれます。これにより計算オーバーヘッドが削減され、メモリアクセスと計算が最小化されるため推論速度が向上します。
動的なTensor メモリ管理:TensorRT 推論中のtensor メモリ使用量を効率的に管理し、メモリのオーバーヘッドを減らし、メモリ割り当てを最適化する。その結果、より効率的なGPU メモリ利用が可能になる。
自動カーネル・チューニング:TensorRT は、モデルの各層に最も最適化されたGPU カーネルを選択する自動カーネル・チューニングを適用する。この適応的アプローチは、モデルがGPU の計算能力をフルに活用することを保証する。
配備オプションTensorRT
YOLOv8 モデルをTensorRT フォーマットにエクスポートするコードを見る前に、TensorRT モデルが通常どこで使われるのかを理解しよう。
TensorRT にはいくつかの導入オプションがあり、各オプションで統合のしやすさ、パフォーマンスの最適化、柔軟性のバランスが異なっている:
- TensorFlow 内に配置する: この方法はTensorRT をTensorFlow に統合し、最適化されたモデルを使い慣れたTensorFlow 環境で実行できるようにします。TF-TRTはこれらを効率的に処理できるため、サポートされているレイヤーとサポートされていないレイヤーが混在するモデルに便利です。
スタンドアロンTensorRT ランタイムAPI:きめ細かい制御が可能で、パフォーマンスを重視するアプリケーションに最適。より複雑ですが、サポートされていない演算子のカスタム実装が可能です。
NVIDIA Triton 推論サーバー:様々なフレームワークのモデルをサポートするオプション。特にクラウドやエッジ推論に適しており、モデルの同時実行やモデル分析などの機能を提供する。
YOLOv8 モデルのエクスポートTensorRT
YOLOv8 モデルをTensorRT フォーマットに変換することで、実行効率を改善し、パフォーマンスを最適化することができます。
インストール
必要なパッケージをインストールするには
インストールプロセスに関する詳細な説明とベストプラクティスについては、YOLOv8 インストールガイドをご覧ください。YOLOv8 に必要なパッケージをインストールする際に、何らかの問題が発生した場合は、解決策やヒントについて、よくある問題ガイドを参照してください。
使用方法
使い方の説明に入る前に、 Ultralytics が提供するYOLOv8 モデルのラインナップをご確認ください。これは、あなたのプロジェクトの要件に最も適したモデルを選択するのに役立ちます。
使用方法
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO("yolov8n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolov8n.engine'
# Load the exported TensorRT model
tensorrt_model = YOLO("yolov8n.engine")
# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")
エクスポートプロセスの詳細については、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=4
(GiB)、キャリブレーションがクラッシュする(警告なしに終了する)場合は、この値を増やす必要があるかもしれません。TensorRT 報告する
UNSUPPORTED_STATE
の値がworkspace
の値は、デバイスが利用可能なメモリよりも大きい。workspace
を下げるべきである。もし
workspace
が最大値に設定され、較正が失敗/クラッシュする場合は、以下の値を下げることを検討してください。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, # (1)!
batch=8, # (2)!
workspace=4, # (3)!
int8=True,
data="coco.yaml", # (4)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolov8n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
- でエクスポートする場合、デフォルトで有効になります。
int8=True
明示的に設定されていない場合でも参照 輸出引数 をご覧ください。 - で較正するエクスポートモデルの最大バッチサイズを 8 に設定します。
batch = 2 * 8
校正時のスケーリングエラーを避けるため。 - 変換処理のためにデバイス全体を割り当てる代わりに、4GiBのメモリを割り当てる。
- COCOデータセットを校正に使用、特に検証に使用した画像(合計5,000枚)。
# Export a YOLOv8n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolov8n.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"
)
予測ループ
詳細は予測モードを参照。
バリデーション設定
参照 val
モード を参照してください。
エクスポートされたYOLOv8 TensorRT モデルの展開
Ultralytics YOLOv8 モデルをTensorRT フォーマットにエクスポートすることに成功しました。様々な設定におけるTensorRT モデルのデプロイに関する詳しい説明は、以下のリソースをご覧ください:
Triton サーバーでUltralytics を展開する:NVIDIA のTriton Inference (旧TensorRT Inference) Server を、特にUltralytics YOLO モデルで使用する方法についてのガイドです。
ディープ・ニューラル・ネットワークの展開NVIDIA TensorRT:この記事では、NVIDIA TensorRT を使って、GPU- ベースのデプロイメント・プラットフォームにディープ・ニューラル・ネットワークを効率的にデプロイする方法を説明する。
NVIDIA ベースPCのためのエンド・ツー・エンドAI:NVIDIA TensorRT 展開:このブログ記事では、NVIDIA-based PC上でのAIモデルの最適化とデプロイのためのNVIDIA TensorRT の使用について説明します。
GitHub Repository forNVIDIA TensorRT ::NVIDIA TensorRT のソースコードとドキュメントを含む公式 GitHub リポジトリです。
概要
このガイドでは、Ultralytics YOLOv8 のモデルを、NVIDIA'TensorRT のモデルフォーマットに変換することに焦点を当てた。この変換ステップは、YOLOv8 モデルの効率とスピードを改善し、より効果的で多様な展開環境に適したものにするために非常に重要です。
使い方の詳細については、TensorRT 公式ドキュメントをご覧ください。
その他のUltralytics YOLOv8 の統合についてご興味がおありでしたら、統合ガイドのページで、有益なリソースや洞察を幅広くご紹介しています。
よくあるご質問
YOLOv8 モデルをTensorRT フォーマットに変換する方法は?
Ultralytics YOLOv8 のモデルをTensorRT 形式に変換し、最適化されたNVIDIA GPU 推論を行うには、以下の手順に従う:
必要なパッケージをインストールする:
YOLOv8 モデルをエクスポートします:
詳細については、YOLOv8 インストールガイドおよびエクスポートドキュメントをご覧ください。
YOLOv8 モデルにTensorRT を使用する利点は何ですか?
YOLOv8 モデルを最適化するためにTensorRT を使用すると、いくつかの利点がある:
- 推論速度の高速化:TensorRT はモデルレイヤーを最適化し、高精度キャリブレーション(INT8とFP16)を使用することで、精度を大幅に犠牲にすることなく推論速度を高速化します。
- メモリ効率:TensorRT はtensor のメモリを動的に管理し、オーバーヘッドを削減し、GPU のメモリ使用率を向上させる。
- レイヤー融合:複数のレイヤーを1つの演算に統合し、計算の複雑さを軽減する。
- カーネルの自動チューニング:各モデルレイヤーに最適化されたGPU カーネルを自動的に選択し、最高のパフォーマンスを保証します。
詳しくは、TensorRT の詳細機能をご覧ください。また、TensorRT の概要セクションもご覧ください。
TensorRT 、YOLOv8 モデルでINT8量子化を使用できますか?
はい、TensorRT 、INT8量子化を使ってYOLOv8 モデルをエクスポートすることができます。このプロセスには、学習後の量子化(PTQ)とキャリブレーションが含まれます:
INT8でエクスポート:
推論を実行する:
詳細については、INT8量子化でTensorRT 。
YOLOv8 TensorRT モデルをNVIDIA Triton 推論サーバーにデプロイするには?
YOLOv8 TensorRT モデルをNVIDIA Triton Inference Server にデプロイするには、以下のリソースを使用する:
- Triton サーバでUltralytics YOLOv8 を展開する。:Triton Inference Server のセットアップと使用に関するステップバイステップのガイダンス。
- NVIDIA Triton 推論サーバ・ドキュメント:NVIDIA の公式ドキュメントで、詳細な導入オプションと設定をご覧いただけます。
これらのガイドは、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 のドキュメントおよびパフォーマンス分析レポートを参照してください。