TensorRT チートシート

TensorRT チート チェックリスト

質問 プラン
TensorRT 上で計算結果の精度を確認し、精度が不足している層を見つけて計算グラフを最適化する方法 ポリグラフィーを使用する
さまざまなレイヤーの推論時間を分析し、より時間がかかるレイヤーを見つける方法 nsight システムを通じて実行フェーズのタイムラインを取得し、視覚化します。
エンジンのビルド時間が長すぎます。複数のビルド中に時間を節約するにはどうすればよいですか? タイミング キャッシュの使用
min-opt-max スパンが大きい場合、Dynamic Shape モードのパフォーマンスが低下する 1. 構築時に複数の OptimizationProfile を作成する TensorRT の最適化を容易にするために、各プロファイルの範囲はできるだけ小さくする必要があります 2.
推論時にデータの形状に応じて、対応するプロファイルを選択します 欠点は、メモリ使用量が増加することです。
計算とデータのコピー時間をオーバーラップさせて GPU 使用率を高める方法 MultiStream、ピン留めされたメモリを使用しながら非同期呼び出しに CUDA ストリームと CUDA イベントを使用
エンジンを複数のスレッドで使用できるようにする方法 複数のコンテキストを使用すると、複数のコンテキストが同じエンジンに基づいて独立して推論計算を実行できます。
カーネル呼び出しを最適化し、Launch Bound の発生を減らす方法。
つまり、CPU が関数呼び出しを開始し、GPU が実際にそれを実行するまでにかかる時間が長すぎ、ほとんどの時間が次のようなステップで無駄になります。準備とデータのコピー。
1. Cuda Graph を使用する
2. ほとんどの起動準備を事前に完了する
3. CUDA ワークフローの最適化
一部のレイヤー アルゴリズムでは大きなエラーが発生します。この選択をブロックするにはどうすればよいですか? アルゴリズム セレクターを通じて完了します
1. 最初にプロットグラフなどのツールを使用して、一部のレイヤーの戦術結果が理想的ではないことを確認します
2. アルゴリズム セレクターを通じてこれらのレイヤーをマスクします
3. エンジンを再構築します
モデルの重量を更新したいが、エンジンを再構築したくないですか? 修理を使用する
ビルド/実行時のビデオ メモリの使用量が大きすぎます。削減するにはどうすればよいですか? BuilderConfig では、3 つのライブラリ cuBLAS、cuBLASLt、および cuDNN の演算子代替がデフォルトで有効になっています。TensorRT がカーネルを最適化するとき、最高のパフォーマンスを持つ実装が選択され、それがエンジンに組み込まれます。
1 つ以上のライブラリを手動でブロックすることで、これらのライブラリからの実装用のアルゴリズムの選択を禁止できます。これにより、メモリとビデオ メモリの使用量が節約され、エンジンのビルド時間が短縮されます。欠点は、エンジンのパフォーマンスの低下やビルドの原因となる可能性があることです。失敗
TensorRT の以降のバージョンでは、外部ライブラリから完全に切断されます。

おすすめ

転載: blog.csdn.net/weixin_41817841/article/details/127859247