この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転載したものです。転載については出典元にお問い合わせください。 私の個人的な理解モデルの展開と最適化は、現在多くの自動運転企業が人材とリソースを投入して開発しているモジュールです。特定のチップにモデルを効率的に展開する方法が重要です。ディープラーニング モデルの導入と最適化は、いくつかの重要な考慮事項を伴う包括的なプロセスです。 TensorRT などのツールはモデルに対して強力な最適化を提供しますが、その適用範囲は無制限ではなく、開発者が手動で調整したり補足したりする必要がある場合もあります。さらに、CUDA コアまたは Tensor コアの選択、前処理と後処理の効率の考慮、さらにパフォーマンス分析とベンチマークを行うことはすべて、モデルが特定のハードウェア上で最適なパフォーマンスを実現できるようにするための重要なステップです。今日は、モデル展開に関する重要な考慮事項と実践的な戦略についてお話しします。 すべてのコンテンツ:すべて完了! TensorRT + CUDA アクセラレーション チュートリアルに基づく CNN/Transformer/Detection/BEV モデルの 4 つの主要なデプロイメント コード! 1. 失敗作まず、FLOPS と TOPS の意味を説明しましょう。 FLOPS : Floating Point Operations Per Second の略で、1 秒あたりの浮動小数点演算回数を意味します。これは、コンピューターまたはコンピューティング デバイスが 1 秒間に実行する浮動小数点演算の数を測定するものです。通常、プロセッサの計算パフォーマンスを示すために使用されます。たとえば、1 TFLOPS は 1 秒あたり 1 兆回の浮動小数点演算を意味します。 TOPS : Tera Operations Per Second の略で、1 秒あたりの操作数を意味します。これは FLOPS に似ていますが、通常は浮動小数点演算だけでなく、整数または混合型の計算能力を測定するために使用されます。 以下は、NVIDIA A100 のパフォーマンス パラメータの表です (リリース時の公開情報に基づく)。これらのパフォーマンス数値は理論上のピークコンピューティング能力を表しており、実際のアプリケーションでのパフォーマンスはさまざまな要因によって異なる場合があることに注意してください。
以下はJetson Xavier AGX Voltaのパラメータです
Tensor パフォーマンス (FP16):ディープラーニングと AI アプリケーション向けに最適化された Tensor Core の半精度浮動小数点パフォーマンス。 INT8 パフォーマンス:一部のディープラーニング ワークロードで一般的に使用される 8 ビット整数パフォーマンス。 INT4 パフォーマンス:より高いスループットを必要としながら、より低い精度でも許容できるアプリケーション向けの 4 ビット整数パフォーマンス。 このデータは、さまざまな精度とデータ タイプにおける A100 のパフォーマンスを包括的に示します。さまざまなアプリケーションやタスクでは、計算の精度と速度の要件に基づいて、最も適したデータ タイプと操作モードを選択できます。 2. FLOPsこれは混乱しやすいです。これはモデルのサイズの指標にすぎません。以下はYOLOV5とSwin TransformerのFLOPを示しています。
全体として、この表は、異なるスケールでの 2 つの異なるモデル構造の計算の複雑さを視覚的に比較しています。ただし、これらのデータの解釈では、モデルの特定の目的、設計目標、およびその他の関連要因を考慮する必要があります。 3. CUDA コアと Tensor コアCUDAコア:
テンソルコア:
つまり、CUDA Core は GPU の一般的なコンピューティングの主力であり、さまざまなグラフィックスおよびコンピューティング タスクを処理します。一方、Tensor Core はディープラーニング タスク用に特別に設計された効率的なコンピューティング ユニットです。 A100 には 6912 個の CUDA コアと 432 個の Tensor コアしかありません。 Tensor コアの数は少ないものの、特定のディープラーニング タスクの処理には非常に効率的です。 設計目的:CUDA コアは、グラフィックス、物理シミュレーション、一般的な数値計算など、さまざまなタスクを処理できる汎用コンピューティング ユニットです。 Tensor コアは、ディープラーニングの計算、特に行列の乗算と累積演算用に特別に設計されています。パフォーマンス: 単一の CUDA コアは、基本的な浮動小数点演算と整数演算を実行できます。各 Tensor コアは、行列の乗算および累算演算の小さなブロック (たとえば、4x4 または 8x8) を 1 サイクルで処理できます。これにより、ディープラーニング操作を処理する際に非常に効率的になります。使用シナリオ: グラフィック レンダリングや一般的なコンピューティング タスクを実行する場合、CUDA コアが主に使用されます。ディープラーニングのトレーニングや推論タスクを実行する場合、特に cuDNN や TensorRT などのライブラリを使用する場合は、最大の計算効率を実現するために Tensor コアが積極的に活用されます。 A100 を例にすると、NVIDIA が CUDA コアと Tensor コアを組み合わせることで、効率的なディープラーニングと一般的なコンピューティング パフォーマンスを提供する方法が明確にわかります。 4. ルーフラインモデルルーフライン モデルは、計算集約型アプリケーションのパフォーマンスを特徴付けるための視覚化ツールです。これは、開発者がアプリケーションのパフォーマンスのボトルネックを理解し、それを特定のハードウェアの理論上のピークパフォーマンスと比較できるフレームワークを提供します。ルーフライン モデルの主な目的は、アルゴリズムとハードウェアの相互作用に関する洞察を提供し、最適化のためのガイダンスを提供することです。 ルーフライン モデルは基本的に次のようなグラフです。
この図には 2 つの主要な部分があります。
開発者は、ルーフライン モデル上のアルゴリズムの位置を観察することで、アルゴリズムが計算能力または帯域幅によって制限されているかどうかを判断し、それに応じて最適化戦略を決定できます。 ケース1: RTX 3080ケース2: Jetson Xavier AGX Volta
この2つの事例の比較からもエッジとサーバーの違いがわかるので、TensorRT・CUDAの使いこなしは非常に重要です。こうしたSDKを使いこなしてお客様のニーズに応えられることは、私たちにとっても仕事に活かせるチャンスです。 5. モデルの展開に関する誤解モデルのパフォーマンスと FLOPFLOP(浮動小数点演算)は、モデルの計算の複雑さを測定するためによく使用されます。ただし、モデルのパフォーマンスを完全に説明するには不十分です。 FLOP はモデルの計算負荷を反映しますが、実際の推論速度と効率は他の要因によっても影響されます。たとえば、メモリへのアクセス、データの変換と再形成、コンピューティングとは関係ないがディープ ニューラル ネットワークの操作に関連するその他の部分などです。さらに、特に軽量モデルの場合、前処理や後処理などの手順にもかなりの時間がかかる場合があります。 TensorRT の制限TensorRT は、ディープラーニング モデルを最適化して推論パフォーマンスを向上させることができる、NVIDIA が提供する強力なツールです。ただし、その最適化機能には制限がないわけではありません。たとえば、1x1 conv や depthwise conv などの計算密度が低い操作は、TensorRT では再構築できない可能性があります。一部の操作では、GPU を最適化できない場合、TensorRT は CPU 上で実行することを選択する場合があります。しかし、開発者は手動でコードを調整して、特定の CPU 操作を GPU にオフロードすることができます。さらに、TensorRT でまだサポートされていない演算子に遭遇した場合は、カスタム プラグインを作成して補足することができます。 mobileNet には、1x1 conv、depthwise conv 演算子が登場します。Transformer の最適化では、最後の FC レイヤーをこれらの 2 つの演算子に置き換えます。これにより、パラメータの数は減りますが、計算密度も減ります。 CUDA Core と Tensor Core を選択する際の考慮事項NVIDIA の最新 GPU には通常、CUDA コアと Tensor コアが搭載されています。 Tensor コアはディープラーニング操作用に特別に最適化されていますが、TensorRT では必ずしも常に使用されるわけではありません。実際、TensorRT はカーネル自動チューニングを通じて最適なカーネル実行モードを選択するため、場合によっては INT8 のパフォーマンスが FP16 よりも悪くなる可能性があります。 Tensor Core を効果的に利用するには、テンソルの次元が 8 または 16 の倍数であることを確認する必要がある場合があります。 前処理と後処理にかかる時間オーバーヘッドディープラーニングの応用においては、前処理(画像調整や正規化など)と後処理(結果解釈など)が欠かせないステップです。ただし、軽量モデルの場合、これらの処理手順は実際の DNN 推論よりも時間がかかる可能性があります。一部の前処理および後処理手順は、ロジックが複雑なため、GPU 並列化には適していません。しかし、解決策としては、このロジックの並列部分を GPU に移動するか、CPU 上で Halide などの最適化されたライブラリを使用することです。これにより、ぼかしやスケーリングなどの特定のタスクの効率が向上します。 YOLO の後処理を行うときは、速度感を出すために GPU に任せることが多いのですが、これは必須ではありません。まず、GPU にはソート機能がありません。次に、しきい値を使用して YOLO シリーズの大部分をフィルタリングすると、残りの bbox は非常に小さくなり、必ずしも速度が大幅に速くなるわけではありません。 TRT がスムーズに実行されても終わりではありません。TensorRT 推論エンジンの作成と使用は、最適化プロセスの始まりにすぎません。モデルが最適なパフォーマンスを実現することを保証するために、開発者はモデルのベンチマークとプロファイルをさらに行う必要があります。 NVIDIA は、nsys、nvprof、dlprof、Nsight などのツールを提供しており、開発者がパフォーマンスのボトルネックを正確に特定し、さらなる最適化の機会を見つけ、不要なメモリ アクセスを識別するのに役立ちます。 オリジナルリンク: https://mp.weixin.qq.com/s/OikQ9BUZi6_be8ul6L0F6g |
>>: ADAPT: エンドツーエンドの自動運転の説明可能性を徹底的に探求する、理解の夜明け!
最近、CVPR2022の各競技の結果が次々と発表されました。ByteDanceの知能創造AIプラット...
ロボットの電源を切ったり、人工知能アルゴリズムをオフにしたりするのは悲しいですか? まだそうではあり...
「大丈夫ですよ。」 15年間工場で働いてきた「古い」労働者として、今日は人工知能についての私の見解を...
[[375650]]生物学分野における人工知能の応用は飛躍的に進歩しています。創薬、診断開発からヘル...
クラウド コンピューティング サービス プロバイダーの Rackspace Technology が...
滴滴出行は5月5日、スタンフォード人工知能研究所との提携を発表した。両者は人工知能のホットな話題につ...
論文リンク: https://arxiv.org/abs/1706.10207概要: この論文では、...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
以下は、テンセント研究所法律研究センター副所長兼主任研究員である蔡雄山氏の講演の記録です。多くの場合...
最近、世界一の富豪イーロン・マスク氏がTEDディレクターのクリス・アンダーソン氏が主催する独占インタ...
[[173621]]編集者注:現地時間10月9日、米国大統領選挙の2人の候補者による第2回公開討論会...
10月10日のニュース、AIに陸上を歩けるロボットを設計するように頼んだら何秒かかるでしょうか?答え...
[[425432]]この記事は、ソリューションの選択から再現の試みなど、軽量な人間の姿勢推定モデルを...
コンピュータービジョンとは何ですか?プロフェッショナルすぎると、やる気をなくしてしまうのでしょうか?...