神經網絡壓縮技術最重要的是設計抽象層次上的發展,遵循軟件算法-硬件架構-軟硬件協同設計的軌跡。從軟件算法角度來看,壓縮深度神經網絡模型一直是AI領域的一個重點研究問題。一方面,用一些新的學習表徵、模型結構和學習方法,生成一個稀疏性極低的緊緻神經網絡模型,降低對計算能力和訪存的需求。另一方面,通過修改已有的神經網絡模型擠壓其稀疏性。方法主要包括以下3種。(1)張量分解算法:通過滿秩分解、SVD分解等方法將張量降秩;(2)結構化剪枝算法:以通道、矩陣等模型結構為粒度減少神經網絡中冗餘權值的數量;(3)固定位寬量化算法:統一降低神經網絡模型權值參數的表達位寬。業界往往通過耦合上述多項算法以實現更高的模型壓縮率。值得一提的是,這些算法可以在GPU等通用處理器上取得明顯的計算性能提升。圖4展示了結構化剪枝算法,以Channel、Filter、Shape等網絡結構為粒度對神經網絡的權重剪枝,保證了剪枝粒度大於GPU並行調度粒度(即線程組寬度),從而有效提升了GPU的執行效率。然而,若要進一步提升壓縮算法的效率,如更細的剪枝粒度、更靈活的位寬設置,就不得不對硬件架構進行深度定製。這不僅增加了架構設計的複雜度,還降低了架構的靈活性,難以在模型的準確率與壓縮率之間取得最佳平衡。

設計抽象層次發展脈絡
從硬件架構角度來看,神經網絡的執行效率與底層架構設計息息相關。DNN專用架構的優化主要針對訪存,包括(1)數據流優化:通過優化DNN計算通路中的數據流,提高數據的可復用性,減少DDR的訪存請求;(2)存儲層次結構優化:根據神經網絡中數據訪問的局部性(尤其是卷積運算深層嵌套的LOOP循環),將加速器中的存儲結構分級,提高神經網絡的訪存速度;(3)存算一體化架構設計:以各種傳統工藝(如SRAM、NorFlash)或新型憶阻器工藝(如FeRAM、ReRAM、PCM和MRAM)製作器件構建存儲陣列,將神經網絡權值參數直接存儲在陣列內部,並以模擬信號的形式並行執行大規模矩陣乘法。以典型的存算一體化硬件架構為例,向量以電壓形式驅動陣列字線(行),利用電壓乘以電導(按照DNN的權值對憶阻器阻值進行編程)等於電流,並且電流在位線(列)自然匯聚相加的電流定律,一次讀操作即可完成向量與矩陣的乘加操作。這種方法不但提高了矩陣乘法的並行度,而且避免了反覆從DDR讀取DNN的權重,進一步提高了架構的能效比。然而,單純從硬件架構中挖掘並行性和數據可復用性,能效比很快就到達極致,性能提升將會遇到瓶頸。

結構化剪枝算法
軟件算法與硬件架構融合,通過更高的靈活性來獲取更高的DNN壓縮率成為了歷史的選擇。軟硬件協同設計主要從以下幾個角度考慮。(1)混合精度量化:使用不同的、混合的數據位寬來表示同一神經網絡中的不同數據,並輔以專用加速器架構設計,以獲取更高的性能收益;(2)非結構化剪枝:刪除DNN中不重要的、冗餘的權重(不一定非要按照某種結構刪除),最大程度地挖掘DNN的稀疏性,通過專用的跳零架構4加速神經網絡的推理過程;(3)硬件導向的DNN架構搜索:分析底層專用架構的特點,設計DNN模型搜索機制,搜索出一個適用於當前架構、執行效率極高的DNN架構(如層數,卷積核大小、通道數及連接,數據位寬等);(4)基於存算一體架構的稀疏方案:存算一體化架構的執行單元通常以陣列的形式組織,非結構化剪枝產生隨機分佈的零,難以通過編碼壓縮部署在陣列上。存儲權重的憶阻器件同時參與計算流,這種操作數與運算器的硬件耦合導致無法實現跳零架構。因此我們主要以規則的行、列以及塊的規則形狀剪枝或量化DNN模型。

存算一體化架構
未來,抽象層次上的軟硬件協同設計將向更深更廣的方向發展。(1)更廣的任務場景,比如刪除冗餘令牌(token)的Transformer加速架構,面向視頻時域上的稀疏性、三維點雲空間稀疏性和圖神經網絡關係稀疏性進行壓縮的軟硬件協同設計。(2)從單芯片的軟硬件協同拓展到異構計算架構和系統的軟硬件優化。比如谷歌的萬億參數的語言模型稀疏。(3)基於模擬運算的存算一體化架構和脈衝神經網絡加速器架構。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/276887.html
微信掃一掃
支付寶掃一掃