最新組合式模型量化方法,實現FPGA最高硬件利用率,準確率-推理速度達到SOTA...


作者 | 王言治

來源 | AI科技大本營(ID:rgznai100)

深度神經網絡(DNN)在圖像、語言處理等領域獲得了巨大成功,而如何將這些網絡部署在ASIC、FPGA等嵌入式設備仍是熱門研究方向。結構搜索,以及傳統的剪枝、量化等壓縮方法,都可以有效減小模型的內存佔用和計算量,故而已經成爲模型部署前的必經工序。其中模型的量化操作簡單,收益直觀,可以在損失很小的精度的前提下輕鬆將模型大小壓縮數倍,成倍的提升運算速度,故而一直是模型壓縮的熱點研究方向。

近期美國東北大學王言治教授和林雪教授研究組提出了一種組合式量化方法,在獲得更高準確率的同時,最大限度提升了FPGA的硬件利用率,實現了SOTA的準確率-推理速度共同優化。

該文章提出的Mixed Scheme Quantization (MSQ) 在Zynq XC7Z020 and XC7Z045上分別實現了2.1倍和4.1倍的加速,並將多任務模型在4bit下保持與浮點模型相似的精度。該文章收錄於計算機體系結構頂會The 27th IEEE International Symposium on High-Performance Computer Architecture (HPCA-27)。

現有的量化方法

模型量化是指將權重和中間特徵用更低的bit數表示,例如相比於FP32(浮點數),int8、int4甚至binary(1-bit)、ternary(2-bit)可以成倍減少模型大小,並極大的提升運算速度。難點在於,一方面,如何在使用低比特的同時保持模型的準確率,如binary和ternary量化,一般會造成分類任務(如ImageNet)上3%-10%的精度損失。另一方面,低比特算子本身的設計也要依據不同硬件平臺的支持情況制定最優方案。現有的低比特算子主要可以分爲如下兩類。

定點數量化:直觀的用低比特定點數代替浮點數,從而利用硬件支出更低的低比特乘法和加法。

2的冪量化:將權重量化爲2的冪形式,從而權重與輸入的乘法操作可以被替換爲成本極低的移位運算,可以較大地提升運算速度。但是其量化數值的分佈極端不均勻常常導致精度下降。

基於此,該文專注於更容易保持精度的4比特量化,在算子上同時採用了定點數和2的冪量化方法。

本工作的方法

由圖所示,以4比特量化爲例,定點量化是均勻分佈量化中心點,所以可以達到較少的準確率損失。但網絡間的運算操作仍是較複雜的乘法運算。反之,2的冪則可通過移位加法大幅提升運算速度,但由於2的冪的不均勻分佈(多數量化中心點集中於0附近)導致單純使用2的冪量化則會產生無法忽視的準確率損失。此外,提升2的冪量化的比特數僅會過度提升0附近分辨率,並不能改善精度損失。

如何才能魚與熊掌兼得?此篇論文首先使用兩個2的冪之和作爲量化數值的表示形式,也就是sum-power-of-2(SP2)。SP2有類似定點量化的均勻分佈,同時其分辨率在0附近相對較高,更適合高斯分佈的權重。SP2可以加法以及移位取代原先昂貴的乘法運算,進而大大提升了運算速度,並保持了準確率。

再進一步透過上表可以詳細瞭解定點量化以及2的冪之和量化方法兩者間的運算差異。以一次權重與激活函數運算爲例,若是定點量化,必須進行累加多次,是較爲複雜的乘法運算。反之,若是SP2量化,只需進行兩次移位以及一次加法就能完成,如此作法將能大大節省了運算成本!

然而,僅僅如此是不夠的,因爲不論是上述何種量化方法,均只能利用硬件資源的一部分,導致剩餘部分閒置浪費。現有的方法大多數侷限於對某一種方法的設計與提升,而忽視了在特定硬件,例如FPGA上,存在着多種計算模塊可供利用。此時,設計不同的算子在相應模塊上並行計算,將大大提升硬件利用效率。

本工作同時採用定點數和2的冪兩種量化方法 Mix scheme quantizaiton(MSQ),如下圖顯示,可以定點量化以及2的冪量化分別採取異質化的設計,前面也提到因爲定點數的乘法較爲複雜,所以定點數可以置於FPGA的DSP模塊上運算,而2的冪量化方法,由於已經將乘法替換爲移位運算,則可以完全置於Look Up Table (LUT)模塊進行計算,如此可以平行充分利用了FPGA的運算資源,所以在運算速度上將顯着比僅使用定點量化或是2的冪量化都來得更加高效。

至於如何決定神經網絡層裡哪些權重要是定點量化,哪些權重又必須是2的冪之和量化,在AUTOQ: AUTOMATED KERNEL-WISE NEURAL NETWORK QUANTIZATION ㄧ文(第7頁)也提到,透過強化學習進行模型結構搜索,發現他們的算法可以針對不同卷積核中的權重方差來給予不同精度分配。

換個角度思考,若單純以每個濾波器的方差進行判斷,決定哪個濾波器要使用定點量化或是2的冪之和量化,既可以直接省去大量結構搜索的時間,又天然的適合硬件並行運算。並且,雖然2的冪之和量化中心附近較單純2的冪量化分佈更加均勻,但仍然有集中在0附近的趨勢。所以,把權重分佈較均勻(方差大)的過濾器使用定點量化,而權重分佈較集中於0附近的(方差小)過濾器則採用2的冪之和量化,不僅簡潔直觀地解決了不同量化方法的選取問題,還能在準確率上進一步提升甚至達到無損。

算法實現

確定了量化目標,該文采用直通估計器(STE)和 ADMM(Alternating Direction Method of Multipliers)兩種量化算法,分別應用於中間特徵和權重的量化。其中權重採用的ADMM算法具有非常強的自由度和收斂效果,適合自定義的SP2量化目標。而中間特徵參與運算時,在權重是SP2的情況下就可以做到移位運算,故而全部採用直通估計器做簡單的定點數量化。

模型精度展示

在準確率的結果表現上,MSQ超越現行各種SOTA的量化方法,以下表ResNet-18在Imagenet 資料集表現爲例,MSQ比未量化前的基礎模型更加提升了0.51%的準確率。(量化帶來的預防過擬合效果)且不僅僅是在圖像分類上準確率達到最高,同樣在YOLO-v3目標檢測的任務上也有相當不錯的結果,在640分辨率下mAP幾乎無損。另外,在語音識別的任務上同樣可以在4bit輕鬆達到不掉精度的效果。驗證了MSQ框架的泛用性,非僅限於單一任務。

硬件利用率與推理速度

在硬件利用率方面,他們以MSQ與傳統定點量化方法相比,並分別實驗在兩塊FPGA(XC7Z045以及XC7Z020)上。如下圖顯示,由於傳統定點量化方法多數僅能利用FPGA的DSP運算資源,導致XC7Z020的LUT資源僅使用45%,XC7Z045更只使用了24%。隨着2的冪之和使用比例的提升,LUT的資源利用率也相應增加,最終他們提出的MSQ量化框架在同樣DSP用滿的情況下,XC7Z020的LUT資源使用達77%,XC7Z045的LUT資源利用也有72%。

硬件利用率也直接指導了算法上最優的定點數-SP2選取比例。根據該文的實驗結果,在運算單元較少的XC7Z020芯片上,定點數-SP2比例在1:1.5時並行效果最好,硬件吞吐量達到最大。而對於更大的XC7Z045,這個比例在1:2時達到最優。

FPGA的LUT資源利用率的提升也反映在吞吐量上,如下表顯示,以XC7Z020 爲例,相比傳統定點量化方法,MSQ的峯值吞吐量增加了2.5倍(從52.8到132GOPS),XC7Z045更提升多達3倍(208到624GOPS)。

論文中也提及延遲度表現對比,XC7Z020在傳統4比特定點量化的ResNet-18處理每張圖片的延遲爲100.7毫秒,在MSQ量化框架下僅需47.1毫秒,提升2.13倍。XC7Z045也從25.1毫秒減少至10.1毫秒,提升倍率爲2.49倍。若與現行通用的8比特量化框架相比,MSQ在XC7Z020可以減少3.83倍的延遲,XC7Z045延遲更能減少至4.48倍。在能量效率上,基於MSQ 4比特量化的FPGA推理相比於基於Tensor-RT的輕量GPU NVIDIA Jetson AGX 能耗低3倍(4W vs. 15W), 同時速度更快(ResNet-18: 99FPS vs. 78FPS)。

結語

如何依據不同的硬件設備提出最優的量化框架仍然是一個極具挑戰性的課題。MSQ融合不同量化方法達到最佳硬件利用率的創新思維,爲模型量化提出不同維度的解決方案,並且能在極小或是無準確率損失的情況下減少2-4倍的延遲。

論文鏈接:

https://arxiv.org/pdf/2012.04240.pdf

作者簡介:

王言治是美國東北大學電子與計算機工程系助理教授。他在清華電子系和南加州大學拿到本科和博士學位。他的主要研究方向是深度神經網絡的加速與安全性。他們的CoCoPIE壓縮編譯協同優化框架可以實現大多數神經網絡在移動端的實時推理。他的文章廣泛發表於各個頂會頂刊,包括機器學習方向AAAI,CVPR,ICML,ICCV,ICLR,IJCAI,ECCV等,電路與設計自動化方向DAC,ICCAD,ISSCC,FPGA等,計算機系統方面ASPLOS,ISCA,MICRO,HPCA,CCS,VLDB,PLDI,ICS,PACT等。他的文章引用超過7200次,得過Google,Mathworks, Intel等研究獎項,得過4項最佳論文獎,另外10次提名,多次設計競賽獎項。他的研究工作被媒體廣泛報道和引用超過400次。他的多位學生已經在各個學校擔任教職,包括康涅狄格大學,克萊姆森大學等,工作單位包括谷歌、臉書、騰訊、滴滴(超新星員工)。

更多精彩推薦
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章