《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 人工智能 > 業(yè)界動(dòng)態(tài) > 自動(dòng)駕駛中神經(jīng)網(wǎng)絡(luò)模型量化技術(shù):INT8還是INT4?

自動(dòng)駕駛中神經(jīng)網(wǎng)絡(luò)模型量化技術(shù):INT8還是INT4?

2021-03-21
來源: 黑芝麻智能科技

  forward (23).jpg

      編者按:在自動(dòng)駕駛領(lǐng)域,神經(jīng)網(wǎng)絡(luò)的模型量化技術(shù)是一個(gè)研究熱點(diǎn)。本文主要討論在維持實(shí)時(shí)性與安全性兩項(xiàng)重要指標(biāo)的同時(shí),INT8INT4的模型量化數(shù)據(jù)比較,并揭示了INT8作為當(dāng)前市場主流技術(shù)的原因。

  背景介紹

  如今深度神經(jīng)網(wǎng)絡(luò)(DNN)已成為大多數(shù)AI應(yīng)用程序中的常見算法,比如計(jì)算機(jī)視覺、語音識(shí)別和自然語言處理等方面,這些網(wǎng)絡(luò)所表現(xiàn)的超強(qiáng)能力使其成為AI歷史的里程碑。但是,它們一方面具有最先進(jìn)的性能,另一方面卻需要巨大的計(jì)算能力。因此可以看到,已經(jīng)有許多硬軟件的優(yōu)化技術(shù)以及專門的體系結(jié)構(gòu)開發(fā),在不影響其準(zhǔn)確度的情況下,能夠高性能和高效率地運(yùn)行這些模型【8】。

  在AI最具有挑戰(zhàn)性應(yīng)用之一的自動(dòng)駕駛系統(tǒng)中,DNN的優(yōu)秀表現(xiàn)也比比皆是。對(duì)于自動(dòng)駕駛領(lǐng)域而言,實(shí)時(shí)性和安全性這兩項(xiàng)要求遠(yuǎn)超其它領(lǐng)域的指標(biāo)。

  NN模型加速和優(yōu)化技術(shù)大致分為四個(gè)方案:參數(shù)量化、剪枝和共享、低秩分解、遷移/緊湊卷積濾波器和知識(shí)蒸餾等【1】。參數(shù)量化、剪枝和共享的方法探索模型參數(shù)的冗余,并嘗試刪除冗余和非關(guān)鍵參數(shù)。低秩分解的技術(shù)使用矩陣/張量分解來估計(jì)DNN的信息參數(shù)。遷移/緊湊卷積濾波器的方法設(shè)計(jì)了特殊的結(jié)構(gòu)卷積濾波器,以減少參數(shù)空間,并節(jié)省存儲(chǔ)/計(jì)算量。知識(shí)蒸餾方法學(xué)習(xí)蒸餾模型,并訓(xùn)練更緊湊的神經(jīng)網(wǎng)絡(luò)以復(fù)現(xiàn)較大網(wǎng)絡(luò)的輸出。

  DNN模型可以具有上億個(gè)參數(shù),在計(jì)算中要存儲(chǔ)的數(shù)據(jù)很大。研究表明,在最佳情況下,可以預(yù)測神經(jīng)網(wǎng)絡(luò)中超過95%的參數(shù)。這意味著,更簡單的模型參數(shù)化可以保持DNN的性能。量化(quantization)被認(rèn)為是滿足DNN模型內(nèi)存要求的最有效方法之一。減少內(nèi)存限制的主要技術(shù)之一是減少量化位寬或比特寬(bit width)【3】。

  模型參數(shù)可以采用32位/比特浮點(diǎn)(FP32)格式表示,但不如以定點(diǎn)(fixed point)格式表示,因?yàn)檫@幾乎沒有精度損失,甚至更高,但計(jì)算量卻較低。這種策略不僅可以減少占用的內(nèi)存,還可以減少與計(jì)算相關(guān)的功耗。但是,DNN模型的每一層對(duì)準(zhǔn)確性都有不同的影響,因此可以使用細(xì)粒度的混合精度量化方法,其中每層權(quán)重和激活值的位寬不同。

  現(xiàn)在人們已經(jīng)證明,F(xiàn)P32訓(xùn)練的參數(shù)可以改成8位/比特整數(shù)(INT8)做推理,沒有顯著精度損失,甚至訓(xùn)練時(shí)候采用INT8也可以。Xilinx 公司實(shí)驗(yàn)中發(fā)現(xiàn)INT8可以在一個(gè)批處理大小的推理中實(shí)現(xiàn)性能無損,不用重新訓(xùn)練。

  另外,DNN對(duì)噪聲也具有魯棒性。在權(quán)重或輸入上添加噪聲,有時(shí)候可以獲得更好的性能。隨機(jī)噪聲充當(dāng)正則化項(xiàng),可以更好地泛化網(wǎng)絡(luò)。量化DNN的低精度操作,也被看作是不會(huì)損害網(wǎng)絡(luò)性能的噪聲。

  模型量化

  量化是通過一組離散符號(hào)或整數(shù)值去逼近一個(gè)連續(xù)信號(hào)的過程。大多數(shù)情況是指低比特量化(low bit quantization)。早在1990年代就有人提出了將浮點(diǎn)參數(shù)轉(zhuǎn)換為數(shù)值精度較低的數(shù)據(jù)類型這種量化神經(jīng)網(wǎng)絡(luò)的方法。 從2010年代起,因?yàn)镮NT8被證明可以加速推理(inference)而不會(huì)顯著降低準(zhǔn)確性,人們對(duì)這項(xiàng)技術(shù)重新產(chǎn)生了興趣。

  大多數(shù)神經(jīng)網(wǎng)絡(luò)都使用FP32進(jìn)行訓(xùn)練(training)。FP32參數(shù)表示其實(shí)精度比所需精度更高。將FP32參數(shù)轉(zhuǎn)換為低位/比特整數(shù)表示可以顯著地減少帶寬、能耗和芯片面積。

  量化參數(shù)通??梢约铀偕窠?jīng)網(wǎng)絡(luò)推理,實(shí)際情況取決于處理器和執(zhí)行環(huán)境。有時(shí)候降低精度并不總是能達(dá)到預(yù)期的加速比。例如,由于量化和反量化的附加操作,INT8推理無法在FP32實(shí)現(xiàn)4倍加速。例如谷歌TensorFlow-Lite 和英偉達(dá)TensorRT 的INT8推理速度也只提高了2-3倍。批處理大?。˙atch size)是指前向傳遞中處理多個(gè)圖像的能力,增加這個(gè)可讓Tensor RT在INT8精度實(shí)現(xiàn)3-4倍的加速。

  神經(jīng)網(wǎng)絡(luò)模型的偏差項(xiàng)(bias terms)在線性方程中會(huì)引入了截距。它們通常被視為常量,幫助網(wǎng)絡(luò)訓(xùn)練并適配給定數(shù)據(jù)。由于偏差占用最少的內(nèi)存(例如,10進(jìn)-12出的全聯(lián)接網(wǎng)絡(luò)即FCL,有12個(gè)偏差值,對(duì)應(yīng)120個(gè)權(quán)重值),所以一般建議偏差保持滿精度。如果做偏差量化,則可以乘上特征尺度和權(quán)重尺度。

  常見技術(shù)

  量化方法的研究可分為兩個(gè)領(lǐng)域:1)量化覺察訓(xùn)練(Quantize-awaretraining,QAT);2)訓(xùn)練后量化(Post training quantization,PTQ)。

  PTQ指對(duì)訓(xùn)練的模型量化權(quán)重并重新優(yōu)化模型以產(chǎn)生尺度化的量化模型。QAT則是指微調(diào)穩(wěn)定的滿精度模型或者重新訓(xùn)練量化的模型,這樣實(shí)數(shù)權(quán)重通常會(huì)尺度化為整數(shù)值。

  量化方法也可以根據(jù)數(shù)據(jù)分組量化的方式大致分類為:1)按層方式;2)按通道方式。按照參數(shù)的量化帶寬,可以定義為N-比特量化。還有另外一種劃分方法是:1)確定性(deterministic quantization)2) 隨機(jī)性(stochastic quantization)/概率性。確定性量化,其量化值與實(shí)際值之間存在一對(duì)一的映射關(guān)系;而隨機(jī)性量化,其權(quán)重、激活值或梯度是離散分布的,而量化值是從這些離散分布中采樣而來。

  如果要量化的目的是實(shí)現(xiàn)硬件加速,則應(yīng)首選確定性量化,因?yàn)榭梢灶A(yù)先指定適當(dāng)?shù)牧炕?jí)別,以便在專用硬件上運(yùn)行量化網(wǎng)絡(luò),對(duì)硬件的性能預(yù)期得到改善。概率量化與確定性量化的不同之處在于,其量化的權(quán)重更易于解釋??梢酝ㄟ^概率量化來了解權(quán)重的分布,并且可以深入了解網(wǎng)絡(luò)的工作原理。由于貝葉斯方法的正則化效應(yīng),借助概率量化還可以擁有稀疏的模型。

  注:參數(shù)聚類和共享的做法有些不同。部分量化(partial quantization)方法使用聚類算法(例如k-均值)對(duì)權(quán)重狀態(tài)進(jìn)行量化,然后將參數(shù)存到一個(gè)壓縮文件中。權(quán)重可以使用查找表或線性變換進(jìn)行解壓縮。通常這是在執(zhí)行推理(inference)時(shí)進(jìn)行。FCL(全聯(lián)接層)可以通過這種方法極大地壓縮權(quán)重。不過,這種方案僅是降低了模型的存儲(chǔ)開銷。

  半精度浮點(diǎn)數(shù) (half precision FP16) 在英偉達(dá)GPUs和ASIC加速器已經(jīng)普遍應(yīng)用,精度損失很小。可以采用FP16混合精度做模型訓(xùn)練,包括權(quán)重、激活數(shù)值和梯度等更新和存儲(chǔ),其中權(quán)重更新的累積誤差用FP32。這樣的做法已經(jīng)證明可達(dá)到最佳性能,甚至比原來的浮點(diǎn)數(shù)網(wǎng)絡(luò)更好。

  飽和量化(Saturated quantization)用于帶標(biāo)定集(calibrationdataset)的標(biāo)定算法,可生成特征的尺度量。激活值量化后與以前的浮點(diǎn)數(shù)據(jù)具有相似的分布。Kullback-Leibler發(fā)散度(也稱為相對(duì)熵或信息發(fā)散度)標(biāo)定量化(calibrated quantization)方法已被廣泛應(yīng)用,對(duì)許多常見模型,這樣可以在不降低精度的情況下做到網(wǎng)絡(luò)提速。另外模型微調(diào)過程也可以采用這種方法。

  參數(shù)量化可以看成是一個(gè)窮舉搜索問題,優(yōu)化中發(fā)現(xiàn)的尺度量可以減少誤差項(xiàng)。給定一個(gè)浮點(diǎn)數(shù)網(wǎng)絡(luò),量化器采用最小化L2誤差得到初始尺度量,用于量化第一層權(quán)重。然后,調(diào)整尺度找到最低輸出誤差。如此這樣,每個(gè)層依次執(zhí)行該操作,直到最后一層。

  量化工具

  隨著量化技術(shù)的發(fā)展和成熟,已經(jīng)出現(xiàn)了不少軟件工具,一般是針對(duì)特定開發(fā)平臺(tái)提供給用戶。

  TensorFlow-Lite(TF-Lite)是谷歌的開源框架,用于移動(dòng)或嵌入式設(shè)備的模型推理。它也提供用于量化網(wǎng)絡(luò)的轉(zhuǎn)換和解釋的工具。TF-Lite提供了PTQ和QAT兩種量化方式。

  TensorRT是英偉達(dá)開發(fā)的C++庫,可在其GPU平臺(tái)做高性能NN模型推理。其低精度推理庫會(huì)消除卷積層的偏差項(xiàng),需要一個(gè)標(biāo)定集來調(diào)整每層或每通道的量化閾值。然后,量化參數(shù)表示為FP32標(biāo)量和INT8權(quán)重。TensorRT采用預(yù)訓(xùn)練浮點(diǎn)數(shù)模型,并生成可重用優(yōu)化的INT8模型或16比特半精度模型。英偉達(dá)Pascal系列GPU已啟用低精度計(jì)算,然后圖靈(Turing)架構(gòu)為INT4和INT8兩種精度引入了專用計(jì)算單元。

  黑芝麻智能在自己獨(dú)立開發(fā)的神經(jīng)網(wǎng)絡(luò)模型加速芯片(華山一號(hào)A500和華山二號(hào)A1000)基礎(chǔ)上,在提供自動(dòng)駕駛解決方案的同時(shí),也提供了模型轉(zhuǎn)換和優(yōu)化的工具,同時(shí)支持PTQ和QAT兩種量化方式。

  量化精度的選擇

  雖然量化精度INT8已經(jīng)被工業(yè)界普遍接受【2,6】,但是不是可以選擇更小量化精度,比如4-比特/位整數(shù)(INT4),在學(xué)術(shù)界一直在進(jìn)行認(rèn)真研究,因?yàn)橹饕膿?dān)心是:在進(jìn)一步減少存儲(chǔ)空間和加速計(jì)算同時(shí),模型性能下降甚至出現(xiàn)溢出(overflow)的可能風(fēng)險(xiǎn)也在增加。QAT量化方法在付出重新訓(xùn)練的代價(jià)后,采用INT4的量化模型應(yīng)用場合會(huì)較大,但穩(wěn)定性還是需要大量的實(shí)驗(yàn)驗(yàn)證,尤其是安全性要求很高的自動(dòng)駕駛領(lǐng)域,大家不得不慎重考慮。

  到底采用INT4還是INT8,學(xué)術(shù)界已經(jīng)有不少研究工作報(bào)道。事實(shí)上,工業(yè)界INT4的量化產(chǎn)品市場上還是很少見【7】。

  2018年谷歌發(fā)表一個(gè)量化網(wǎng)絡(luò)推理的白皮書【2】,給出如下實(shí)驗(yàn)論斷:

  權(quán)重按通道量化,激活值按層量化,均是INT8的PTQ,對(duì)各種CNN架構(gòu)發(fā)現(xiàn),其分類性能和浮點(diǎn)網(wǎng)絡(luò)的差在2%以內(nèi)。

  即使不支持8位整數(shù)算術(shù),將權(quán)重量化為INT8模型大小也可以減少4倍,簡單的權(quán)重PTQ可實(shí)現(xiàn)。

  在CPU和DSP上對(duì)量化網(wǎng)絡(luò)延遲進(jìn)行基準(zhǔn)測試:與CPU浮點(diǎn)數(shù)相比,量化模型實(shí)現(xiàn)的速度提高了2-3倍;具有定點(diǎn)數(shù)SIMD功能的專用處理器(例如帶HVX的Qualcomm QDSP)提速高達(dá)10倍。

  QAT可以提供進(jìn)一步改進(jìn):在INT8情況下,其精度相對(duì)浮點(diǎn)數(shù)網(wǎng)絡(luò)下降低1%;QAT還允許將權(quán)重降低到INT4,其性能損失從2%到10%,其中較小網(wǎng)絡(luò)帶來的性能下降更大。

  在TensorFlow和TensorFlow Lite中引入量化網(wǎng)絡(luò)工具。

  QAT的最佳實(shí)踐,可以量化權(quán)重和激活值來獲得高精度。

  建議權(quán)重的按通道量化和激活值的按層量化,這是是硬件加速和內(nèi)核優(yōu)化的首選方案。也建議用于優(yōu)化推理的未來處理器和硬件加速器支持4、8和16位/比特精度模型。

  2018年英特爾的研究報(bào)告【4】宣稱一個(gè)4位/比特精度PTQ方法,但實(shí)際上是INT8和INT4混合精度,不需要訓(xùn)練微調(diào)量化模型,也不需要提供相關(guān)數(shù)據(jù)集。它以激活值和權(quán)重的量化為目標(biāo),采用三種互補(bǔ)方法最小化張量級(jí)的量化誤差,其中兩個(gè)獲得閉式的解析解。這三種方法具體如下:

  1)整數(shù)量化分析限幅(Analytical Clipping forInteger Quantization,ACIQ):其限制(即限幅)張量的激活值范圍。雖然這會(huì)給原始張量帶來失真,但會(huì)減少包含大多數(shù)分布情況的舍入誤差。其通過最小化均方誤差測量值,從張量的分布中分析得出最佳剪裁值。該分析閾值可以與其他量化技術(shù)集成。

  2)按通道比特分配(Per-channel bitallocation):引入比特分配策略確定每個(gè)通道的最佳比特寬度。給定平均通道比特寬的限制,目標(biāo)是為每個(gè)通道分配所需的比特寬,使總均方誤差最小。通過對(duì)輸入分布進(jìn)行假設(shè),發(fā)現(xiàn)每個(gè)通道的最佳量化步長與其范圍的2/3冪成正比。

  3)偏差校正(Bias-correction):發(fā)現(xiàn)量化后權(quán)重平均值和方差存在固有偏差。建議一種簡單的方法來補(bǔ)償這種偏差。

  英特爾這個(gè)方法【4】在各種卷積模型中所達(dá)到的準(zhǔn)確度僅比FP32基準(zhǔn)低幾個(gè)百分點(diǎn)。下表給出ImageNet Top-1驗(yàn)證的比較結(jié)果:

  1)INT8權(quán)重和INT4激活值量化;

  2)INT4權(quán)重和INT8激活值量化;

  3)INT4權(quán)重和INT4激活值量化。

forward (22).jpg

  2019年華為發(fā)表的研究論文【5】提出線性量化任務(wù)可以定義成一個(gè)權(quán)重和激活值的最小均方誤差(MMSE)問題,只是做低比特精度的NN模型推理,無需網(wǎng)絡(luò)重新訓(xùn)練。其方法是在網(wǎng)絡(luò)的每一層對(duì)受約束MSE問題進(jìn)行優(yōu)化,采用硬件覺察(HW-aware)方式對(duì)網(wǎng)絡(luò)參數(shù)進(jìn)行劃分,對(duì)近似性較差的層使用多低精度量化張量方法。各種網(wǎng)絡(luò)體系結(jié)構(gòu)的多次實(shí)驗(yàn),看到該方法做到了INT4模型量化。

  如下表給出實(shí)驗(yàn)中各種模型INT4量化權(quán)重和激活值的性能比較,即準(zhǔn)確度損失和壓縮率的對(duì)比。

forward (21).jpg

  2020年英偉達(dá)論文提供了一個(gè)INT8量化工作的流程【6】,它將所研究的各種NN量化后模型和原浮點(diǎn)數(shù)模型的性能差別控制在1%以內(nèi),包括著名的MobileNets和BERT-large。以下兩個(gè)表格給出了一些實(shí)驗(yàn)數(shù)據(jù)對(duì)比:

  1)PTQ INT8 權(quán)重量化(按列或者按通道)

forward (20).jpg

  2)PTQ和QAT量化比較

forward (19).jpg

  最近加州伯克利分校論文【9】設(shè)計(jì)了一個(gè)2進(jìn)制神經(jīng)網(wǎng)絡(luò)(Dyadic Neural Network),叫HAWQ-V3,是一個(gè)混合整數(shù)精度的量化網(wǎng)絡(luò),有特色的工作包括:

  模型推理過程僅包括整數(shù)乘法,加法和移位(bit shifting),而無需任何浮點(diǎn)運(yùn)算/轉(zhuǎn)換或整數(shù)除法。

  混合精度量化作為一個(gè)整數(shù)線性規(guī)劃問題,在模型擾動(dòng)和內(nèi)存占用/延遲之間取得平衡。

  在TVM開發(fā)第一個(gè)開源4位/比特和混合精度的量化工具,ResNet50模型部署到T4 GPU,與INT8量化相比, INT4的平均速度提高了1.45倍。

  ResNet50模型INT8精度量化的準(zhǔn)確度達(dá)到77.58%,比之前的整數(shù)量化性能高2.68%;而混合精度INT4/8量化比INT8的推理延遲降低23%,而準(zhǔn)確度仍然達(dá)到76.73%。

  結(jié)束語

  可以看到定點(diǎn)數(shù)量化模型的位/比特越小,模型存儲(chǔ)越小,執(zhí)行加速越大,但相對(duì)浮點(diǎn)數(shù)模型的性能下降可能性越大,溢出的風(fēng)險(xiǎn)也越大。QAT相比PTQ來說,訓(xùn)練的負(fù)擔(dān)帶來的是量化性能的保證。

  INT8在工業(yè)界已經(jīng)是很常見的量化精度【2,6】,INT4精度還是需要測試NN模型量化后的性能下降是否可接受【7】。INT4/INT8混合精度應(yīng)該是模型準(zhǔn)確度和執(zhí)行加速的一個(gè)折衷方案【4,9】。

  在自動(dòng)駕駛領(lǐng)域,NN模型量化必須要保證安全性的指標(biāo)不能出現(xiàn)明顯下滑,那么INT4精度顯然承受的系統(tǒng)風(fēng)險(xiǎn)較大,估計(jì)在近幾年的市場INT8仍然是自動(dòng)駕駛NN模型量化的主流。

  參考文獻(xiàn)

  [1].Y Cheng et al., “A Survey of Model Compression and Acceleration forDeep Neural Networks”,arXiv:1710.9182, 2018

  [2].R Krishnamoorthi, “Quantizing deep convolutional networks forefficient inference: A white paper”, arXiv:1806.08342, 2018

  [3].Y Guo, “ASurvey on Methods and Theories of Quantized Neural Networks”, arXiv:1808.04752,2018

  [4].R Banner et al., “Post training 4-bit quantization of convolutionalnetworks for rapid-deployment”, arXiv:1810.05723, 2018

  [5].Y Choukroun et al., “Low-bit Quantization of Neural Networks for EfficientInference”,arXiv:1902.06882, 2019

  [6].HWu et al., “Integer Quantization For Deep Learning Inference: Principles AndEmpirical Evaluation”, arXiv:2004.09602, 2020

  [7].Xilinx,“Convolutional Neural Network with INT4 Optimization on Xilinx Devices”,WP521 (v1.0.1) June 24, 2020

  [8].TLiang et al., “Pruning and Quantization for Deep Neural NetworkAcceleration: A Survey”, arXiv:2101.90671, 2021

  [9].ZYao et al., “HAWQ-V3: Dyadic Neural Network Quantization”, arXiv:2011.10680, 2021


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。