首頁 > 軟體

AI模型的壓縮與編譯協調設計探討

2021-05-22 22:01:32

近年來,機器學習的研究和發展與日俱新,機器學習被用於各種複雜的場景與任務,但隨之而來是機器學習模型變得更加龐大與複雜。現有邊緣裝置(如智慧手機)的儲存能力與計算能力的不足,使得很多人工智慧應用無法在這些邊緣裝置上達到實時運行的要求,這成為人工智慧產品融入到人們日常生活的一大壁障。為此,工業界每年都會花費數以億計的經費來研發機器學習專用硬體加速器。

晶片製造商英特爾與英偉達(NVIDIA)、AMD等競爭對手以及一些採用ARM技術的競爭對手之間的激烈競爭,使得啟動級晶片進入AI計算市場。如今,全球有不少於100家AI晶片初創公司,有重塑可程式設計邏輯和多核設計的,有開發全新架構的,也有使用神經形態架構等未來技術的,等等。鉅額的風險資金已經投入到這個市場中以支援這些創業公司,也加劇了主要晶片製造商之間的競爭。

人們似乎已經達成了某種共識,那些在邊緣裝置與物聯網裝置上實現了真正智慧的公司將定義計算的未來,並且認為硬體才是真正制約移動AI發展的主要因素。然而,即使有大量的資金注入,目前的成效依然不盡如人意,因為我們尚未看到任何邊緣AI加速裝置的大規模部署。這讓我們不禁思考:硬體加速器是解決當前邊緣AI困境的唯一途徑嗎?事實並非如此。深度學習應用的軟體優化潛力仍未得到充分發掘,一旦找到正確的優化方式,就可以立即在現有數十億個邊緣裝置上實現深度學習應用的實時化,從而釋放一個萬億美元的市場。而使用有效的「壓縮-編譯」協同設計優化就是解決方案之一。

AI模型壓縮

模型壓縮是降低深度學習模型的大小並提高其速度的常用技術。壓縮技術分為量化和剪枝兩類。量化技術通過降低權重和中間計算結果的精度(例如浮點數到短整數)達到降低儲存和加速運算的目的。剪枝技術通過刪除模型中的冗餘權重來降低模型大小和所需的計算量,通常可分為非結構化剪枝和結構化剪枝兩類。

非結構化剪枝允許刪除任意位置的權重,並通常可以達到較高的修剪率(即減少更多的權重)。但是,對於編譯器和程式碼優化,由於計算和記憶體訪問的不規則性,非結構化剪枝會帶來一些挑戰。同樣,對於硬體加速,由於修剪後的模型需要以帶有索引的稀疏矩陣格式儲存,因此它們通常會導致GPU和CPU的運算效能下降。

神經網路的非結構化和結構化剪枝

結構化剪枝可以產生規則的小權重矩陣。上圖展示了兩種代表性的結構化剪枝方案,分別為濾波器剪枝和通道剪枝。由於其結構規則,並且可以與Wino-grad演算法相容,在使用GPU/CPU運算時通常可以獲得較明顯的加速效果,但也會導致一些模型精度的降低。

AI模型編譯

編譯是指從給定的深度學習模型生成可執行程式碼的過程。本質上,編譯是將深度學習中的高階操作對映到基礎硬體支援的低階指令的過程。編譯過程在優化程式碼以有效執行中起著關鍵作用。

壓縮-編譯協同設計

壓縮和編譯是在硬體上擬合深度學習模型以實現有效執行的兩個關鍵步驟。壓縮-編譯協同設計的原理是以手拉手的方式設計深度學習模型的壓縮及其可執行程式碼的編譯。這種協同方法可以有效地優化深度學習模型的大小和速度,還可以大大縮短壓縮過程的調整時間,進而縮短AI產品的開發週期與上市的時間。壓縮-編譯協同設計的作用主要體現在三個層次上:

需求/偏好級別:在此級別上,協同作用是在設計一個元件時考慮另一個元件的偏好或需求。例如,主流處理器通常更喜歡具有某些計算模式(pattern)的程式碼,如果模型壓縮步驟可以考慮該偏好,則可以創建一個可修改的方案,以使編譯步驟有效地工作。

視角/內涵級別:在此級別上,協同作用是在處理其中一個元件的問題時採取另一個元件對該問題的視角或內涵。例如,可組合性或模組化原則在保持程式設計系統和編譯高效且可擴展方面一直髮揮著至關重要的作用。

方法論級別:在此級別上,協同作用是將兩個元件的方法論緊密整合在一起。例如,通過自動生成程式碼以啟用新的深度學習剪枝方案的編譯器框架,可以產生高達180倍的加速。


IT145.com E-mail:sddin#qq.com