# EIE: Efficient Inference Engine on Compressed Deep Neural Network ### 2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture --- ## Abstract * 稀疏矩陣向量乘法。 從 DRAM 到 SRAM,EIE 節能 120 倍; 利用稀疏性節省 10 倍; 權重共享給 8×; 從 ReLU 中跳過零激活可以再節省 3 倍。 在九個 DNN 基准上進行評估,與沒有壓縮的相同 DNN 的 CPU 和 GPU 實現相比,EIE 快 189 倍和 13 倍。 EIE在壓縮網絡上直接工作的處理能力為102 GOPS,相當於未壓縮網絡上的3 TOPS,以1.88×104幀/秒的速度處理AlexNet的FC層,功耗僅為600mW。它的能效分別比 CPU 和 GPU 高 24,000 倍和 3,400 倍。 與大點腦相比,EIE 的吞吐量、能源效率和麵積效率分別提高了 2.9 倍、19 倍和 3 倍。 ## Introduction * 與 CONV 層不同,FC 層中沒有參數重用。 在 CPU 或 GPU 上訓練網絡時,數據批處理已成為一種有效的解決方案,但是它不適合具有延遲要求的實時應用程序。 * EIE 是處理元件 (PE) 的可擴展陣列 每個 PE 在 SRAM 中存儲一個網絡分區並執行與該部分相關的計算。 它利用了動態輸入向量稀疏性、靜態權重稀疏性、相對索引、權重共享和極窄的權重(4 位)。 * 每個 PE 擁有 131K 的壓縮模型權重,對應於原始密集模型的 120 萬個權重,每秒能夠執行 8 億次權重計算。 在 45nm CMOS 技術中,EIE PE 的面積為 0.638mm2,在 800MHz 時的功耗為 9.16mW。 AlexNet 的全連接層適合 64 個 PE,總共消耗 40.8mm2,以 1.88 × 104 幀/秒的速度運行,功耗為 590mW。 ## Motivation * 在 M×V 期間,內存訪問通常是瓶頸,尤其是當矩陣大於緩存容量時。 輸入矩陣沒有重用,因此每次操作都需要訪問內存。 * 儘管壓縮減少了操作總數,但壓縮引起的不規則模式阻礙了 CPU 和 GPU 的有效加速 * 以前的 SPMV 加速器只能利用靜態權重稀疏性。 他們無法利用動態激活稀疏性。以前的 DNN 加速器不能利用任何一種形式的稀疏性 ## DNN compression and parallelization B. * we store our encoded sparse weight matrix W in a variation of compressed sparse column (CSC) format C. * 交錯的 CSC 表示有助於利用激活向量 a 的動態稀疏性和權重矩陣 W 的靜態稀疏性。 * 此過程可能會遭受負載不平衡,因為每個 PE 在特定列中可能具有不同數量的非零。 我們將在第四節中看到如何通過排隊來減少這種負載不平衡。 ## Hardware Implementation * EIE 中的幾乎所有計算都是 PE 本地的。 然而,激活收集和廣播的時間並不重要,因為大多數 PE 需要許多周期來消耗每個輸入激活。 * 為了允許使用單端口 SRAM 陣列在一個週期內讀取兩個指針,我們將指針存儲在兩個 SRAM 組中,並使用地址的 LSB 在組之間進行選擇。 pj 和 pj+1 將始終位於不同的庫中。 EIE 指針的長度為 16 位。 * 我們使用領先的非零檢測邏輯來選擇第一個非零結果。 每組 4 個 PE 對其輸入激活進行局部前導非零檢測。 結果被發送到領先的非零檢測節點(LNZD 節點) ## Evaluation * 我們為加速器實現了一個自定義週期精確的 C++ 模擬器,旨在模擬同步電路的 RTL 行為。 * 為了測量面積、功率和關鍵路徑延遲,我們在 Verilog 中實現了 EIE 的 RTL。 RTL 根據周期精確模擬器進行驗證。 然後我們在 TSMC 45nm GP 標準 VT 庫下使用 Synopsys Design Compiler (DC) 合成了 EIE * Compare with: Intel Core i-7 5930k CPU, NVIDIA GeForce GTX Titan X GPU, Mobile GPU NVIDIA Tegra K1 * 2 benchmark: 未壓縮的 DNN 模型是從 Caffe 模型動物園 [28] 和 NeuralTalk 模型動物園 [7] 獲得的; 壓縮的 DNN 模型如所述生成. 基準網絡共有 9 層,來自 AlexNet、VGGNet 和 NeuralTalk。 我們使用 Image-Net 數據集 [29] 和 Caffe [28] 深度學習框架作為黃金模型來驗證硬件設計的正確性。 ## Exp Result * 我們通過引入 4 個流水線階段來更新一個激活,將關鍵路徑延遲降低到 1.15ns:碼本查找和地址累積(並行)、輸出激活讀取和輸入激活乘法(並行)、移位和加法以及輸出激活寫入 . 激活讀取和寫入訪問本地寄存器並採用激活旁路來避免流水線危險。 * 我們在從AlexNet、VGG16和Neural Talk中選擇的9個基準上,將EIE與CPU、案頭GPU和移動GPU進行比較。總體結果如圖6所示。每個基準測試有7列,比較壓縮網絡上的EIE在未壓縮/壓縮網絡上通過CPU/GPU/TK1的計算時間。時間標準化為CPU。EIE明顯優於通用硬體,平均速度分別比CPU、GPU和移動GPU快189倍、13倍、307倍。EIE的理論計算時間是通過將工作負載GOP除以峰值輸送量來計算的。由於負載不平衡,實際計算時間比理論計算時間多10%左右。 * EIE的目標是非常關注延遲的應用程序,這些應用程序需要實时推理。 由於組裝一個批次處理會新增大量延遲,囙此在使用CPU和GPU對效能和能效進行基準測試時,我們考慮批次處理大小=1的情况 * 與CPU、GPU和移動GPU相比,EIE的平均能耗分別减少了24000倍、3400倍和2700倍。 這是一個3個數量級的能量節省 * 首先,每次記憶體讀取所需的能量得到了節省(SRAM優於DRAM):使用壓縮網絡模型可以使最先進的神經網路適應片上SRAM,與從DRAM獲取密集的未壓縮模型相比,能耗降低了120倍(圖7)。其次,减少了所需的記憶體讀取次數。壓縮DNN模型具有10%的權重,其中每個權重僅量化4比特。最後,利用向量稀疏性節省了65.14%的冗餘計算週期。將這些係數乘以120×10×8×3,可得出28800×理論節能。由於索引開銷以及與Titan-X GPU和Tegra K1 mobile GPU使用的28nm科技相比,EIE採用的是45nm科技,囙此我們的實際節省約為該數位的10倍。 * SRAM寬度。 我們選擇具有64比特介面的SRAM來存儲疏鬆陣列(Spmat),因為它使總能量最小化。 更寬的SRAM介面减少了SRAM訪問總量,但新增了每次SRAM讀取的能源成本。 * 算術精度。 我們使用16比特定點數。 如圖10所示,16比特定點乘法消耗的能量比32比特定點少5倍,比32比特浮點少6.2倍。 同時,使用16比特定點數的預測精度損失小於0.5%,即79.8%,而使用32比特浮點數的預測精度損失為80.3%。 然而,使用8比特定點時,準確率降到了53%,這讓人無法忍受。 ## Discussion * 第一種方法是將矩陣列分配給PEs。缺點是需要在PE之間進行縮減操作,以獲得最終結果 * 第二種方法(我們的)是將矩陣行分配給PEs。缺點是向量a需要廣播到所有PE。 * 第三種方法通過以2D管道將W塊分佈到PEs來結合前兩種方法。但規模較小,該解決方案更具可擴展性。 * 由於SPMV引擎的PE數量有限,因此不存在可擴展性問題。 然而,由於共享同一列的多個PE可能保持空閒,混合解決方案將面臨固有的複雜性和可能的負載不平衡。我們在第二個分佈方案的基礎上要求矩陣W以CSC格式存儲 * 隨著矩陣變大,可以通過添加更多PE來擴大系統規模。 每個PE都有本地SRAM * wire delay 正比於PEs數量開根號 * EIE是為大型神經網路設計的。大多數層的權重和輸入/輸出可以輕鬆放入EIE的存儲中。對於輸入/輸出大小非常大的設備(例如,VGG-16的FC6層的輸入大小為25088),EIE仍然能够使用64PE執行這些設備。 ## Compare with Related Work * 模型壓縮對於降低記憶體能量至關重要。然而,GPU上應用的模型壓縮本身只能節省3倍的能量[23],而EIE通過定制一種架構來利用模型壓縮產生的不規則性和解碼,將其新增到3000倍。 * 由於SRAM資源有限,片外DRAM通信量占能源消耗的主導地位。 DaDianNao[11]和ShiDianNao[12]通過在晶片上使用所有權重(eDRAM或SRAM),消除了DRAM訪問。 * EIE將壓縮模型存儲在SRAM中,僅佔用0.35W記憶體功率和0.59W總功率 * 以前針對ASIC和FPGA平臺的DNN加速器[10][41]大多使用CONV層作為基準,但很少在FC層上進行專門的實驗,FC層存在明顯的頻寬瓶頸,廣泛應用於RNN和LSTM中。從外部記憶體為FC層加載權重可能會顯著降低網絡的整體效能[14]。 ## Conclusion * EIE利用了權重共亯和量化,與GPU相比,計算一個典型FC層所需的能量减少了3400倍。 這種節能主要來自四個因素:參數數量減少10倍; 權重共亯將權重减少到僅4比特。 然後,可以從SRAM而不是DRAM獲取較小的模型,從而獲得120倍的能量優勢; 由於啟動向量也是稀疏的,囙此只需要選取30%的矩陣列,就可以節省3倍的時間。 這些節省使得EIE PE能够在0.64mm2的面積內進行1.6次GOP,並且僅耗散9mW。 64個PEs可以以1.88×104幀/秒的速度處理AlexNet的FC層。 該體系結構可從一個PE擴展到超過256個PE,能量和效能幾乎呈線性擴展。 在9個全連接層基準測試中,EIE的效能分別比CPU、GPU和移動GPU高出189倍、13倍和307倍,能耗分別比CPU、GPU和移動GPU低24000倍、3400倍和2700倍。