- Advertisement -
首頁 技術頻道 AI推論執行有道 INT4運算全精度優化

AI推論執行有道 INT4運算全精度優化

- Advertisement -

因此,4位元啟動參數和4位元權重參數(4-bit Activations and 4-bit Weights, 4A4W)Hardware-friendly型量化解決方案可實現更優異的精度/資源權衡取捨。本文介紹在Zynq UltraScale+MPSoC和Zynq-7000SoC系列上針對CNN 4位元XDPU實現的低精度加速器,其透過高效映射卷積運算,充分發揮其DSP功能。這種解決方案可提供優於XDPU兩倍的性能。而在ADAS系統中執行2D檢測任務時,這種實現方案能夠在MPSoC ZCU102基板上實現230fps的推論速度,與8位元XDPU相比,性能提高了1.52倍。此外,在用於ADAS系統中的不同任務時,該解決方案可實現媲美全精度模型的結果。

網路結構剖析

企業日益重視使用AI的系統在資料中心、汽車、工業和醫療等領域中的產品化。這帶來了兩大挑戰,如AI推論需要完成的運算量規模增加,同時還要保持價格、功耗、延遲和尺寸大小不變;以及AI科學家繼續日復一日地在演算法和模型上開展創新,也需各種不同的硬體架構提供最佳性能。

針對持續創新的強烈需求則需要使用彈性的領域專用架構(DSA)。優化AI推論性能和降低功耗的主要趨勢之一,是使用較低精度和混合精度。為降低硬體設計複雜性,模型量化被當作應用於各類硬體平台的關鍵技術。大量工作被投入用於大幅降低CNN運算量和儲存成本。本文充分地證明,對於大多數電腦視覺任務,在不嚴重犧牲精度的情況下,權重參數和啟動參數可以用INT8表示。然而對於某些邊緣應用而言,硬體資源仍然不足。在針對邊緣應用使用較低的位元寬度(如1或2位元)時,一些常見的硬體設計解決方案使用簡化的乘法器。儘管這些解決方案延遲低、輸送量大,但它們與全精度模型相比,仍然存在較大的精度差距。因此,在模型精度和硬體性能之間尋求平衡變得至關重要。

本文運用幾種常見的網路結構,在ImageNet分類任務上透過使用幾種不同的量化演算法進行實驗。結果顯示精度隨著位元寬度減少而下降。尤其是在位元寬度低於4時,精度下降幅度顯著。此外,也使用Samuel Williams等人提出的Roofline模型,分析不同位元寬度下的硬體性能,如圖1所示。以賽靈思ZCU102評估板為例,隨著MAC的精度降低、硬體成本降低,性能獲得提升。此外,實驗結果還顯示,低位元量化可透過降低記憶體需求提高性能。這在ResNet-50神經網路的卷積運算強度上獲得證實,該網路分別用4和8位元精度進行了運算。因此,INT4在模型精度和硬體性能之間實現了較佳的平衡。

圖1 ZCU102上以不同位元寬度運行Roofline模型

如何量化全流程Hardware-friendly型CNN

為實現整個量化過程的Hardware-friendly化,INT4量化法可分為三個部分:量化機制、Hardware-friendly型量化設計、量化感知訓練。

・量化機制

本文使用經訓練的量化臨界值(TQT)將DNN從單精確度浮點(FP32)轉換為INT4。對於權重和啟動參數,量化函數可正式寫成:

 

其中n=-2b-1,p=2b-1-1,為有符號資料;n=0,p=2b-1及為無符號資料。

 

公式1表示輸入值(x)的量化值取決於臨界值(t)、位元寬度(b)和量化比例係數(s)。臨界值t一般初始化為待量化張量的絕對值之最大值。隨後在訓練過程中用log2t的形式進行優化。量化係數是2的冪,具有Hardware-friendly特性。若將上下截斷運算去除部分離群資料,加大權重參數和啟動參數的分布緊密度,更有利於量化。

如上文所述,log2t是一種在訓練過程中可學習的參數,優化它就能確定合適的量化範圍;與之相反,log2t的梯度可透過鏈式法則確定。此外,輸入值的梯度也可透過下方公式運算:

 

對於[x](四捨五入)和[x](正無窮取整數),不可微函數STE被用於確定梯度,定義如下方公式所示。

 

 

TQT證明對數表達能確保臨界值和輸入值的標度不變性。採用對數方式訓練臨界值更容易管理,並且已證明是較高效的。

・Hardware-friendly型量化設計

要進行量化訓練,必須從全精度網路中構建低位元網路。以流程化Hardware-friendly型量化為基礎,下文介紹部分常用的網路結構,並針對幾種粗細微性模組的量化解決方案總結。對於這些量化模組,INT4量化方法可用於多種類型的網路結構;部分常用模組的量化解決方案如圖2所示。圖2中的虛線表示能根據實際網路結構增添或者刪除。

圖2 模組量化

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

再來為BRC(BN+ReLU+Conv)模組,如圖2(c)所示,在緊隨卷積層的BN層被合併後,仍然存在獨立的BN層。然而,在現有的INT4量化方法中,BN層原則上不受重視。為有效部署這個獨立的BN層,有種量化神經網路的簡化方法被用於在訓練過程中保持全精度,並在推論過程中吸收浮點標度和臨界值偏差。這種方法可延伸用於所有線性運算(包括推論中的卷積),同時有助於保持精度。該模組的量化詳見圖2(d)。

而於加法模組中,其占用硬體資源較少。因此該層一般量化為8位元。此外,為了量化所有輸入和輸出,將使用標度共用規則。共用規則的作用是讓硬體繞過標度運算,消除了浮點乘法的需要。如圖2(b)所示,「ShareQuantize」指這些量化層共用相同標度。

至於其他則為確保卷積運算輸入是4位元,加法運算的8位元輸出需要再次被量化為4位元,如圖2中的「再量化」所示。針對第一層和最後一層,仍然進行INT4量化,整個網路的輸出被量化成8位元,且內積層與卷積層保持一致。

・量化感知訓練

量化感知訓練通常被作為關鍵技術,用來降低低位元模型與全精度模型之間的精度差。在本文描述的INT4量化方法中,它仍具備不可或缺的作用。量化感知訓練過程都使用以下所示的逐層量化感知訓練演算法。

於輸入方面,其為全精度輸入、權重和偏差:X、W、Bias;針對輸入和權重的可學習對數域臨界值:ax、aw、abias;位元寬度:針對輸入和權重,b=4;針對偏差,b=8。而輸出:Y,初始化ax=log2max(|x|),aw=log2max(|w|),abias=log2max(|bias|),同時根據公式1運算q(x)、q(w)和q(bias)。而Y=Forward(q(x),q(w),q(bias));運算分類損耗為:Loss,針對所有可學習參數使用正則化方法。可參閱以下公式,並使用Adam更新全精度參數。

於DSP晶片最佳化INT4f

使用DSP硬體資源可實現乘法和加法密集型(Multiply-accumulate, MAC)占用硬體資源較少。經優化後,DSP能夠在16或28nm元件上處理較多的MAC運算。以16nm為例,賽靈思可程式設計元件中UltraScale架構的DSP48E2晶片就屬於專用晶片,其由一個27×18二進位補數乘法器和一個48位累加器構成。如圖3所示,MAC能使用DSP晶片完成。

圖3 MAC模式下的晶片

INT4優化

在低精度MAC運算中,相乘方式是a×b。其中a是4位元無符號啟動參數資料;b則是4位元有符號權重參數資料。該晶片可被配置成4通道乘法運算,如圖4所示。

圖4 4通道封裝晶片的配置模式

該晶片的埠A是27位元寬度、埠B是18位元寬度。iNT4×uiNT4相乘產生的結果至少有8位元寬度。

充分利用DSP資源的前提是在多個相乘被打包在一起時,可確保輸出結果保持正確。為確保這一點,通道之間添加了保護位元。當四個MAC通道被打包在一起時,需要在兩路輸入間布置足夠的保護位元。根據晶片設計,保護位元被設置為3位元:

 

第一個通道A1×W1被布置在對應埠的4LSB上,下一個通道A2×W1需要移位元至少8位元才能正確運算;第二個通道與第一個通道共用權重參數資料W1。埠B中的A2移位11位。3位元保護位元用於最大化DSP資源的利用;最後一個運算元W2被分配給埠A。最後兩個通道是A1×W2和A2×W2。權重參數是有符號資料。在相乘開始前,使用27位預加法器打包兩個權重參數資料。因為W1需要符號擴展,所以W2不能布置在D埠的四個MSB上。如果W2在MSB中,當W1<0且W2=-8時,預加法器就會溢出。後48位加法器可作為累加器,透過級聯對之前層次的DSP結果進行相加。單個晶片就能在單時序週期內實現四通道MAC。

結果的位元寬度在累加後增大。Hardware-friendly型量化器是一組移位暫存器,它可以透過指令控制移位元的位元數。移位元運算為Hardware-friendly型。在低精度CNN中,卷積能夠使用兩種量化方法之一。一種是逐運算位元輸出8位元;另一種是針對下一卷積輸出4位元。透過優化演算法,兩種量化方法都能量化成2k的步伐長度。差別在於輸出資料的位元寬度以及它們是否是有符號資料。

DSP強化使用

DSP雙數據速率(DDR)技術被用於改進晶片實現的性能。因此需要為DPU提供兩個輸入時序:一個用於通用邏輯,另一個用於DSP晶片。未採用DSPDDR技術的DPU和採用強化使用模式的DPU之間的差異如圖5所示。

圖5 未採用DDR的DSP和DSP強化使用之間的差異

運算圖因應CNN要求

卷積是CNN網路的主要運算要求。卷積的實際運算任務如下:

其中Anf是浮點特徵圖,Wnf是浮點權重。其本質上是MAC運算。根據新量化感知訓練解決方案,浮點的卷積運算按如下方式進行量化:

 

其中axf、awf和abf是標度。這些浮點參數被轉換成2k×2k。這是一種Hardware-friendly型標度,能夠在FPGA中使用移位運算實現。

DSP模組在一個時序週期中需要兩個權重和兩個特徵,其中彼此都能共用,如圖6所示。

圖6 卷積運算任務和乘法器共用方式

其中Anf是浮點特徵圖,Wnf是浮點權重。其為MAC運算。根據新量化感知訓練解決方案,浮點的卷積運算如以下方式進行量化:

模型量化與性能模擬

下面的篇幅講解量化感知訓練中使用的CV任務。這些任務包括影像分類、姿態估計、2D檢測、3D檢測、語義分割和多工處理。

基準分類模型

在完成ImageNet分類資料叢集上的實驗後,得到以下結果。網路包括ResNet50-V1、ResNet50-V2。在所有實驗中,資料叢集均從浮點模型進行微調。所有偏差參數都量化到8位元,實驗結果如表1所列。

而基準分類模型的結果參見表1。它體現了這種方法的有效性,對ResNet50V1而言,4位元與8位元XDPU解決方案在前1精度上的差距僅有1.4%,在前5精度上的差距則僅有0.9%。

表1 不同位元寬度下類ResNet50的網路精度

即時ADAS模型解析

為進一步驗證量化方法的通用性,也在真實場景下開展了其他CV任務。

・姿態估計

姿態估計任務使用更加複雜的堆疊Hourglass網路。透過在MPII資料叢集上開展姿態估計實驗,評估逐層模式下兩個網路結構的精度。結果參見表2。

在表2中,hg-s2-b1意謂著堆疊數量是2,模組數量是1;hg-s8-b1意謂著堆疊數量是8,模組數量是1,因此證明INT4量化解決方案實現了可相比浮點模型的精度。\

表2 不同位元寬度下的Hourglass網路精度

・2D檢測

在ADAS系統中,BDD100K數據叢集用於2D檢測。此外,特徵金字塔網路(FPN)結構被添加到ResNet18-SSD中作為檢測網路,而實驗結果如表3所示。

表3所示的是在經過微調後,8位元量化模型實現了高於浮點模型的mAP。透過逐漸從8位元微調到4位元,最終4位元量化模型的mAP損耗小於2%。

表3 不同位元寬度下的檢測精度

・3D檢測

ADAS系統的3D檢測任務使用KITTI資料叢集,而PointPillars用於開展3D預測任務,實驗結果如表4所示。

如表4所示,採用微調技巧後,4位元量化模型的精度僅比浮點模型低0.16%。

表4 不同位元寬度下的3D檢測結果

・語義分割

在ADAS系統的語義分割任務中,CityScape的資料叢集以理解城市視覺場景為重點。實驗在以ResNet18為基礎的特徵金字塔網路上開展。結果如表5所示。

表5顯示,8位元模型可實現比浮點模型更高的mIoU,4位元模型的mIoU僅比浮點模型低1.7%。語義分割的示意圖參見圖7。

表5 不同位元寬度下的語義分割精度
圖7 語義分割示意圖

・多工學習

為增強模型的歸納功能和精度,在多工模型中使用了多個訓練資料集,包括用於檢測的Waymo和BDD100k,以及用於分割的BDD100k和Cityscapes。這些研究在以ResNet18為基礎的特徵金字塔網路(FPN)上開展。結果如表6所示。

表6顯示,8位元量化模型可實現優於浮點模型的mAP和與浮點模型保持同等水準的mIoU。透過逐步微調,與浮點模型相比,最終的4位元量化模型的mAP降低1.66%,mIoU提高1.79%,仍然劣於8位元模型的表現。

表6 不同位元寬度下的多工精度

 

競爭分析:8位元/4位元對比

4位元XDPU在下列三種評估板上以300MHz頻率運行:Ultra96、Zynq UltraScale+ MPSoC ZCU104和ZCU102。表7所示為4和8位元XDPU的比較情況。在不同的FPGA上,4位元XDPU實現的性能提升1.5倍到2.0倍之間。例如,ZCU102板使用的硬體資源沒有增加,但性能提高2倍。

表7 4和8位元XDPU的性能比較

對於兩個精度不同的加速器,在啟用池化、逐運算單元逐深度卷積和平均池化等全部功能後,針對資源進行比較。如表8中所示,在相同的性能架構下,DSP和RAM的占用顯著下降。有鑑於資源耗用下降,4位元XDPU架構被擴展到B8192的最大規模。使用B8192架構能以單元件實現更高性能。

表8 4和8位元XDPU的資源消耗比較

 

若以表3中13.6FLOP的2D檢測模型為例,兩個高精度模型4/4和8/8分別使用4和8位元XDPU進行測試。該網路的運算要求是13.6GOP。2D檢測網路的訊框率如表9所示,測試不包含預處理和後處理。有鑑於效率和網路類型的差異,性能和訊框率之間不存在線性關係。如表9所示,4位元XDPU的訊框率在所有平台上均優於8位元XDPU。

表9 4和8位元DPU之間的訊框率比較

本文介紹了一種運行在Zynq UltraScale+ MPSoC和Zynq-7000 SoC系列元件上的完整流程、Hardware-friendly型量化解決方案,可作為CNN的低精度加速器。此外,本文也介紹如何在DSP晶片上優化INT4,進而在一個時序週期內完成4通道INT4相乘。卷積運算要求可透過打包DSP予以滿足。與INT8 XDPU解決方案相比,使用DSP實現的INT4優化在真實硬體上可將處理峰值GOPS提升最高2倍,並將性能提升至最高1.77倍。

(本文作者皆任職於賽靈思Xilinx)

相關文章

- Advertisement -
- Advertisement -

最新文章

- Advertisement -

熱門文章

- Advertisement -

編輯推薦

- Advertisement -