---
# System prepended metadata

title: 'EIE: Efficient Inference Engine on Compressed Deep Neural Network'

---

# 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倍。
