新聞中心

EEPW首頁 > 智能計算 > 牛人業話 > 賽靈思器件上的 INT4 優化卷積神經網絡(1)

賽靈思器件上的 INT4 優化卷積神經網絡(1)

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

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

本文引用地址:http://www.303263.tw/article/202009/418351.htm

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

介紹
企業日益重視基于 AI 的系統在數據中心、汽車、工業和醫療等領域中的產品化。這帶來了兩大挑戰:
?    AI 推斷需要完成的計算量成數量級增加,同時還要保持價格、功耗、時延和尺寸大小不變。
?    AI 科學家繼續日復一日地在算法和模型上開展創新,需要各種不同的硬件架構提供最佳性能。

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

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

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

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

TQT 證明對數表達能確保閾值和輸入值的標度不變性。采用對數方式訓練閾值更容易管理,并且被證明是非常高效的。

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


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

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

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

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

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

算法 1:逐層量化感知訓練輸入:
全精度輸入、權重和偏差:X、W、Bias

針對輸入和權重的可學習對數域閾值:ax、aw、abias
位寬:針對輸入和權重,b=4;針對偏差,b=8

輸出:

輸出:Y

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

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

4.    計算分類損耗:Loss。對所有可學習參數使用正則化方法。

5.     參閱方程 3
圖片.png

6.    使用 Adam 更新全精度參數

(未完待續)




評論


相關推薦

技術專區

關閉
河北快3一定牛买星