賽靈思器件上的 INT4 優(yōu)化卷積神經(jīng)網(wǎng)絡(2)
接上期http://2s4d.com/article/202009/418351.htm
使用 DSP 硬件資源可實現(xiàn)乘法和累加 (MAC) 占用硬件資源較少。經(jīng)優(yōu)化后,DSP 能夠在 16nm 或 28nm 器件上處理盡可能多的 MAC 運算。以 16nm 為例,賽靈思可編程器件中 UltraScale? 架構的 DSP48E2 片就屬于專用片[參考資料 11]。DSP48E2 片由一個 27x18 二進制補碼乘法器和一個 48 位累加器構成。如圖 3 所示,MAC 能使用賽靈思 DSP 片完成。
圖 3:MAC 模式下的 DSP48E2 片
INT4 優(yōu)化
在低精度 MAC 運算中,相乘方式是 a*b。其中 a 是 4 位無符號激活參數(shù)數(shù)據(jù),b 是 4 位有符號權重參數(shù)數(shù)據(jù)。DSP48E2 片可被配置成 4 通道乘法運算,如圖 4 所示。
DSP48E2 片的端口 A 是 27 位寬。端口 B 是 18 位寬。int4 * uint4 相乘產(chǎn)生的結果至少有 8 位寬。充分利用 DSP 資源的前提是在多個相乘被打包在一起時,確保輸出結果保持正確。為確保這一點,通道之間添加了保護位。當四個 MAC 通道被打包在一起時,需要在兩路輸入間布置足夠的保護位。根據(jù) DSP48E2 片的設計,保護位被設置為 3 位:
第一個通道 A1*W1 被布置在對應端口的 4LSB 上。下一個通道 A2*W1 需要移位至少 8 位才能正確計算。第二個通道與第一個通道共享權重參數(shù)數(shù)據(jù) W1。端口 B 中的 A2 移位 11 位。3 位保護位用于最大化 DSP 資源的利用。最后一個計算元 W2 被分配給端口 A。最后兩個通道是 A1*W2 和 A2*W2。權重參數(shù)是有符號數(shù)據(jù)。在相乘開始前,使用 27 位預加法器打包兩個權重參數(shù)數(shù)據(jù)。因為 W1 需要符號擴展,所以 W2 不能布置在 D 端口的四個 MSB 上[參考資料 12]。如果 W2 在 MSB 中,當 W1 < 0 且 W2 = -8 時,預加法器就會溢出。后 48 位加法器可用作累加器,通過級聯(lián)對之前層次的 DSP 結果進行相加。單個 DSP48E2 就能在單個時鐘周期內(nèi)實現(xiàn)四通道 MAC。
結果的位寬在累加后增大。硬件友好型量化器是一組移位寄存器,它可以通過指令控制移位的位數(shù)。移位運算是硬件友好型的。在低精度 CNN 中,卷積能夠使用兩種量化方法之一。一種是逐計算元地輸出 8 位。另一種是對下一卷積輸出 4 位。通過算法優(yōu)化,兩種量化方法都能量化成 2k 步長。差別在于輸出數(shù)據(jù)的位寬以及它們是否是有符號數(shù)據(jù)。
DSP 強化使用
DSP 雙數(shù)據(jù)速率 (DDR) 技術被用于改進由 DSP48 片實現(xiàn)的性能[參考資料 13]。因此需要為 DPU 提供兩個輸入時鐘:一個用于通用邏輯,另一個用于 DSP 片。未采用 DSP DDR 技術的 DPU 和采用強化使用模式的 DPU 之間的差異如圖 5 所示。
面向 CNN 要求的計算圖
卷積是 CNN 網(wǎng)絡的主要計算要求。卷積的實際計算任務如下:
其中Anf 是浮點特征圖,Wnf 是浮點權重。其本質(zhì)是 MAC 運算。根據(jù)賽靈思的新穎量化感知訓練解決方案,浮點的卷積計算按如下方式進行量化:
其中 axf、awf 和abf 是標度。這些浮點參數(shù)被轉(zhuǎn)換成2k*2k。這是一種硬件友好型標度,能夠在 FPGA 中使用移位運算輕松實現(xiàn)。
DSP 塊在一個時鐘周期中需要兩個權重和兩個特征。其中的每一個都能共享,如圖 6 所示。
在 W_1 所在的內(nèi)核里,內(nèi)核寬 * 內(nèi)核高 * 通道的全部像素需要與特征相乘,然后加總成一個輸出像素。在同一層,每個權重內(nèi)核共享同樣的特征圖。兩個被打包的權重需要來自兩個不同的權重內(nèi)核。每一步中當權重內(nèi)核滑移到特征圖上時,對應的特征數(shù)據(jù)就需要與該權重內(nèi)核相乘。一個 DSP48 塊中的兩個特征應來自同一特征圖里的不同滑動窗口。
模型量化與性能仿真
下面的章節(jié)講解量化感知訓練中使用的 CV 任務。這些任務包括圖像分類、姿態(tài)估計、2D 檢測、3D 檢測、語義分割和多任務。
基準分類模型
在完成 ImageNet 分類數(shù)據(jù)集上的實驗后得到如下結果。網(wǎng)絡包括 ResNet50-V1、ResNet50-V2。在所有實驗中,數(shù)據(jù)集均從浮點模型進行微調(diào)。所有偏差參數(shù)都量化到 8 位。實驗結果如表 1 所列。
基準分類模型的結果參見表 1。它體現(xiàn)了這種方法的有效性。具體對 ResNet50V1 而言,4 位 XDPU 解決方案與 8 位 XDPU 解決方案在前 1 精度上的差距僅有 1.4%,在前 5 精度上的差距僅有 0.9%。
實時 ADAS 模型,包括姿態(tài)估計、檢測、分割、多任務等。
為進一步驗證量化方法的通用性,也在真實場景下開展了其他 CV 任務。
姿態(tài)估計
姿態(tài)估計任務使用更加復雜的堆疊 Hourglass 網(wǎng)絡[參考資料 14]。通過在 MPII[參考資料 15]數(shù)據(jù)集上開展姿態(tài)估計實驗,評估了逐層模式下兩個網(wǎng)絡結構的精度。結果參見表 2。
在表 2 中,hg-s2-b1 意味著堆棧數(shù)量是 2,塊數(shù)量是 1。Hg-s8-b1 意味著堆棧數(shù)量是 8,塊數(shù)量是 1。表 2 證明賽靈思 INT4 量化解決方案實現(xiàn)了可媲美浮點模型的精度。
2D 檢測
在 ADAS 系統(tǒng)中,BDD100K[參考資料 16]數(shù)據(jù)集用于 2D 檢測。此外,F(xiàn)PN 結構被添加到 ResNet18-SSD 中,用作檢測網(wǎng)絡。實驗結果如表 3 所示。
表 3 所示的是在經(jīng)過微調(diào)后,8 位量化模型實現(xiàn)了高于浮點模型的 mAP。通過逐漸從 8 位微調(diào)到 4 位,最終的 4 位量化模型的 mAP 損耗小于 2%。2D 檢測的示意圖如圖 7 所示。
3D 檢測
ADAS 系統(tǒng)的 3D 檢測任務使用 KITTI 數(shù)據(jù)集[參考資料 17]。PointPillars[參考資料 18]用于開展 3D 預測任務。實驗結果如表 4 所示。
如表 4 所示,采用微調(diào)技巧后,4 位量化模型的精度僅比浮點模型低 0.16%。8 位和 4 位的 3D 檢測結果如圖 8 所示。
語義分割
在 ADAS 系統(tǒng)的語義分割任務中,CityScape 的數(shù)據(jù)集[參考資料 19]以理解城市視覺場景為重點。實驗在以 ResNet18 為基干的特征金字塔網(wǎng)絡 (FPN) 上開展。結果如表 5 所示。
表 5 顯示,8 位模型可實現(xiàn)比浮點模型更高的 mIoU,4 位模型的 mIoU 僅比浮點模型低 1.7%。語義分割的示意圖參見圖 9。
多任務學習
為增強模型的歸納功能和精度,在多任務模型中使用了多個訓練數(shù)據(jù)集,包括用于檢測的 Waymo 和 BDD100k,以及用于分割的 BDD100k 和 Cityscapes[參考資料 19]。這些研究在以 ResNet18 為基干的特征金字塔網(wǎng)絡 (FPN) 上開展。結果如表 6 所示。
表 6顯示,8 位量化模型可實現(xiàn)優(yōu)于浮點模型的 mAP 和與浮點模型保持同等水平的 mIoU。通過逐步微調(diào),與浮點模型相比,最終的 4 位量化模型的 mAP 降低 1.66%,mIoU 提高 1.79%,仍然劣于 8 位模型的表現(xiàn)。多任務示意圖結果如表 10 所示。
競爭分析:8 位與 4 位對比
4 位 XDPU 在下列三種評估板上以 300MHz 頻率運行:Ultra96 與 Zynq UltraScale+ MPSoC ZCU104 和 ZCU102。表 7 所示的是 4 位 XDPU 和 8 位 XDPU 的比較情況。在不同的 FPGA 上,4位 XDPU 實現(xiàn)的性能提升在 1.5 倍到 2.0 倍之間。例如,ZCU102 板使用的硬件資源沒有增加,但性能提高 2 倍。
對于兩個精度不同的加速器,在啟用池化、逐計算元逐深度卷積和平均池化等全部功能后,對資源進行比較。如表 8 中所示,在相同的性能架構下,DSP 和 RAM 的占用顯著下降。鑒于資源耗用下降,4 位 XDPU 架構被擴展到 B8192 的最大規(guī)模。使用 B8192 架構能以單器件實現(xiàn)更高性能。
以表 3 中 13.6FLOP 的 2D 檢測模型為例,兩個高精度模型 4/4 和 8/8 分別使用 4 位 XDPU 和 8 位XDPU 進行測試。該網(wǎng)絡的計算要求是 13.6GOP。2D 檢測網(wǎng)絡的幀率如表 9 所示,測試不包含預處理和后處理。鑒于效率和網(wǎng)絡類型的差異,性能和幀率之間不存在線性關系。如表 9 所示,4 位XDPU 的幀率在所有平臺上均優(yōu)于 8 位 XDPU。
結論
本白皮書介紹了一種運行在 Zynq UltraScale+ MPSoC 和 Zynq-7000 SoC 系列(16nm 和 28nm)器件上的全流程、硬件友好型量化解決方案,可用作 CNN 的低精度加速器。此外,本白皮書也介紹了如何在賽靈思 DSP 片上優(yōu)化 INT4,從而在一個時鐘周期內(nèi)完成 4 通道 INT4 相乘。卷積的計算要求可通過打包 DSP 予以滿足。與 INT8 XDPU 解決方案相比,使用 DSP 實現(xiàn)的 INT4 優(yōu)化在真實硬件上可將處理峰值 GOPS 提升最大 2 倍并將性能最高提升 1.77 倍。這種賽靈思解決方案在各種 CV任務上都獲得了媲美浮點模型的結果。對于資源受限和功耗受限的用例,賽靈思繼續(xù)創(chuàng)新軟硬件協(xié)同優(yōu)化方法,為深度學習應用提速。
評論