リファレンスソース
高性能エンジン支持体は深い実践的な学習--TensorRT
この記事は、どのような次のTensorRTはいまとめ、ボーエンコミュニティYunqi理解から生じます。
TensorRT説明
名前、ベクトル(すなわちベクトル)と呼ばれる、通常、1次元配列を説明するために始めたTensorRTからは、2次元配列を行列と呼ばれ、その後、高緯度ではマトリックスは、実際には2つの次元テンソルで、テンソルと呼ばれます。CNN {N、C、H、Wの実際の対応であればTensorRTでは、すべてのデータは、最高の四次元アレイから構成されています }。RT、すなわちTensorRTを具体的に展開エンド用に最適化され、ランタイムを表します。
ディープ学習モデルは、通常の訓練(トレーニング)と推論(推測)、2つの嘘の主な違いが含まれています。
- 推論(推論)は、固定ネットワークの重み、および無伝播プロセスを有しています。、メモリの最適化は、したがって、TensorRTない微調整、行うことができる固定サイズの入力と出力と、これは、1)モデルが固定されているため、計算は図を最適化することができるです。
- バッチサイズの推論(推論)がはるかに小さい、スループットが低下し、GPUを駆使する方法はありません。
- 推論(推論)は、低精度の技術を使用することができる一方は貯蔵または重みの中間値に格納されているかどうか、必要な空間モデルを減少させる一方で、計算量を減らすことができます。
- 推論(推論)は、様々なフレームワークを使用することはできません、訓練(トレーニング)の異なるフレームの間に使用することができ、柔軟性とパフォーマンスはトレードオフの関係です。
TensorRTプロセス全体は、エンジンの最適化および実行(実行)、パーサー現在カスタム層管理、C ++ / Pythonのインターフェース、カフェパーサ/ UFF / onnx三種類、即ち、解析モデル(パーサー)、3つのステップに分けることができます。
TensorRT最適化プロセス
次のようにTensorRT行われる最適化を要約することができます。
1.ネットワーク層の数が完了したら、合併は、同じサイズのコンボリューションをしたように、共通の層構造として、統合された。
2.キャンセル連結層、TensorRTが直接行うように設計されていない実装することができます場合は、
3.カーネルは、自動的に適切なを選択し、計算の複雑さのバッチサイズに従って実施、
4つの異なるバッチサイズは、チューニングを行います。
5.ハードウェアエンジンのために最適化。
図GoogleNet最適化プロセスは、まず、ネットワーク層の共通の構造が組み合わされている(CONV +バイアス+ relu = CBR )、 ネットワーク構造の次いで合わせサイズ(CBR + CBR + CBRは大きな=と同じ計算に CBRは?)、 連結を解除層、同時実装の分割方法。この例は一例に過ぎず、TensorRTがよりより最適化され、最適化などと実施のためのハードウェアプラットフォーム用に最適化されたアルゴリズムがあります。
低精度の最適化TensorRT
FP16とINT8最適化をサポートTensorRT、TensorRTビューが指摘するように、サンプルプロジェクトが付属しています後にインストールすることができる最適化の結果や、P100およびV100主支持FP16、P4およびP40の主要な支援INT8などの関連ハードウェアプラットフォームを使用。1080から18年のための最も一般的な用途は、例えば、主支持INT8の最適化は、最適化が必ずしもFP16における想像力の効果を達成していません。
gtx1070よりもはるかに強いgtx1080
二つの精度形式については、FP16はありません追加の入力と結論づけました。INT8は、メインプロセスである定量的モデルを生成するために、キャリブレーションテーブルの必要性を推測します。
- 。どのように入力データセット(500〜1000、すべてのカテゴリ)のキャリブレーションテーブルの代表を生成します
- B.は、キャリブレーションテーブルwriteCalibrationCache readCalibrationCacheローディングドキュメントを使用する方法と、特定の例simpleINT8で見ます。
要約します
時間の訓練、研究者が完全にリソースがトレーニングの大規模な選択をBATCHSIZE利用するためには、最初からモデルを構築するために、より柔軟なフレームワークを使用したい(もちろん、トレーニング効果にこれを証明提起されています)。
しかし、エンジニアが直面している最も重要な問題は、リアルタイムでの時間の展開は、あなたは大きなバッチサイズを使用することはできませんが、固定モデルに対するトレーニングや逆方向伝送勾配を必要としません。
したがって、TensorRT精度を低下させる方法により、ハードウェアのバッチサイズの使用におけるわずかな増加により解析モデルを集約し、最終的に展開する際に、モデル速度推定を高めるために可能な限り最小の損失での計算の複雑さを低減します加速しました。