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 倍的加速。