CUDA と TensorRT モデルの展開の最適化: 重要な考慮事項と実践的な戦略

CUDA と TensorRT モデルの展開の最適化: 重要な考慮事項と実践的な戦略

この記事は、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 のパフォーマンス パラメータの表です (リリース時の公開情報に基づく)。これらのパフォーマンス数値は理論上のピークコンピューティング能力を表しており、実際のアプリケーションでのパフォーマンスはさまざまな要因によって異なる場合があることに注意してください。

パラメータ

パフォーマンス値

ピーク FP64 (倍精度浮動小数点パフォーマンス)

9.7 テラフロップス

ピーク FP32 (単精度浮動小数点パフォーマンス)

19.5 テラフロップス

ピーク FP16 (半精度浮動小数点パフォーマンス)

312 テラフロップス

テンソルパフォーマンス (FP16)

624トップス

INT8パフォーマンス

1248トップス

INT4 パフォーマンス

2496トップス

以下はJetson Xavier AGX Voltaのパラメータです

パラメータ

Jetson Xavier AGX (Volta)

コアの種類と数量


CUDAコア

512

テンソルコア

64

SMS

8

ピーク値を計算する


FP32

1.4 テラフロップス

FP16

11 テラフロップス

INT8

22トップス

帯域幅

137 GB/秒

頻度

900MHz

Tensor パフォーマンス (FP16):ディープラーニングと AI アプリケーション向けに最適化された Tensor Core の半精度浮動小数点パフォーマンス。

INT8 パフォーマンス:一部のディープラーニング ワークロードで一般的に使用される 8 ビット整数パフォーマンス。

INT4 パフォーマンス:より高いスループットを必要としながら、より低い精度でも許容できるアプリケーション向けの 4 ビット整数パフォーマンス。

このデータは、さまざまな精度とデータ タイプにおける A100 のパフォーマンスを包括的に示します。さまざまなアプリケーションやタスクでは、計算の精度と速度の要件に基づいて、最も適したデータ タイプと操作モードを選択できます。

2. FLOPs

これは混乱しやすいです。これはモデルのサイズの指標にすぎません。以下はYOLOV5とSwin TransformerのFLOPを示しています。

パラメータ/モデル

YOLOv5 (640x640)

スウィントランスフォーマー(224x224)

小さい

YOLOv5s: 約 3.5 GFLOP

Swin Tiny: 約 4.5 GFLOP

中くらい

YOLOv5m: 約6.9GFLOPS

Swin Small: ~8.7 GFLOPs

大きい

YOLOv5l: 約 12.7 GFLOP

Swin ベース: ~17.3 GFLOPs

特大

YOLOv5x: 約 17.4 GFLOP

Swin Large: ~34.5 GFLOPs

  1. モデルサイズと計算の複雑さの関係:
  • 各モデル ファミリ (YOLOv5 または Swin Transformer) では、モデル サイズが大きくなると (極小から特大へ)、計算の複雑さ (FLOP) もそれに応じて増加します。これは、通常、大規模なモデルにはより多くのレイヤーとパラメータがあり、より多くの計算が必要になるため、理解できます。
  1. モデル入力サイズの影響:
  • YOLOv5 の入力サイズは 640x640 ですが、Swin Transformer の入力サイズは 224x224 です。それでも、より小型の Swin Transformer モデルでも、同様の FLOP またはそれ以上の FLOP を実現しています。これは、従来の畳み込みネットワーク アーキテクチャと比較して、Transformer アーキテクチャがいかに計算集約的であるかを強調しています。


  1. さまざまなモデルタイプ:


  • 前述したように、YOLOv5 はオブジェクト検出モデルですが、Swin Transformer は主に画像分類用に設計されています。これら 2 つは異なるタスクに最適化されているため、比較するのは完全に公平ではない可能性があります。それでも、この比較により、さまざまなモデルや構造の計算の複雑さに関する一般的な感覚が得られます。


  1. FLOPとパフォーマンスの関係:


  • FLOP はモデルの計算の複雑さに関する情報を提供しますが、モデルが実際にどれだけ速く、効率的に実行されるかを直接示すものではありません。メモリ アクセス、最適化手法、ハードウェア特性などの他の要因も実際のパフォーマンスに影響します。

  • 同様に、FLOP はモデルの精度に直接関係するわけではありません。場合によっては、適切にトレーニングされ最適化されていれば、小さなモデルでも非常に優れたパフォーマンスを発揮することがあります。

全体として、この表は、異なるスケールでの 2 つの異なるモデル構造の計算の複雑さを視覚的に比較しています。ただし、これらのデータの解釈では、モデルの特定の目的、設計目標、およびその他の関連要因を考慮する必要があります。

3. CUDA コアと Tensor コア

CUDAコア:

  • 定義: CUDA Core は、浮動小数点演算と整数演算を実行するための NVIDIA GPU の基本的なコンピューティング ユニットです。
  • 目的: CUDA コアは主に、グラフィックス レンダリング、物理シミュレーション、その他の数値計算などの一般的なグラフィックスおよびコンピューティング タスクに使用されます。

テンソルコア:

  • 定義: Tensor Core は、ディープラーニングで行列演算を効率的に実行するために NVIDIA の新しいアーキテクチャ (Volta、Turing、Ampere など) の一部に導入された特殊なハードウェア ユニットです。
  • 目的: Tensor コアは、特にニューラル ネットワークのトレーニングと推論の中核となる大規模な行列乗算と加算演算を実行するために、ディープラーニング計算用に特別に設計されています。

つまり、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. ルーフラインモデル

ルーフライン モデルは、計算集約型アプリケーションのパフォーマンスを特徴付けるための視覚化ツールです。これは、開発者がアプリケーションのパフォーマンスのボトルネックを理解し、それを特定のハードウェアの理論上のピークパフォーマンスと比較できるフレームワークを提供します。ルーフライン モデルの主な目的は、アルゴリズムとハードウェアの相互作用に関する洞察を提供し、最適化のためのガイダンスを提供することです。

ルーフライン モデルは基本的に次のようなグラフです。

  • x 軸: 計算とデータ移動の比率。通常は「1 バイトあたりの浮動小数点演算」として表されます。
  • Y 軸: パフォーマンス。通常は「FLOPS」で測定されます。

この図には 2 つの主要な部分があります。

  1. Roof : ハードウェアのパフォーマンス上限を表します。これは 2 つの部分から構成されます。
  • 計算上限: これは通常、FLOPS 単位のピーク計算パフォーマンスです。
  • 帯域幅上限: これは、メイン メモリからコンピューティング ユニットにデータを移動できる最大速度です。
  1. : アプリケーションまたはアルゴリズムのパフォーマンスを表します。その傾きは、メモリ アクセスと浮動小数点計算の比率によって決まります。

開発者は、ルーフライン モデル上のアルゴリズムの位置を観察することで、アルゴリズムが計算能力または帯域幅によって制限されているかどうかを判断し、それに応じて最適化戦略を決定できます。

ケース1: RTX 3080

ケース2: Jetson Xavier AGX Volta

パラメータ

Jetson Xavier AGX (Volta)

コアの種類と数量


CUDAコア

512

テンソルコア

64

SMS

8

ピーク値を計算する


FP32

1.4テラフロップス

FP16

11 テラフロップス

INT8

22トップス

帯域幅

137 GB/秒

頻度

900MHz

この2つの事例の比較からもエッジとサーバーの違いがわかるので、TensorRT・CUDAの使いこなしは非常に重要です。こうしたSDKを使いこなしてお客様のニーズに応えられることは、私たちにとっても仕事に活かせるチャンスです。

5. モデルの展開に関する誤解

モデルのパフォーマンスと FLOP

FLOP(浮動小数点演算)は、モデルの計算の複雑さを測定するためによく使用されます。ただし、モデルのパフォーマンスを完全に説明するには不十分です。 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

<<:  医学物理学におけるAIの応用に関する簡単な分析

>>:  ADAPT: エンドツーエンドの自動運転の説明可能性を徹底的に探求する、理解の夜明け!

ブログ    
ブログ    
ブログ    

推薦する

ディープラーニングの限界を理解していますか?

[[205696]]簡単なコメント: AI、機械学習、ディープラーニングは近年注目されている分野で...

企業チームのスキルは AI 導入の障壁となるのでしょうか?

人工知能は驚くべきことを実現できますが、いくつかの障害にも直面しています。 2021年に3,500人...

クラウドとジェネレーティブ AI の今後の動向

絶えず変化するビジネス環境において、データは驚くべき速度で増加しています。データの急増により、あらゆ...

ニューヨーク市の AI イニシアチブを分析: そこから何を学べるか?

エリック・アダムス市長は最近、ニューヨーク市政府がAI技術の応用を推進する計画を発表した。この計画に...

IDC: 生成型 AI への支出は今後 5 年間で年間 73% 増加し、2027 年には 1,430 億ドルに達する

IDCによると、世界の企業は2023年に160億ドル(ITホーム注:現在は約1169.6億人民元)を...

...

スタンフォードグローバルAIレポート:人材需要は2年間で35倍に増加し、中国のロボット導入は500%増加

先ほど、スタンフォード グローバル AI レポートが正式に発表されました。スタンフォード大学は昨年か...

...

スマートシティにおける低リスクの AI 応用分野 3 つ

スマート シティでは、一部の AI 駆動型システムは統合にコストがかかったり、実装前に複数の規制に準...

...

...

企業がビジネスでAIOpsをどのように活用しているか

AIOps が今日最も人気のある用語の 1 つになったことは間違いありません。厳密に言えば、IT 運...

研究によると、話題が真実か虚偽かに関係なく、AIが書いたマイクロブログは実際の人間よりも説得力があるという。

6月29日、最新の研究により、人工知能によって生成されたツイートは実際の人間が書いたものよりも説得...

フォーブスの分析:深刻な問題により自動運転技術は「寒い冬」を迎える可能性がある

フォーブスによると、コーエン研究所の研究者らは最近、テスラのオートパイロットシステムへのハッキングに...