網路效能總不好?昇騰AI網路調優專家AOE幫你來“看看”

全球IT資訊發表於2023-02-22

隨著深度學習模型複雜度和資料集規模的增大,計算效率的提升成為不可忽視的問題。然而,演算法網路的多樣性、輸入資料的不確定性以及硬體之間的差異性,使得網路調優耗費巨大成本,即使是經驗豐富的專家,也需要耗費數天的時間。

CANN(Compute Architecture for Neural Networks)是華為針對AI場景推出的異構計算架構,對上支援多種AI框架,對下服務AI處理器與程式設計,發揮承上啟下的關鍵作用,是昇騰AI基礎軟硬體平臺的核心。為了在提升網路效能的同時降低巨大的人工調優成本,CANN推出了自動化網路調優工具AOE(Ascend Optimization Engine),透過構建包含自動調優策略生成、編譯、執行環境驗證的閉環反饋機制,不斷迭代,最終得到最優調優策略,從而在AI硬體上獲得最佳網路效能。以ResNet50推理網路為例,經AOE調優後的網路效能提升100%以上,調優耗時不到30分鐘。

圖片1.png

針對網路模型,AOE分別提供了運算元調優、子圖調優與梯度調優的功能。其中運算元調優,主要針對運算元的排程(Schedule)進行最佳化,從而使得昇騰AI處理器的多級Buffer與計算單元形成高效的流水併發作業流,充分釋放硬體算力;子圖調優,透過智慧化的資料切分策略提升快取利用率,從而大幅提升計算效率;梯度調優主要應用於叢集訓練場景下,透過自動化尋找最優梯度切分策略、降低通訊拖尾時間,從而提升叢集訓練效能。同時,AOE能夠支援多種主流開源框架,在訓練和推理場景下全方位滿足不同開發者的網路效能調優訴求。

圖片2.png

運算元調優,提升計算節點執行效率

1. 強化學習,生成 Vector 運算元最優排程策略

AI處理器在計算過程中需要精心排布才能充分發揮算力,計算元件間的流水排布很大一部分由排程來承載,一個很小的排程操作對映到硬體行為上都可能產生巨大的差異。想要提升網路效能,勢必需要為給定網路在指定裝置上開發一套專屬的排程邏輯。

網路的組成單元是運算元,為運算元執行尋找最優的排程策略是提升網路效能的關鍵。昇騰AI處理器的核心計算單元是AI Core,針對執行在AI Core上的運算元,可以分為Vector與Cube兩類,其中Vector運算元主要負責執行向量運算,Cube運算元主要負責執行矩陣運算。

針對Vector運算元,CANN採用了RL強化學習(Reinforcement Learning)搜尋框架,將運算元排程過程抽象成了基於MCTS蒙特卡洛樹搜尋(Monte Carlo Tree Search)的決策鏈,並模擬人工進行決策,再透過和環境不斷互動得到效能資料,作為反饋值指導下一步決策。透過此方法一步步改善自身行為,最終獲取運算元執行對應的完整最優排程策略。

圖片3.png

經過AOE調優後的Vector運算元,平均效能較調優前可提升10%以上,平均調優時間僅需200s,效率與效能都有較大提升。

2. 遺傳演算法,提高Cube運算元搜尋效率

我們知道在深度學習網路中包含了大量的矩陣乘計算,而這部分計算在昇騰AI處理器中均透過Cube算力來承擔,因此Cube運算元作為重型運算元,在網路中的影響權重較大,所以針對Cube運算元的效能提升會給整個網路的效能帶來較大的收益。

透過強化學習模式的搜尋,我們已經可以做到解放人力進行Vector型別的運算元最佳化,因為Vector運算元的計算Buffer單一,排程演算法可以基於各種Schedule原語為運算元構建完整的排程策略。而Cube運算元涉及多塊片上Buffer之間的資料互動,如果按照和Vector運算元相同的調優方式,可能最終會因為搜尋空間過大導致搜尋效率低下和搜尋策略不佳的結果。

針對Cube運算元,AOE以Schedule模板為基礎,利用GA遺傳演算法(Genetic Algorithm) 透過選擇、交叉、變異等方式對影響最大的Schedule原語引數進行多輪調優,從而得到候選Tiling集,再根據在真實環境編譯執行的效能反饋資料將候選策略進行排序,得到最優策略。

圖片4.png

以卷積運算元為例,若人工調優,需要消耗一個運算元最佳化專家兩天的時間;若使用AOE智慧調優,平均僅需3分鐘即可達到相同甚至更優的效能最佳化效果,極大的節省了人力成本!

子圖調優,獲得更智慧的資料切分

運算元調優已經使得網路效能有了可觀的提升,但AOE並沒有止步於此。AOE在更宏觀的粒度上加入了子圖調優,從而實現更智慧的資料切分。

深度學習模型的計算往往有較大的資料吞吐,資料讀寫往往成為網路效能的瓶頸,因此對於快取記憶體利用率的提升成為計算效率最佳化的關鍵手段。

昇騰AI處理器中包含了快取記憶體以降低外部訪存的頻寬壓力,然而由於特徵圖(Feature Map)和模型引數的資料量巨大,會導致運算元計算過程中的Cache命中率較低,影響整網計算效率。為了更好的提升快取記憶體Cache命中率,AOE引入了子圖調優的概念。

子圖調優,基於運算元切分數學等價原則,根據硬體Cache大小、運算元shape等資訊,將網路模型中的運算元切分成多個運算元,然後編排切分後運算元的執行順序,透過獲取最佳的效能反饋,確定計算圖切分策略和執行順序。這樣,就可以將一次性的資料流計算分解成多次進行執行,在分解後的資料流分支上,資料大小相比之前成倍遞減,進而實現了Cache命中率的顯著提升。

圖片5.png

最終,在運算元調優和子圖調優的共同作用下,使用AOE進行效能調優後,主流推理網路的平均效能提升30%以上。以ResNet50推理網路為例,效能較調優前提升超過100%,整網調優耗時30分鐘以內。

梯度調優,提升叢集訓練效能

大規模叢集訓練場景中,存在著計算節點多、梯度聚合過程複雜、通訊開銷大的痛點。梯度聚合過程和計算過程怎麼更好的一定程度上相互掩蓋,讓整個過程保證較好的線性度,也是效能提升的關鍵問題。為此,AOE引入了梯度調優的功能,透過智慧梯度切分演算法,自動搜尋出最優梯度引數切分方式,為梯度傳輸選擇合適的通訊時機和通訊量,最大限度讓計算和通訊並行,從而將通訊拖尾時間降至最低,促使叢集訓練達到最優效能。

圖片6.png

相對人工調整梯度聚合資料量,自動梯度調優可以將梯度聚合資料量調參時間從數人天縮短至數十分鐘,一舉獲得最優聚合策略,降低人工調參的不確定性。AOE透過調優知識庫記錄模型調優經驗,使得模型聚合策略能夠動態適應不同叢集規模。

經過AOE調優後,主流訓練網路在昇騰AI處理器上執行效能較調優前平均提升了20%以上。以ResNet50訓練網路為例,效能較調優前提升了23%,整網調優耗時2H以內。

寫在最後

昇騰異構計算架構CANN始終致力於提供“開放易用、極致效能”的AI開發體驗,不斷降低AI開發的門檻與成本。CANN提供的昇騰調優引擎AOE克服了傳統調優方法耗時長、泛化性差、維護成本高等影響開發效率和可用性的弊端,為AI開發者提供了更智慧化的效能最佳化手段。

以夢為馬,未來可期,相信透過CANN的持續創新與不斷演進,定將進一步釋放AI硬體的澎湃算力,加速AI應用場景落地,共建智慧世界。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70007680/viewspace-2936481/,如需轉載,請註明出處,否則將追究法律責任。

相關文章