TensorRT 乾物まとめ

TensorRT 乾物まとめ
1、TensorRT インストール
2、Pytorch 生成エンジン
3、TRT 推論実戦

1. TensorRT のインストール
1)
DeepStream は Xavier Xavier にインストールされ、TensorRT は DeepStream に含まれています. DeepStream アプリケーションは、ディープ ニューラル ネットワークとその他の複雑な処理タスクをストリーム処理パイプラインに導入し、ビデオやその他のセンサー データの近接性を実現します。時間分析。これらのセンサーから有意義な洞察を抽出することで、運用効率と安全性を向上させる機会が生まれます。たとえば、カメラは現在最も使用されている IoT センサーです。カメラは私たちの家、路上、駐車場、ショッピングモール、倉庫、工場など、あらゆる場所にあります。ビデオ分析の潜在的な用途は膨大です: アクセス制御、紛失防止、自動チェックアウト、監視、セキュリティ、自動検査 (QA)、荷物仕分け (スマート ロジスティクス)、交通管制/エンジニアリング、産業オートメーションなど。
より具体的には、DeepStream アプリケーションは、処理パイプラインを形成するために接続されるモジュール式プラグインのセットです。各プラグインは、TensorRT による推論やマルチストリーム デコードなどの機能ブロックを表します。ハードウェア アクセラレーション プラグインは、基盤となるハードウェア (該当する場合) と対話して、最適なパフォーマンスを提供します。たとえば、デコード プラグインは NVDEC と対話し、推論プラグインは GPU または DLA と対話します。各プラグインは、パイプライン内で必要に応じて何度でもインスタンス化できます。
ここに画像の説明を挿入

2) PC
(1) cuda および cudnn のバージョンを表示
ここに画像の説明を挿入

(2) cuda のバージョンと ubuntu/windows に応じて、リンク https://developer.nvidia.com/nvidia-tensorrt-8x-download からダウンロードする対応するバージョンを選択し、解凍後インストールします。
ここに画像の説明を挿入

Win10の場合は、環境変数にbinディレクトリとlibディレクトリを追加し、コンピュータを再起動してください。
ここに画像の説明を挿入

如果是linux:

ここに画像の説明を挿入

次にソース ~/.bashrc
(3) テスト
ここに画像の説明を挿入

ここに画像の説明を挿入

注: TRT Builder によって生成されたモデル ファイル (プラン ファイル) はクロスプラットフォームではありません。たとえば、サーバーの GPU で生成されたプラン ファイルはボード上で実行できません。これはサーバー上のカードでもあり、クロスアーキテクチャは受け入れられません。Tesla T4 で生成され、P40 では実行できません。同じアーキテクチャのカードが利用可能です。P40 で生成されたカードは P4 でも実行できますが、警告が報告されます。

2. Pytorch がエンジンを生成
ここに画像の説明を挿入

共通ルートは pytorch -> onnx -> Engine/trt/plan で、pytorch は onnx に変換されます(省略)。
Onnx をエンジンに変換するには 2 つの方法があります:
1) コードを使用して記述する
ここに画像の説明を挿入
ここに画像の説明を挿入

いくつかの用語:
Builder (ネットワーク オリジナル データ): モデル構築のエントリ ポイント、ネットワークの tensorRT 内部表現、および実行可能プログラム エンジンはすべて、このオブジェクトのメンバー メソッドによって生成されます BuiderConfig (ネットワーク オリジナル データ オプション): 設定を担当し
ますfp16 モード、in8 モードなどを開始するかどうかなど、モデルのいくつかのパラメーター。
ネットワーク (計算グラフの内容): ネットワークの本体は、API を使用してネットワークを構築する過程で、いくつかのレイヤーを継続的に追加します。 2 つのワークフローでは、パーサーを使用して Onnx ファイルからネットワークをロードするため、SerializedNetwork をレイヤーごとに手動で追加する必要はありません
。 TRT のモデル ネットワークは、実行可能な推論エンジンの生成やシリアル化して保存するために使用できます ファイルとして保存すると、将来読み取って使用するのに便利です エンジン: 推論エンジンはモデル計算の中核であり
、実行可能プログラムのコードセグメントとして理解できます
コンテキスト: GPU の計算に使用されるコンテキスト。CPU 上のプロセス概念プロセスと同様に、これは
実行推論エンジンのメイン バッファー (データ メモリ、ビデオ メモリ関連) に関連しています。推論を実行した後、データを CPU 側から GPU 側に移動する必要があります。計算を行った後、GPU 側からデータを転送し、CPU 側に戻ります。これらの手順には、メモリの適用、コピー、解放が含まれます。
実行: 推論計算を実行するためにコンピューティング コアを呼び出す特定のプロセスは、 CUDA ライブラリまたは Python ライブラリの拡張を使用して完了する必要があります
。余波: まだいくつかの処理が残っています。手動で行う必要がある周辺作業

ビルダーがエンジンを生成するために使用するステップはシリアライズと呼ばれ、エンジンが tensorrt の推論モードで使用されるときの操作はデシリアライズと呼ばれます。シリアライズの目的は主に、モデルを Tensorrt フレームワークに適したものに変換することです。変換されたエンジンは、後の推論のために保存できます。(シリアル化には一定の時間または数分かかることがよくあります。そのため、最初にファイルを保存するエンジンを生成し、推論中に直接呼び出します。通常、さまざまなマシンが対応するエンジン ファイルをローカルで生成する必要があります。ハードウェアまたはライブラリ ファイルの場所が異なる可能性があり、関連する最適化も異なります)。
ここに画像の説明を挿入
ここに画像の説明を挿入

2) trtexec ツールを使用して、
まず trtexec のパスを環境変数に設定します。
ここに画像の説明を挿入

ここに画像の説明を挿入

trtexec  --onnx=onnx的路径  --saveEngine=engine的名字  --fp16/int8/best
--best 参数,相当于 --int8 --fp16 同时开。
一般来说,只开 fp16 可以把速度提一倍并且几乎不损失精度;但是开 --int8 会大大损失精度,速度会比 fp16 快,但不一定能快一倍。
这里不推荐使--int8,因为trtexec校准就象征性做了一下,真想自己部署 int8 模型还得自己写校准。
--useDLACore=0  --allowGPUFallback是将DLA上支持的算子转移到DLA上,如卷积、池化等,对不支持的算子采用GPU回退模式。
--shapes=onnx输入节点名称:1x3xHxW用在动态batch的onnx,例如:
--shapes=0:1x3x512x512,其中0就是onnx的输入节点名称,H为512、W为512。

ここに画像の説明を挿入

生成に成功すると PASSED が表示されます。
ここに画像の説明を挿入

複数の推論を行った後、時間を計測して報告します。多くの時間レポートがあります。エンキュー時間は、GPU タスクがキューに入れられる時間です。H2D レイテンシは、ネットワーク入力データをメイン メモリ ホストからビデオ メモリ デバイスにコピーする時間です。D2H レイテンシは、ネットワーク出力をコピーする時間です。ビデオ メモリからメイン メモリに戻る GPU コンピューティング時間は、実際のネットワーク推論時間です。3. yolox を例とした
実際の TRT 推論

ここに画像の説明を挿入

ここに画像の説明を挿入

次のコマンドを実行します。

./yolox  ../yolox_x_1018.engine  -i  ../../../../assets/cyline_20220607111827.avi

TensorRT 公式ドキュメントで提供されるインスタンス化されたロガー:
ここに画像の説明を挿入
 
 
 

参考文献:
1. https://blog.csdn.net/Tosonw/article/details/104154090
2. https://zhuanlan.zhihu.com/p/502032016
3. https://zhuanlan.zhihu.com/p / 527238167
4. https://zhuanlan.zhihu.com/p/571164208
5. https://zhuanlan.zhihu.com/p/467239946
6. https://blog.csdn.net/qq_36936443/article/details/ 124458745 (このリンクが非常に詳しく説明しています)
7. https://blog.51cto.com/u_11495341/3036153
8. Nvidia tensorrt 公式ドキュメントのリンク https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index 。 html

おすすめ

転載: blog.csdn.net/sinat_41886501/article/details/129057752