FPGA加速BCNN,模型20倍剪枝率、邊緣裝置超5000幀/秒推理吞吐量
https://mp.weixin.qq.com/s/1na-AFgJUZO6vXCudj3PeA
轉自機器之心對於許多訊號處理應用來說,能夠從具有相位資訊的複數資料中進行學習是必不可少的。當前實值深度神經網路(DNN)在潛在資訊分析方面表現出了較高的效率,但在複數領域的應用還不夠。而深度複數網路(Deep complex networks, DCN)可以從複數資料中學習,但計算成本較高,因此,這些技術都不能滿足可部署系統處理短觀測或簡訊號突發的即時決策需求。
近年來,將 DCN 與二值化神經網路(BNN) 相結合的二值化複數神經網路 (BCNN),在實時分類複數資料方面顯示出巨大潛力。
本文中,來自康涅狄格大學、斯蒂文斯理工學院等機構的研究者提出了一種基於結構剪枝的 BCNN 加速器,它能夠在邊緣裝置上提供超過 5000 幀 / 秒的推理吞吐量
論文地址:https://arxiv.org/pdf/2108.04811v1.pdf
實現這一高效能的結果來自演算法和硬體兩個方面:
-
在演算法方面,研究者對原始 BCNN 模型進行結構剪枝,獲得 20 倍的剪枝率,但準確率損失可以忽略不計;
-
在硬體方面,研究者為二值複數神經網路提出了一種新穎的 2D 卷積運算加速器。
實驗結果表明,該研究所用方法的利用率超過 90%,使用 CIFAR-10 資料集和 Alveo U280 Board,對於複數 NIN-Net 和 ResNet-18 來說,其推理吞吐量分別達到 5882 幀 / 秒和 4938 幀 / 秒。
BCNN 訓練和壓縮
本節詳細討論 了 BCNN 模型細節,包括模型結構、BCNN 的基本構建塊和操作、使用 SLR 進行權重剪枝以及基於象限二值化、 STE 的權重量化。
BCNN 結構
BCNN 與原始卷積神經網路 (CNN)結構的比較如圖 1 所示。Fig. 1a 表示原始 CNN,由卷積層、add bias、非線性層和池化層組成。對於 BCNN,其結構與原始 CNN 有所不同(如 Fig. 1b 所示)。池化層和批歸一化層應該在卷積層之後,從網路中去除了 bias 以減少計算開銷而不會損失準確率。對於 BCNN,批歸一化是模型收斂的強制性操作。
圖 1:CNN 與 BCNN 的比較
對於以三通道(RGB)作為輸入的影象,初始輸入僅包含實部。為了生成複數的輸入,研究者設計了一個兩層殘差 CNN 來學習虛部。用於生成複數輸入的網路如圖 2 所示。
圖 2:複數輸入生成過程
BCNN 與普通 DNN 的構建部分略有不同,主要表現在卷積層、池化層、批歸一化和二值化函式的複數版本。
以二值化為例,目前有兩種廣泛使用的二值化方法,即確定性二值化和隨機二值化。確定性二值化在方程式 7 中給出,啟用值被二值化 + 1 和 - 1。隨機二值化如式 8 所示,式中δ(x) 是裁剪函式,並滿足因素δ(x) = max(0, min(1, (x+1) /2 ))。然而,隨機二值化的實現需要一個隨機數生成器,導致硬體設計成本變高。因此,軟硬體實驗均採用確定性二值化方法。
FPGA 硬體架構
FPGA 是 DNN 應用最流行的硬體平臺之一。FPGA 平臺具有可重構結構和硬體設計的高並行性。隨著 DNN 模型增大,權重矩陣和啟用值太大而無法儲存在 FPGA 晶片儲存器中。然而,剪枝和權重量化技術同時壓縮了啟用和權重表徵,使得 FPGA 平臺可以將所有中間結果儲存在儲存器中。該研究基於 Vivado HLS 2020.1 進行硬體設計,並展示了用於 BCNN 模型的 FPGA 硬體結構。
FPGA 結構
用於 BCNN 的整體 FPGA 結構如圖 4 所示。本節中介紹了 2 個 BCNN 模型設計:基於 BCNN 模型的 NIN(network in network)和基於 BCNN 模型的 ResNet-18。這兩個模型由 3 個主要層組成:複數輸入生成層(圖 2)、全精度複數卷積層(圖 1a)、二值化複數卷積層(圖 1b)。最後將使用全連線(FC)層來生成預測輸出。
圖 4:硬體設計架構
對於 ResNet-18 網路,有 2 種殘差塊,這兩種殘差塊都是 BCNN 模型的二值化塊。殘差塊 1 如圖 5 所示,輸入經過 2 個二值化的複數卷積層,加上原始輸入得到最終輸出。
殘差塊 2 如圖 6 所示,其中一條路徑有 2 個二值化複數卷積層,另一條路徑只有 1 個二值化複數卷積層,然後將這 2 條路徑的輸出相加以生成最終輸出。
實驗
BCNN 模型的訓練
研究者將 SLR 剪枝和基於 STE 的量化技術用於 NiN-Net 和 ResNet-18,這兩個網路都是基於 BCNN。對於 CIFAR-10 資料集,研究展示了基於 NiN-Net 和 ResNet-18 的 BCNN 的訓練結果;對於 ImageNet 資料集,研究只展示了基於 ResNet18 的 BCNN 結果。
首先,為了確定最終模型池化層功能,在 BCNN 模型上比較了光譜(spectral)池化、平均剪枝和最大池化。比較三種池化可達到的精度,結果如表 1 所示。由結果可得,平均池化比其他兩種池化方法的效能更好,計算複雜度可以接受。所以平均池化將用於 BCNN 模型。
對於模型的複數版本,通道數減少了一半,以確保不同 BCNN 模型大小相同。對於權重剪枝,大多數中間層的剪枝比設定為 0.5。該研究在四種模型上進行了測試:NIN-Net、複數 NIN-Net、ResNet-18 和複數 ResNet-18 在 CIFAR-10 資料集上的準確率如下表所示。
在 ImageNet 資料集,對基於 ResNetE-18 模型的 BCNN 進行剪枝和量化,結果如表 III 所示。由結果可得,網路的複數版本效能優於普通版本。因此,基於複數二進位制網路的 NIN-Net 和 ResNet-18 將用於硬體設計評估。
硬體評估
下表是基於 NIN-Net 的 BCNN 單個推理核資源利用率。對於單核而言,執行延遲為 1.53 毫秒。最大資源利用率受到 LUT 資源限制,可以同時使用九個核以實現更高級別的並行性。可實現的最大吞吐量為 5882 幀 / 秒。
對於基於 ResNet-18 模型的 BCNN,單個推理核的資源利用情況如下表所示:
此外,該研究還對 BCNN 模型跨平臺吞吐量進行了比較,結果如下表所示,由結果可得,本文所提出的 FPGA 設計在基於 NIN-Net 模型的 BCNN 上實現了 1.51 倍的加速,在基於 ResNet-18 模型的 BCNN 上實現了 1.58 倍的加速。