DSP48E2 Slice 上優(yōu)化 INT8 深度學習運算分析
賽靈思 INT8 優(yōu)化為深度學習推斷提供了性能最佳、能效最高的計算技術(shù)。賽靈思的集成式 DSP 架構(gòu)與其他 FPGA DSP 架構(gòu)相比,在INT8 深度學習運算上能實現(xiàn) 1.75 倍的解決方案級性能。
概要本白皮書旨在探索實現(xiàn)在賽靈思 DSP48E2 Slice 上的 INT8 深度學習運算,以及與其他 FPGA 的對比情況。在相同資源數(shù)量情況下,賽靈思的 DSP 架構(gòu)憑借 INT8在 INT8 深度學習每秒運算次數(shù) (OPS) 上相比其它 FPGA,能實現(xiàn) 1.75 倍的峰值解決方案級性能。由于深度學習推斷可以在不犧牲準確性的情況下使用較低位精度,因此需要高效的 INT8 實現(xiàn)方案。
賽靈思的 DSP 架構(gòu)和庫專門針對 INT8 深度學習推斷進行了優(yōu)化。本白皮書介紹如何使用賽靈思 UltraScale 和 UltraScale+ FPGA 中的DSP48E2,在共享相同內(nèi)核權(quán)重的同時處理兩個并行的 INT8 乘法累加 (MACC) 運算。本白皮書還闡述了要運用賽靈思這一獨特技術(shù),為何輸入的最小位寬為 24 位。本白皮書還以 INT8優(yōu)化技術(shù)為例,展示了該技術(shù)與神經(jīng)網(wǎng)絡基本運算的相關(guān)性。
用于深度學習的 INT8深度神經(jīng)網(wǎng)絡(DNN)已掀起機器學習領(lǐng)域的變革, 同時運用新的達到人類水平的 AI 功能重新定義眾多現(xiàn)有的應用。
隨著更精確的深度學習模型被開發(fā)出來,它們的復雜性也帶來了高計算強度和高內(nèi)存帶寬方面的難題。能效正在推動著深度學習推斷新模式開發(fā)方面的創(chuàng)新,這些模式需要的計算強度和內(nèi)存帶寬較低,但絕不能以犧牲準確性和吞吐量為代價。降低這一開銷將最終提升能效,降低所需的總功耗。
除了節(jié)省計算過程中的功耗,較低位寬的計算還能降低內(nèi)存帶寬所需的功耗,因為在內(nèi)存事務數(shù)量不變的情況下傳輸?shù)奈粩?shù)減少了。
研究顯示要保持同樣的準確性,深度學習推斷中無需浮點計算[ 參考資料 1][ 參考資料 2][ 參考資料 3],而且圖像分類等許多應用只需要 INT8 或更低定點計算精度來保持可接受的推斷準確性[ 參考資料 2][ 參考資料 3]。表 1 列出了精調(diào)網(wǎng)絡以及卷積層和完全相連層的動態(tài)定點參數(shù)及輸出。括號內(nèi)的數(shù)字代表未精調(diào)的準確性。
表 1 :帶定點精度的 CNN 模型
賽靈思 DSP Slice 片上的 INT8 深度學習
賽靈思的 DSP48E2 設(shè)計用于在一個時鐘周期內(nèi)高效地完成一個乘法累加算法, 多達 18x27 位的乘法和多達 48 位的累加,如圖 1 所示。除了采用回送或鏈接多個 DSP Slice,乘法累加 (MACC) 也能使用賽靈思器件高效完成。
圖 1 :使用 MACC 模式的 DSP Slice
在運行 INT8 計算時,較寬的 27 位寬自然占有優(yōu)勢。在傳統(tǒng)應用中,預加法器一般用于高效實現(xiàn) (A+B) x C計算,但這類計算在深度學習應用中很少見。將 (A+B) x C 的結(jié)果拆分為 A x C 和 B x C,然后在獨立的數(shù)據(jù)流中進行累加,使之適用于典型深度學習計算的要求。
對 INT8 深度學習運算來說,擁有 18x27 位乘法器很占優(yōu)勢。乘法器的輸入中至少有一個必須為最小 24位,同時進位累加器必須為 32 位寬,才能在一個 DSP Slice 上同時進行兩個 INT8 MACC 運算。27 位輸入能與 48 位累加器結(jié)合,從而將深度學習求解性能提升 1.75 倍(1.75:1 即為 DSP 乘法器與 INT8 深度學習 MACC 的比率)。其他廠商提供的 FPGA 在單個 DSP 模塊中只提供 18x19 乘法器,DSP 乘法器與INT8 MACC 之比僅為 1:1。
可擴展的 INT8 優(yōu)化目標是找到一種能夠?qū)斎?a、b 和 c 進行高效編碼的方法,這樣 a、b 和 c 之間的相乘結(jié)果可以容易地分解為 a x c 和 b x c。
在更低精度計算中,例如 INT8 乘法中,高位 10 位或 19 位輸入用 0 或 1 填充,僅攜帶 1 位信息。對最終的 45 位乘積的高位 29 位來說,情況一樣。因此可以使用高位 19 位開展另一計算,不會影響低位 8 位或16 位輸入結(jié)果。
總的來說,要把未使用的高位用于另一計算必須遵循兩條規(guī)則:
1. 高位不應影響低位的計算。
2. 低位計算對高位的任何影響必須可檢測、可能恢復。





