2017 年 8 月出版了《神經(jīng)網(wǎng)絡(luò)最完整的圖表,解釋》,并確定了 27 種不同類型的神經(jīng)網(wǎng)絡(luò)。從那時起,隨著工程師和數(shù)據(jù)科學家為他們的用例尋找人工智能 (AI) 的優(yōu)化實現(xiàn),神經(jīng)網(wǎng)絡(luò)類型的數(shù)量不斷增加。
處理器架構(gòu)師一直在爭先恐后地提供能夠執(zhí)行這些工作負載的新型計算平臺,但也正在努力在軟件方面提高神經(jīng)網(wǎng)絡(luò)的效率。一種這樣的技術(shù)是修剪,或從神經(jīng)網(wǎng)絡(luò)中刪除重復的神經(jīng)元和冗余,使其更小更快(圖 1)。
圖 1. 修剪可以產(chǎn)生更快、更小的神經(jīng)網(wǎng)絡(luò),但具有相同的精度。
一般來說,修剪是嵌入式系統(tǒng)深度學習的重要推動力,因為它降低了達到相同精度水平所需的計算量。剪枝技術(shù)還可以進一步減少神經(jīng)網(wǎng)絡(luò)的特定低效率,例如稀疏性。
通過神經(jīng)網(wǎng)絡(luò)進行稀疏
在神經(jīng)網(wǎng)絡(luò)圖中,稀疏性是指包含零值或與相鄰神經(jīng)元沒有連接的神經(jīng)元(圖 2)。這是存在于深度神經(jīng)網(wǎng)絡(luò)的輸入和輸出層之間的隱藏矩陣的固有特征,因為當數(shù)據(jù)通過圖時,給定的輸入通常會激活越來越少的神經(jīng)元。神經(jīng)網(wǎng)絡(luò)矩陣中的連接越少,稀疏度越高。
圖 2. 左圖將具有活躍連接的神經(jīng)元密集化為黃色立方體,而右圖描繪了分布在整個神經(jīng)網(wǎng)絡(luò)中的稀疏隨機連接。
Tensilica 高級總監(jiān)兼營銷和業(yè)務(wù)開發(fā)主管 Lazaar Louis 說:“當您通過這些層并將 1 與 0 相乘時,您會得到 0,因此神經(jīng)元激活的稀疏性會隨著您通過層而增加?!?Cadence Design Systems 的產(chǎn)品。“平均而言,當前的神經(jīng)網(wǎng)絡(luò)在從輸入到輸出的激活中表現(xiàn)出 50% 的稀疏性。”
與使用處理器和內(nèi)存資源來計算稀疏神經(jīng)網(wǎng)絡(luò)的零值不同,修剪網(wǎng)絡(luò)以誘導稀疏性可以轉(zhuǎn)化為計算優(yōu)勢。稀疏度的修剪可以通過將接近零的值強制為零來實現(xiàn),這與模型再訓練一起可以將稀疏度提高到 70%。
一旦神經(jīng)網(wǎng)絡(luò)被修剪以增加稀疏性,Cadence 的 Tensilica DNA 100 處理器 IP 等計算技術(shù)就可以通過僅對非零值執(zhí)行乘法累加 (MAC) 運算來利用這一優(yōu)勢(圖 3)。這要歸功于集成的稀疏計算引擎,其中包括一個直接內(nèi)存訪問 (DMA) 子系統(tǒng),該子系統(tǒng)在將可執(zhí)行文件傳遞給處理單元之前讀取值。
圖 3. Cadence Design Systems DNA 100 處理器 IP 包含一個稀疏計算引擎,該引擎僅執(zhí)行非零值的乘加 (MAC) 操作,從而提高吞吐量。
總體而言,這為 DNA 100 IP 提供了更高的 MAC 利用率,與具有類似陣列大小的替代解決方案相比,性能提高了 4.7 倍。
發(fā)光編譯
與任何嵌入式處理器一樣,DNA 100 利用編譯器來幫助解釋神經(jīng)網(wǎng)絡(luò)圖的稀疏性。Tensilica 神經(jīng)網(wǎng)絡(luò)編譯器從 Caffe、TensorFlow、TensorFlow Lite 和 Android 神經(jīng)網(wǎng)絡(luò) (ANN) 應用程序等深度學習開發(fā)框架獲取浮點輸出,并將它們量化為整數(shù)和針對 Cadence IP 優(yōu)化的機器代碼。
編譯器還有助于將接近零的權(quán)重推至零,并在可能的情況下將多個神經(jīng)網(wǎng)絡(luò)層融合到單獨的操作中。這些功能對于提高 DNA 100 等設(shè)備上的神經(jīng)網(wǎng)絡(luò)吞吐量至關(guān)重要,同時還將精度保持在原始浮點模型的 1% 以內(nèi)。
然而,盡管 Tensilica 神經(jīng)網(wǎng)絡(luò)編譯器具有優(yōu)勢,工程師們已經(jīng)受到越來越多的神經(jīng)網(wǎng)絡(luò)類型、深度學習開發(fā)框架和 AI 處理器架構(gòu)的挑戰(zhàn)。隨著這一趨勢的繼續(xù),開發(fā)人員將尋求編譯器,使他們能夠在最多樣化的處理器目標上使用最廣泛的神經(jīng)網(wǎng)絡(luò)類型和工具。另一方面,像 Cadence 這樣的供應商將需要能夠讓他們支持技術(shù)進一步發(fā)展的解決方案。
意識到市場需求,F(xiàn)acebook 開發(fā)了Glow,這是一種基于 LLVM 編譯器基礎(chǔ)架構(gòu)的異構(gòu)硬件架構(gòu)的降圖機器學習編譯器。Glow 的目標是接受來自 PyTorch 等框架的計算圖,并使用與數(shù)學相關(guān)的優(yōu)化為多個硬件目標生成高度優(yōu)化的代碼。它通過將神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)流圖降低為中間表示,然后應用兩階段過程來實現(xiàn)(圖 4)。
圖 4. Facebook 的 Glow 編譯器是一種與硬件無關(guān)的編譯器,它使用兩階段過程來優(yōu)化嵌入式計算加速器的神經(jīng)網(wǎng)絡(luò)。
Glow 中間表示的第一階段允許編譯器執(zhí)行特定領(lǐng)域的改進,并根據(jù)神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)流圖的內(nèi)容優(yōu)化高級構(gòu)造。在這個階段,編譯器是獨立于目標的。
在 Glow 表示的第二階段,編譯器在生成特定于硬件的代碼之前優(yōu)化指令調(diào)度和內(nèi)存分配。由于其增量降低階段以及它支持大量輸入運算符的事實,Glow 編譯器能夠利用專門的硬件功能,而無需在每個受支持的硬件目標上實現(xiàn)所有運算符。這不僅減少了所需的內(nèi)存空間量,而且還使其可擴展用于僅關(guān)注少數(shù)線性代數(shù)基元的新計算架構(gòu)。
Esperanto Technologies、英特爾、Marvell、高通和 Cadence 已經(jīng)承諾在未來的硅解決方案中使用 Glow
“Facebook Glow 讓我們能夠快速優(yōu)化尚未到來的技術(shù),”Louis 說。“假設(shè)引入了一個新網(wǎng)絡(luò)。要么有人會做出貢獻,要么我們會做。他們希望建立一個開源社區(qū),這樣人們就可以進來并貢獻和加速通用的事情。
“他們還在 Glow 中引入了插入各種加速器的功能,因此我們可以使其適合我們的架構(gòu),”Louis 繼續(xù)說道。我們將 Glow 視為我們編譯器中的底層引擎 [向前發(fā)展]。”
嵌入式神經(jīng)網(wǎng)絡(luò):少即是多
在過去的幾年里,圍繞人工智能的炒作、研究和開發(fā)呈爆炸式增長,但正如嵌入式技術(shù)經(jīng)常出現(xiàn)的情況一樣,事實證明,少即是多。
修剪神經(jīng)網(wǎng)絡(luò)正迅速成為神經(jīng)網(wǎng)絡(luò)開發(fā)人員的一種常見做法,因為他們試圖在不犧牲準確性的情況下提高性能。與此同時,F(xiàn)acebook Glow 正在解決處理器碎片化問題,以免阻礙人工智能的采用。
非常好地使用一個正確的工具通常會導致成功。對于神經(jīng)網(wǎng)絡(luò),使用 Glow 編譯器和稀疏計算技術(shù)可以完成工作。
審核編輯:郭婷
評論