<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          INT8量化訓(xùn)練

          共 2776字,需瀏覽 6分鐘

           ·

          2021-04-20 06:04

          【GiantPandaCV導(dǎo)讀】本文聊了兩篇做INT8量化訓(xùn)練的文章,量化訓(xùn)練說的與quantization-aware Training有區(qū)別,量化訓(xùn)練指的是在模型訓(xùn)練的前向傳播和后向傳播都有INT8量化。兩篇文章都是基于對(duì)梯度構(gòu)建分析方程求解得到解決量化訓(xùn)練會(huì)引起的訓(xùn)練崩潰和精度損失嚴(yán)重的情況。

          論文:《Distribution Adaptive INT8 Quantization for Training CNNs》 會(huì)議:AAAI 2021

          論文:《Towards Unified INT8 Training for Convolutional Neural Network》 會(huì)議:CVPR 2020

          引言:什么是量化訓(xùn)練

          谷歌在2018年《Quantization and Training of Neural Networks for Ef?cient Integer-Arithmetic-Only Inference》文章中,提出了量化感知訓(xùn)練(Quantization-aware Training,QAT),QAT只在前向傳播中,加入模擬量化,這個(gè)模型量化指的是把模型參數(shù)進(jìn)行線性量化,然后在做矩陣運(yùn)算之前,把之前量化的模型參數(shù)反量化回去浮點(diǎn)數(shù)。而量化訓(xùn)練則是在前向傳播和后向傳播都加入量化,而且做完矩陣運(yùn)算再把運(yùn)算的結(jié)果反量化回去浮點(diǎn)數(shù)?!禥uantization and Training of Neural Networks for Ef?cient Integer-Arithmetic-Only Inference》詳細(xì)的內(nèi)容在鏈接中:

          MXNet實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練量化
          Pytorch實(shí)現(xiàn)卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練量化(QAT)

          一、Distribution Adaptive INT8

           

          文章的核心idea是:Unified INT8發(fā)現(xiàn)梯度的分布不遵從一個(gè)分布即不能像權(quán)重一樣歸于高斯分布,Distribution Adaptive INT8認(rèn)為梯度可以channel-wise看,分成兩種分布,一個(gè)高斯分布,一個(gè)是倒T形分布,這樣去minimize量化后梯度與原來梯度的量化誤差Error,就可以了。Unified INT8也是類似minimize量化后梯度與原來梯度的量化誤差Error的思想,與Distribution Adaptive INT8不同的是通過收斂性分析方程,發(fā)現(xiàn)可以通過降低學(xué)習(xí)率和減少梯度量化誤差。總結(jié):Distribution Adaptive INT8比Unified INT8多了一個(gè)先驗(yàn),來構(gòu)建分析方程。方法上,都是對(duì)梯度下手,修正梯度的值,都有對(duì)梯度進(jìn)行截?cái)唷?/p>

          Distribution Adaptive INT8采用了兩個(gè)方法:Gradient Vectorized Quantization和Magnitude-aware Clipping Strategy。

          對(duì)稱量化



          這里, 是閾值范圍,就是range
          反量化:
          公式(1)與之前常見的對(duì)稱量化長的有一點(diǎn)不一樣:
          (2)

          反量化: ,這里的s指的是scale,c是clipping閾值
          其實(shí)公式(1)和(2)是等價(jià)變化,把公式(2)的s計(jì)算出來,就是 ,代入公式(2)
          也就是等于公式(1)

          Gradient Vectorized Quantization:這就是channel-wise的篩選哪些梯度的分布屬于高斯分布還是倒T分布(a sharp with long-tailed shape distribution(Inverted-T distribution))。所以這兩種分布:
          通過實(shí)驗(yàn)設(shè)置為0.3

          Magnitude-aware Clipping Strategy
          這個(gè)cliiping是在尋找最優(yōu)截?cái)嚅撝祍
          量化誤差分析:(3)
          是梯度的分布。
          通過兩個(gè)假設(shè):

          ,誤差分析方差變換為:

          只要求導(dǎo) 就可以找出找出最優(yōu)值 。然后分不同的梯度的分布進(jìn)行討論。

          對(duì)于高斯分布
          對(duì)于倒T分布:倒T分布用分段均勻分布來表示

          經(jīng)過一頓公式推導(dǎo)得出: ,引進(jìn)了 這兩個(gè)超參數(shù)。

          所以

          整個(gè)Distribution Adaptive INT8的pipeline

          SpeedUp:

          實(shí)驗(yàn)


          二、Unified INT8 Training

          前面已經(jīng)講了Unified INT8的整體思路了。Unified INT8也是類似minimize量化后梯度與原來梯度的量化誤差Error的思想,Unified INT8是通過收斂性分析方程,發(fā)現(xiàn)了可以通過降低學(xué)習(xí)率和減少梯度量化誤差。另外,Unified INT8對(duì)梯度誤差分析是layer-wise的,即不是上述Distribution Adaptive INT8那種channel-wise的方式。

          通過收斂性證明: (4)
          基于這兩個(gè)假設(shè):
          公式(4)變換為:


          因?yàn)門是迭代次數(shù),T會(huì)不斷增大,導(dǎo)致Term(1)趨向于0;
          是誤差,Term(2)說明,要最小化量化誤差;
          是量化-反量化后的梯度, 是學(xué)習(xí)率,Term(3)說明要降低學(xué)習(xí)率。
          所以Unified INT8提出兩個(gè)方法:Direction Sensitive Gradient Clipping和Direction Sensitive Gradient Clipping。

          Direction Sensitive Gradient Clipping

          用余弦距離來度量量化前后梯度的偏差。

          Deviation Counteractive Learning Rate Scaling

          這兩個(gè)策略最終的用在了調(diào)整學(xué)習(xí)率,實(shí)驗(yàn)得出, 取0.1,取20。

          整個(gè)pipeline

          SpeedUp:

          這里有個(gè)重要的cuda層的優(yōu)化

          實(shí)驗(yàn)

          知乎鏈接

          (量化 | INT8量化訓(xùn)練)https://zhuanlan.zhihu.com/p/364782854


          為了感謝讀者的長期支持,今天我們將送出三本由 北京大學(xué)出版社 提供的:《機(jī)器學(xué)習(xí)入門 基于數(shù)學(xué)原理的Python實(shí)戰(zhàn)》 。點(diǎn)擊下方抽獎(jiǎng)助手參與抽獎(jiǎng)。沒抽到并且對(duì)本書有興趣的也可以使用下方鏈接進(jìn)行購買。

          《機(jī)器學(xué)習(xí)入門》抽獎(jiǎng)鏈接

          書籍封面


          歡迎關(guān)注GiantPandaCV, 在這里你將看到獨(dú)家的深度學(xué)習(xí)分享,堅(jiān)持原創(chuàng),每天分享我們學(xué)習(xí)到的新鮮知識(shí)。( ? ?ω?? )?

          有對(duì)文章相關(guān)的問題,或者想要加入交流群,歡迎添加BBuf微信:

          二維碼
          瀏覽 96
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产亚洲中文字幕在线观看 | 欧美日韩一区二区三区四区论理片 | 在线毛片网址 | 三级aV成人 | 欧美一级A片在免费看 |