中興通訊股份有限公司 余金清 章 偉 賀小龍
本文提出一種對神經網絡權重進行編排方法,根據量化的權重值的稀疏特性,通過只編排權重非0值,從而減少權重帶寬;同時,提出一種硬件實現(xiàn)架構,結合編排好的權重,能夠有效減少卷積網絡的乘法運算,特別是在網絡權重稀疏情況下,可以進一步減少卷積計算,從而提升神經網絡處理能力。
近些年來,人工智能技術在在全世界范圍內得到了迅猛的發(fā)展,與此同時神經網絡的規(guī)模不斷增長,典型的神經網絡動輒幾十層甚至上百層,計算量不斷的增加造成推理需要的時間也需來越長。
但實際應用中,在如此高的運算量中并不是所有的計算都是有效計算,特別是對于算法經過定點化或是稀疏化后,出現(xiàn)的權重為零的點,實際運行中,是不需要計算的。因此,神經網絡的硬件加速器利用權重的稀疏特性減少計算量,且在此基礎上進一步降低處理時間,提高效能,目前業(yè)界都在關注的重點技術問題。
本設計采用兩種方法來提升神經網絡設計:
(1)權重編排:通過離線方式,對提前訓練好的權重( weights)進行特別編排,去掉值為0的權重,完成對非0權重的編排。
(2)計算加速:卷積網絡加速器,完成神經網絡稀疏計算(只計算非0權重)提升網絡處理能力。
權重編排,通過編譯器對每個積核中點化后的權重值重新編排,編排后的權重變?yōu)橹甘痉?映射表的形式。如圖1所示,通過代運算將一個R*S*CH大小的卷積核切分成多個R*S*CH的卷積核(其中R為卷積核的列寬,S為卷積核的行寬,CH為子卷積核的通道數,假設層的卷積核通道數尾C,存在C<=CH),并對每個子卷積核中定點化后的權重值重新編排,編排后的權重變?yōu)橹甘痉?映射表的形式。
權重編排的實施方式,把相同規(guī)律的權重編排(即分類,對于8bit定點處理,如將1,2,4,8分為一類,3,6,12,24分為一類)在一起,先排正數權重,之后排負數權重。使用本文的方式,可以使原來需要R*S*C次乘加作,而編排后最多只需要R*S*C+256次加法操作和256次乘法操作同時,當卷積計算的累加和小于偏置時,可以提前停止卷積運算。
圖1 權重編排流程
根據激活函數 ReLU(Rectified Linear Unit)特性,設置提前停止功能,正數權重和負數權重分開組合,正數權重類型排在向量前面,負數排在后面。
將離線編排好的權重數據,提前存儲在存儲單元中。
(1)對于權重為0的數據,由于其運算結果也為0,則不需要存儲,包括對應索引信;后續(xù)運算直接跳過。
(2)對于特征數據,順序存儲在存儲單元中。
權重0由于完成卷積運算結果還是0,在權重編排時就被丟棄,不參與計算,節(jié)省了存儲資源與數據讀寫帶寬,并提高了計算效率。
圖2為本文所述稀疏卷積神經網絡實現(xiàn)的方法架構,其處理流程包括:
CPU根據當前處理的網絡模型下發(fā)對應的指令給硬件加速器;同時,CPU會給DMA下發(fā)指令,讓DMA去對應的存儲單元中讀出相應的權重以及特性數據。硬件解析指令,分別送給對應的控制以及輸入輸出緩存單元。
根據配置信息,需要將當前處理進度的權數據以及特征數據提前存放在緩存單元中。先從緩存單元中獲取權重信息以及位置索引信息(權重位置信息),并根據權重對應的索引信息,去從數據緩存單元中素引對應的數據。
計算單元中的控制器,先將第一個指示符讀到控制器中,之后按照順序讀取權重編排后的映射表內容,以映射表內容為地址選擇條件,數據緩存中讀取數據。
圖2 稀疏的神經網絡處理架構
圖3 卷積計算結構
卷積計算,如圖3所示,指示符內的映射表項讀取時,在沒有達到結束條件,在計算單元的分類累加單元進行計算預處理和加減操作。在計算單元的分類累加單元進行計算預處理(即移位操作,移位量取決于指示符表中的配置)和加減操作(加減取決于指示符表中的配置)。
分類累加過程,當同個指示符內的映表項讀取完時即達到同一權重的結束條件時,查看分類結束標志,如果分類結束標志為未結束,則讀取下一個指示符表項,繼續(xù)完成累加操作。
分類切換控制,當分類結束標志為結束,則將累加后的結果,對應的權重值和分類累加計算單元編號送到分類乘加計算單元;同時,讀取下一個指示符表項,并將分類累加處理器中的累加值清零,重新累加減操作,直到指示符表項中的分類結束標志指示為整個卷積操作完成。
分類乘法,分類乘加計算單元完成輸入的權重和數據的乘法操作,并將乘的結果累加到部分和中。
根據該方案,配置分類乘法單元是否能提前停止運算,如果激活函數為ReLU,則使能提前停止功能,即判斷當前卷積的部分和的值與偏置值的差值是否小于0,如果小于零,則反饋給計算單元的控制器,該計算完成處理。
該方法可以達到提前終卷積運算的結果目的,從而減少運算量,減少運算功耗,進而提高能效比。
總結:采用本文所述方法,與現(xiàn)有技術相比,通過權重轉換和新計算單元相結合,提前離線對權重進行了零數據壓縮,使得卷積操作的時間只非零權重的個數有關,較好的利用了權重卷積核的稀疏特性,節(jié)省了推理運行時間。與此同時,新的計算單元結構擴展性更好,可以支持計算提前中功能,即可以利用數據的稀疏特性,進一步降低運算量。