全部產品
Search
文件中心

Elastic GPU Service:什麼是計算最佳化編譯器AIACC-AGSpeed

更新時間:Jun 30, 2024

AIACC-AGSpeed(AIACC 2.0-AIACC Graph Speeding)是阿里雲推出的一個基於PyTorch深度學習架構研發的計算最佳化編譯器,用於最佳化PyTorch深度學習模型在阿里雲GPU異構計算執行個體上的計算效能,相比原始的神龍AI加速引擎AIACC,AIACC-AGSpeed是AIACC 2.0產品的實現,是完全獨立的產品形態,可以實現無感的計算最佳化功能。

AIACC-AGSpeed介紹

AIACC-AGSpeed簡稱為AGSpeed,AGSpeed作為阿里雲自研的AI訓練計算最佳化編譯器,對PyTorch深度學習架構訓練過程中的計算效能進行深度最佳化,具有其顯著的計算效能優勢。

AGSpeed的組件架構圖如下所示:AGSpeed
組件架構說明
編譯器前端AGSpeed編譯器前端整合了由神龍AI訓練效能和加速團隊進行深度最佳化後的TorchDynamo,您無需修改任何模型代碼,AGSpeed前端直接從PyTorch Eager API中抓取計算圖,並將計算圖交給AGSpeed Backend Autotuner處理,Autotuner會自動選擇效能最佳化效果最佳的後端實現,為您提供了最佳的效能體驗。
編譯器後端AGSpeed編譯器後端整合了由神龍AI訓練效能和加速團隊為TorchScript IR研發的IR最佳化Pass,用於啟用更多融合操作來提升效能。另外,AGSpeed後端還整合了由神龍AI訓練效能和加速團隊進行深度最佳化後的NvFuser,相比原生NvFuser具有更強的魯棒性和最佳化效能。

受限情境說明

在AGSpeed編譯器前端,如果使用Dynamic Tensor Shape會觸發Re-capture、Re-optimize、Re-compile動作,可能會導致AGSpeed的計算最佳化效能回退,建議您儘可能使用agspeed.optimize()介面最佳化模型的靜態部分。具體原因和建議如下所示:
說明 靜態指的是輸入Tensor的shape不變,模型在向前傳播過程中計算得到的中間變數的shape也保持不變。

原因

  • 在AGSpeed編譯器前端,如果存在Dynamic Tensor Shape,可能會導致TorchDynamo重新抓取計算圖並且重新執行convert frame,對最佳化效能產生較大影響。
  • 在AGSpeed編譯器後端,如果存在Dynamic Tensor Shape,會導致TorchScript重新specialize graph,並重新執行所有的最佳化Pass。另外,NvFuser後端也有可能會為新的Tensor Shape重新編譯新的kernel,這些都會對效能產生較大影響。

建議

使用agspeed.optimize()介面最佳化模型的靜態部分可以有效避免上述限制。例如,針對目標檢測模型,僅使用agspeed.optimize()最佳化深度學習的backbone,避免封裝檢測頭,因為檢測頭部分計算的中間變數存在shape多變的現象。

聯絡我們

如果您有AI加速AIACC相關的問題或需求,歡迎使用DingTalk搜尋群號33617640加入阿里雲神龍AI加速AIACC外部支援群。(DingTalk通訊用戶端下載地址