すべてのプロダクト
Search
ドキュメントセンター

Elastic GPU Service:AGSpeedとは何ですか?

最終更新日:Aug 01, 2024

AIACC-AGSpeed (AGSpeed) とも呼ばれるAIACC Graph Speedingは、Alibaba Cloudによって開発されたAIトレーニング用の最適化コンパイラです。 これは、Alibaba Cloud GPU高速化コンピューティング最適化インスタンス上のPyTorchモデルのコンピューティングパフォーマンスを最適化するために使用されます。 AGSpeedは、元のAIACCの改良版と見なすことができ、知覚できないコンピューティング最適化を実装できる独立した製品です。

概要

AGSpeedは、Alibaba Cloudによって開発されたAIトレーニング用の社内最適化コンパイラです。 PyTorchモデルのトレーニングシナリオでは、パフォーマンスに大きな利点があります。

AGSpeedのサービスアーキテクチャを次の図に示します。AGSpeed

コンポーネント

説明

フロントエンド

AGSpeedフロントエンドは、AIACCトレーニングパフォーマンスおよびアクセラレーションチームによって最適化されたバージョンのTorchDynamoと統合されています。 これにより、PyTorch Eager APIから直接コンピューティング図を取得し、コードを変更せずにAGSpeed Backend Autotunerで図を処理できます。 Autotunerは、ユースケースに最適なバックエンド実装ソリューションを自動的に選択します。

Backend

バックエンドでは、AGSpeedはTorchScript IRに基づいて開発された社内の中間表現 (IR) 最適化パスプラグインを統合します。 これにより、より多くの融合操作が可能になり、パフォーマンスが向上します。 さらに、AGSpeedはNvFuserの最適化されたバージョンをバックエンドに統合します。 ネイティブNvFuserと比較して、最適化されたNVFuserはより堅牢で、より優れたパフォーマンスを提供します。

制限事項

AGSpeedフロントエンドで動的テンソルシェイプを使用すると、再キャプチャ、再最適化、再コンパイルなどの操作がトリガーされます。 これは、AGSpeedの最適化性能を損なう可能性がある。 モデルの静的部分を最適化するには、agspeed.optimize() を使用することを推奨します。 次のセクションでは、原因と提案について説明します。

説明

静的形状は、Tensorに指定した形状、またはモデルの計算の進行中に推測される中間変数の形状です。 静的形状は変化しないままである。

原因

  • フロントエンドで動的テンソルシェイプを使用すると、TorchDynamoがコンピューティングダイアグラムを繰り返し取得し、フレーム変換操作を実行する可能性があります。 これは、最適化プロセスの効果を大幅に低減する。

  • バックエンドで動的テンソルシェイプを使用する場合、TorchScriptはグラフの特殊化とすべての最適化パスを繰り返し実行します。 さらに、NvFuserは、新しいテンソル形状のために新しいカーネルを再コンパイルすることもあり、これは性能を大幅に低下させる。

提案事項

agspeed.optimize() 操作を使用して、モデルの静的部分を最適化し、上記の結果を効果的に回避できます。 たとえば、モデルのヘッドは、計算プロセス中に動的な形状を招き、パフォーマンスに影響を与える可能性があります。 この場合、agspeed.optimize() を使用して、ヘッドではなくモデルのバックボーンのみを最適化できます。

お問い合わせ

AIACCのサポートが必要な場合は、外部ユーザーのAlibaba Cloud AIACCサポートグループに参加してください (グループID: 33617640) 。 (DingTalkをダウンロード)