目前,深度神經網絡技術已經成為人工智能領域的代表性算法,基于深度神經網絡技術的字符識別、圖像分類或語音識別等關鍵技術,已經廣泛應用于搜索引擎和智能手機等產品中。
其中,當前最為有效且應用最為廣泛的神經網絡算法是卷積神經網絡算法,簡稱“卷積運算”。在現有技術中,CNN算法的核心計算單元是乘加運算,乘法累加器陣列常用于矩陣乘法運算,而卷積運算可以轉換為矩陣乘法運算。
因此業界廣泛采用MAC(乘累加器)陣列為計算核心的專用加速硬件,例如:現場可編程門陣列(FPGA)、專用集成電路(ASIC)等,以加速卷積運算的運算速度。
但是目前卷積計算也存在著一些問題,一方面,當MAC陣列中存在多個卷積窗口同時進行卷積運算時,這些卷積窗口分布在MAC陣列中的不同位置,使得MAC陣列的利用率非常低。另一方面,存在大量重復數據被從RAM輸入到MAC陣列,這樣會增加RAM的訪問次數。
為了解決這樣的問題,華為發明了將CPU、RAM和卷積運算芯片集成在同一數據總線上的AI芯片,2016年12月29日,華為發明了一項名為“卷積運算芯片和通信設備”的發明專利(申請號:201611243272.X),申請人為華為機器有限公司。
根據該專利目前公開的資料,讓我們一起來看看華為的這項新架構AI芯片吧。
如上圖,為該專利中發明的硬件設備的示意性框架圖,硬件架構中包括中央處理器100、雙倍速率同步動態隨機存儲器(DDR SDRAM)200以及卷積運算芯片300。CPU用來控制卷積運算芯片啟動卷積運算,DDR SDRAM用于向卷積運算芯片的數據緩存模塊輸入多個卷積數據和多個卷積參數,然后卷積運算芯片根據這些數據來完成卷積運算。
當得到運算結果后,就會將運算結果寫回到DDR SDRAM事先設定好的內存地址中,并同時通知CPU完成運算,以從內存地址中提取結果數據。
如上圖,為上面框架中的卷積運算芯片的結構示意圖,這種卷積運算芯片包括數據緩存模塊310、M*N乘法累加器陣列320、輸出控制模塊330和陣列控制模塊340。
數據緩存模塊用于向乘法累加器中的第一乘法累加窗口傳輸用于卷積運算的多個卷積數據和卷積參數,卷積參數由數據緩存模塊根據第一卷積參數矩陣確定,而該控制器也是通過在運算器內集成這樣的數據緩存器,從而減少了RAM的訪問次數,進而減少了RAM的訪問壓力。
其中M*N乘法累加器是該運算芯片的核心運算部件,而這種M*N的結構設計方式也是為了進行卷積運算而特意設計的,其具體結構如下圖所示。
可以看到,這種乘法累加器包括M*N個處理單元,并且每兩行的處理單元之間還存在斜向的數據傳輸通道,這相比于傳統的矩陣式數據傳輸通道,具有更加靈活的數據傳輸方式,可以更好的適用于AI芯片進行多種類型的運算。
第一乘法累加窗口可以將數據進行乘法運算,并接著進行加法運算以獲得卷積結果,最后由輸出控制模塊輸出卷積神經網絡的運算結果,進而完成AI芯片中的任務。
在該專利中,為了盡可能地提高MAC陣列的利用率以及卷積運算效率,陣列控制模塊會根據第一卷積參數矩陣的行數和第一卷積數據陣列的行數來確定第一乘法累加窗口的列數。
華為發明的卷積運算芯片,這種卷積運算芯片能夠在提高陣列資源利用率的同時降低RAM訪問次數,進而減小RAM的訪問壓力。例如華為發明的昇騰AI芯片也正是基于這樣的技術之上,才能實現極高的算力,不管多么復雜的模型都可以輕松訓練,且實現極低的功耗。