新聞中心

EEPW首頁 > 智能計算 > 牛人業(yè)話 > 賽靈思器件上的 INT4 優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)(1)

賽靈思器件上的 INT4 優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)(1)

作者:Xilinx 時間:2020-09-15 來源:EEPW 收藏

 對于 AI 推斷,在提供與浮點相媲美的精度的同時,INT8 的性能優(yōu)于浮點。然而在資源有限的前提下,INT8 卻不能滿足性能要求, 優(yōu)化則是解決之道。通過 優(yōu)化,與現(xiàn)有的 INT8 解決方案相比,在實際硬件上可實現(xiàn)高達(dá) 77% 的性能提升。

本文引用地址:http://m.butianyuan.cn/article/202009/418351.htm

概要
在其硬件平臺上提供 INT8 AI 推斷加速器 — 深度學(xué)習(xí)處理器單元 (XDPU)。然而,在某些資源受限,要求高性能、低時延的場景(例如對資源、功耗敏感的邊緣側(cè)場景和低時延 ADAS 場景)中,為了實現(xiàn)比 INT8 更低的功耗和更高的性能,需要對神經(jīng)網(wǎng)絡(luò)進(jìn)行低比特量化。然而,極低比特量化(如二進(jìn)制或三進(jìn)制)卻會導(dǎo)致精度劣化。
因此,4 位激活參數(shù)和 4 位權(quán)重參數(shù) (4A4W) 全流程硬件友好型量化解決方案可實現(xiàn)更優(yōu)異的精度/資源權(quán)衡取舍。本白皮書介紹了在 Zynq? UltraScale+? MPSoC 和 Zynq-7000 SoC 系列(16nm 和 28nm)上面向 CNN 4 位 XDPU 實現(xiàn)的低精度加速器。這種加速器通過高效地映射卷積計算,充分發(fā)揮其 DSP 功能。這種解決方案可提供優(yōu)于 XDPU 兩倍的解決方案級性能。在 ADAS 系統(tǒng)中執(zhí)行 2D 檢測任務(wù)時,這種實現(xiàn)方案能夠在 Zynq UltraScale+ MPSoC ZCU102 板上實現(xiàn) 230fps 的推斷速度,與 8 位 XDPU 相比性能提高 1.52 倍。此外,在用于 ADAS 系統(tǒng)中的不同任務(wù)時,該解決方案可實現(xiàn)媲美全精度模型的結(jié)果。

介紹
企業(yè)日益重視基于 AI 的系統(tǒng)在數(shù)據(jù)中心、汽車、工業(yè)和醫(yī)療等領(lǐng)域中的產(chǎn)品化。這帶來了兩大挑戰(zhàn):
?    AI 推斷需要完成的計算量成數(shù)量級增加,同時還要保持價格、功耗、時延和尺寸大小不變。
?    AI 科學(xué)家繼續(xù)日復(fù)一日地在算法和模型上開展創(chuàng)新,需要各種不同的硬件架構(gòu)提供最佳性能。

對持續(xù)創(chuàng)新的強烈需求則需要使用靈活應(yīng)變的領(lǐng)域?qū)S眉軜?gòu) (DSA)。優(yōu)化 AI 推斷性能和降低功耗的主要趨勢之一是使用較低精度和混合精度。為降低硬件設(shè)計復(fù)雜性,模型量化被當(dāng)作關(guān)鍵技術(shù)應(yīng)用于各類硬件平臺。大量工作被投入用于最大限度地降低 CNN 運算量和存儲成本。這項研究充分地證明,對于大多數(shù)計算機視覺任務(wù),在不嚴(yán)重犧牲精度的情況下,權(quán)重參數(shù)和激活參數(shù)可以用 INT8 表達(dá)。然而對于某些邊緣應(yīng)用而言,硬件資源仍然不足。在對邊緣應(yīng)用使用較低的位寬(如 1 位、2 位)時,一些常見的硬件設(shè)計解決方案使用簡化的乘法器。盡管這些解決方案時延低、吞吐量大,但它們與全精度模型相比,仍然存在較大的精度差距。因此,在模型精度和硬件性能之間尋求平衡變得至關(guān)重要。

運用幾種常見的網(wǎng)絡(luò)結(jié)構(gòu)((ResNet50V1[參考資料 2]、ResNet50V2[參考資料 3] 、MobilenetV1[參考資料 4]和MobilenetV2[參考資料 5]),在 ImageNet 分類[參考資料 1]任務(wù)上通過使用幾種不同的量化算法進(jìn)行了實驗。結(jié)果顯示精度隨著位寬減少而下降。尤其是在位寬低于 4 時精度下降顯著。此外,賽靈思也使用 Williams 等介紹的 Roofline 模型[參考資料 6],分析不同位寬下的硬件性能,如圖 1 所示。以賽靈思 ZCU102 評估板為例,隨著 MAC 的精度降低,硬件成本降低,性能得到提高。此外,實驗結(jié)果還顯示,低比特量化可通過降低存儲器需求提高性能。這在 ResNet-50 神經(jīng)網(wǎng)絡(luò)的卷積運算強度上得到證實。該網(wǎng)絡(luò)分別用 8 位精度和 4 位精度進(jìn)行了運算。因此, 在模型精度和硬件性能之間實現(xiàn)了最佳權(quán)衡。
1600173389189391.png
圖 1:在 ZCU102 上以不同位寬運行 Roofline 模型
 

如何量化全流程硬件友好型 CNN
為實現(xiàn)整個量化過程的硬件友好化,INT4 量化法可分為三個部分:量化機制、硬件友好型量化設(shè)計、量化感知訓(xùn)練。

量化機制
賽靈思使用經(jīng)訓(xùn)練的量化閾值 (TQT) [參考資料 7]將 DNN 從單精度浮點 (FP32) 轉(zhuǎn)換為 INT4。對于權(quán)重和激活參數(shù),量化函數(shù)可正式地寫作:
1600173510396627.png
方程 1 體現(xiàn)出輸入值 x 的量化值取決于閾值 t、位寬 b 和量化比例系數(shù)s。閾值 t 一般初始化為
待量化的張量的絕對值的最大值。隨后在訓(xùn)練過程中用 log2t 的形式進(jìn)行優(yōu)化。量化系數(shù)s是 2 的冪,具有硬件友好性。上下截斷運算去除部分離群數(shù)據(jù),加大權(quán)重參數(shù)和激活參數(shù)的分布緊密度,更有利于量化。
如上文所述,log2t 是一種在訓(xùn)練過程中可學(xué)習(xí)的參數(shù)。優(yōu)化它就能確定合適的量化范圍。與之相反,log2t 的梯度可通過鏈?zhǔn)椒▌t確定。此外,輸入值 x 的梯度也可通過下式計算:
1600173616281479.png

TQT 證明對數(shù)表達(dá)能確保閾值和輸入值的標(biāo)度不變性。采用對數(shù)方式訓(xùn)練閾值更容易管理,并且被證明是非常高效的。

硬件友好型量化設(shè)計
要進(jìn)行量化訓(xùn)練,必須從全精度網(wǎng)絡(luò)中構(gòu)建低比特網(wǎng)絡(luò)。以全流程硬件友好型量化為基礎(chǔ),下文介紹部分常用網(wǎng)絡(luò)結(jié)構(gòu)并對幾種粗粒度模塊的量化解決方案進(jìn)行總結(jié)。對于這些量化模塊,INT4 量化方法可用于多種類型的網(wǎng)絡(luò)結(jié)構(gòu)。部分常用模塊的量化解決方案如圖 2 所示。圖 2中的虛線表明能根據(jù)實際網(wǎng)絡(luò)結(jié)構(gòu)增添或者刪除。
 
1600173676507535.png


模塊 1:CBR(Conv+BN+ReLU)
作為 CNN 中的通用結(jié)構(gòu),BN 層被合并以減少訓(xùn)練和推斷過程中的觸發(fā)器數(shù)。然而,BN 層存在不一致性;批量運算在訓(xùn)練過程中使用當(dāng)前批次的平均值和方差,但在推斷過程中移動平均值和方差。如果量化的是從當(dāng)前批次的平均值和方差獲得的合并參數(shù),在推斷時就會導(dǎo)致偏差。為消除這種不匹配,應(yīng)使用下列最佳實踐[參考資料 8]、[參考資料 9]來量化這種結(jié)構(gòu)。在將 BN 折疊到 ConV 后,就對折疊到 INT4 的參數(shù)進(jìn)行量化。該模塊的量化如圖 2 (b) 所示。

模塊 2:BRC(BN+ReLU+Conv)
如圖 2 (c) 所示,在緊隨卷積層的 BN 層被合并后,仍然存在獨立的 BN 層。然而,在現(xiàn)有的 INT4 量化方法中,BN 層基本不受重視。為有效地部署這個獨立的 BN 層,一種量化神經(jīng)網(wǎng)絡(luò)[參考資料 10]的簡化方法被用于在訓(xùn)練過程中保持全精度,并在推斷過程中吸收浮點標(biāo)度和閾值偏差。這種方法可延伸用于所有線性運算(包括推斷中的卷積),同時有助于保持精度。該模塊的量化詳見圖 2 (d)。

模塊 3:加法
對于加法模塊,共享的量化層被用于量化所有輸入和輸出。根據(jù)經(jīng)驗,加法運算對精度敏感,但
占用硬件資源較少。因此該層一般量化為 8 位。此外,為了量化所有輸入和輸出,還將使用標(biāo)度共享規(guī)則。共享規(guī)則的作用是讓硬件繞過標(biāo)度計算,消除了浮點乘法的需要。如圖 2 (b) 所示,“ShareQuantize”指這些量化層共享相同標(biāo)度。
 

其他:
為確保卷積運算的輸入是 4 位,加法運算的 8 位輸出需要再次被量化為 4 位,如圖 2 中的“再量化”所示。對于第一層和最后一層,仍然進(jìn)行 INT4 量化。整個網(wǎng)絡(luò)的輸出被量化成 8 位。內(nèi)積層
與卷積層保持一致。

量化感知訓(xùn)練
量化感知訓(xùn)練通常被用作一項關(guān)鍵技術(shù),用來降低低比特模型與全精度模型之間的精度差。在本白皮書描述的 INT4 量化方法中,它仍起著不可或缺的作用。量化感知訓(xùn)練過程都使用算法 1(如下所示)。

算法 1:逐層量化感知訓(xùn)練輸入:
全精度輸入、權(quán)重和偏差:X、W、Bias

針對輸入和權(quán)重的可學(xué)習(xí)對數(shù)域閾值:ax、aw、abias
位寬:針對輸入和權(quán)重,b=4;針對偏差,b=8

輸出:

輸出:Y

1.    初始化 ax = log2 max (|x|),aw = log2 max (|w|),abias = log2 max (|bias|)
2.    根據(jù)方程 1 計算 q(x)、q(w)和 q(bias)

3.    Y = Forward(q(x), q(w), q(bias))

4.    計算分類損耗:Loss。對所有可學(xué)習(xí)參數(shù)使用正則化方法。

5.     參閱方程 3
圖片.png

6.    使用 Adam 更新全精度參數(shù)

(未完待續(xù))




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉