1、簡介
量化是優化神經網絡以實現高效推理和設備執行同時保持高精度的最成功方法之一。通過將常規32位浮點格式的權重和激活壓縮為更高效的低位定點表示,如INT8,這樣可以在邊緣設備上部署神經網絡時降低功耗并加速推理。
盡管量化具有明顯的功率和延遲優勢,但由于精度降低,量化是以增加噪聲為代價的。然而,近年來的研究人員已經表明,神經網絡對這種噪聲是魯棒的,并且可以使用訓練后量化技術(PTQ)以最小的精度下降量化到8比特。
PTQ可能非常有效,通常只需要訪問一個小的校準數據集,但當應用于神經網絡的低位量化(≤4位)時會受到影響。同時,量化感知訓練(QAT)已成為事實上的標準方法,用于實現低比特量化,同時保持接近全精度的精度。通過模擬訓練或微調期間的量化操作,網絡可以適應量化噪聲,并達到比PTQ更好的解決方案。
本文重點關注量化權重在量化感知訓練過程中發生的振蕩。在量化神經網絡的優化中,這是一個鮮為人知且研究不足的現象,在訓練期間和訓練后對網絡產生了重大影響。當使用流行的直通估計器(STE)進行QAT時,權重似乎在相鄰量化級別之間隨機振蕩,從而在優化過程中導致有害噪聲。有了這一見解,作者調研了QAT的最新進展,這些進展聲稱性能得到了改善,并評估了它們在解決這種振蕩行為方面的有效性。
權重振蕩的一個不利癥狀是,它們會破壞在訓練期間收集的批量歸一化層的估計推斷統計數據,導致驗證準確性差。作者發現這種效應在具有深度可分離層的高效網絡(如MobileNets或EfficientNets)的低位量化中尤為明顯,但可以通過在訓練后重新估計批量歸一化統計數據來有效解決。
雖然批量歸一化重新估計克服了振蕩的一個顯著癥狀,但它并沒有解決其根本原因。為此,我們提出了兩種有效減少振蕩的新算法:振蕩抑制和迭代權重凍結。通過在振蕩源處處理振蕩,本文的方法提高了精度,超出了批量歸一化重新估計的水平。本文表明,這兩種方法在高效網絡的4-bit和3-bit量化方面都取得了最先進的結果,如MobileNetV2、MobileNetV3和ImageNet上的EfficientNet lite。
2、QAT中的振蕩
首先研究了為什么權值在量化感知訓練中會振蕩,以及這種現象如何在實踐中影響神經網絡訓練。
2.1、量化感知訓練
2.2、振蕩問題
在附錄A.3中表明降低學習率會降低振蕩的振幅,但不會影響其頻率。
值得注意的是,這種行為與隨機舍入有相似之處,其中潛在權重與量化水平的接近程度與舍入到該水平的概率有關。然而,在STE中,隨機性的來源于梯度的離散性質,而不是采樣。可以注意到,振蕩并不是標準STE獨有的,而是存在于文獻中提出的STE的幾種變體中,在圖1中給出了其中的一小部分。
2.3、實踐中的振蕩
這些振蕩不僅僅是這個toy例子的副作用。它們確實存在于更大的神經網絡中,對它們的優化具有重要意義。圖2顯示了使用ImageNet上的LSQ訓練的MobileNetV2的深度可分離層中接近收斂的3位量化權重的進展。可以觀察到,許多權重似乎在2個相鄰的量化級別之間隨機振蕩。
在圖3中還可以看到,在假定的網絡收斂之后,很大一部分潛在權重正好位于網格點之間的決策邊界。這進一步強化了一個觀察結果,即很大一部分權重會振蕩而不收斂。
作者確定了與神經網絡訓練中的振蕩相關的2個主要問題:
批量歸一化推理統計的錯誤估計
對網絡優化的不利影響
1、批量標準化的影響
在訓練批量歸一化過程中,層跟蹤每層輸出的平均值和方差的指數移動平均值(EMA),以便在推理過程中用作真實樣本統計的近似值。當訓練全精度神經網絡時,可以預期權重在接近收斂時會非常緩慢地變化。因此,預計每一層的輸出統計數據在迭代過程中都相當穩定,因此EMA是統計數據的一個很好的估計。
然而,QAT中的振蕩會導致整數權重的快速變化(見圖2),從而導致迭代之間的顯著分布偏移,甚至接近收斂。振蕩引起的輸出分布的突然而大的變化可能會破壞EMA統計數據,導致準確性的顯著下降。
事實上,有兩個因素放大了這種影響:
權重位寬
每個輸出通道的權重數量
比特寬度越低,量化級別之間的距離就越大,因為它與成比例。當振蕩權重從一個量化級別移動到另一個量化級時,它們在輸出分布中造成成比例的較大偏移。第二個重要因素是每個輸出通道的權重數量。權重的數量越小,單個權重對最終累積的貢獻就越大。當累積數量增加時,由于大數定律,振蕩的影響趨于平均。
在表1中,使用KL散度來量化population和 estimated statistics之間的差異,確實觀察到,與MobileNetV2中的逐點卷積和ResNet18中的全卷積相比,深度可分離層的KL發散要大得多。
這個問題的一個簡單直接的解決方案是在訓練后用一小部分數據重新估計批量歸一化統計。這種方法作者稱之為批處理歸一化(BN)重新估計,有時用于隨機量化公式。然而,作者認為由于振蕩權重,它在確定性QAT公式中也是必不可少的。
在表2中可以看到BN重新估計不僅提高了MobileNetV2的最終量化精度,而且降低了不同種子之間的方差。作者進一步觀察到,對于MobileNetV2,隨著比特寬度的減小,精度上的差距變大,而對于ResNet18,情況并非如此。
2、對訓練的影響
除了損害BN統計之外,振蕩還可能對訓練過程本身產生負面影響。為了說明這一點,首先表明,如果在兩種振蕩狀態之間隨機采樣振蕩權重,則具有3位權重的收斂MobileNetV2可以實現較低的訓練損失(和較高的驗證精度)。
在表3中給出了這個實驗的結果。可以觀察到,采樣網絡上的平均訓練損失與最終收斂模型的平均訓練損失相似。然而,許多樣本實現了較低的訓練損失,并且最佳隨機采樣網絡顯示出顯著較低的訓練損失。
作者還使用AdaRound的自適應來執行振蕩權重的二進制優化。在最終任務丟失時同時優化所有層的舍入,類似于文獻中使用模擬退火來解決二進制優化問題。可以看到,這種二進制優化在最佳隨機樣本和原始收斂網絡的基礎上顯著改進。這表明,權重振蕩會阻止網絡在訓練過程中收斂到最佳局部最小值,并可能對優化過程不利。
最后,在訓練的早期使用振蕩凍結技術防止振蕩會導致比振蕩權重的二元優化更高的驗證精度。這表明,振蕩不僅會阻止QAT在訓練結束時收斂到最佳局部最小值,而且還會導致優化器在訓練早期朝著次優方向發展。
3、克服QAT的振蕩問題
既然已經確定了振蕩在優化過程中可能會產生負面影響,特別是對于低位量化,所以就把重點放在如何克服它們上。首先,引入了一種用于量化振蕩的度量,然后提出了兩種新的技術,旨在防止在量化感知訓練過程中出現振蕩。
3.1、量化振蕩
在解決振蕩之前,需要一種在訓練中檢測和測量振蕩的方法。建議使用指數移動平均(EMA)來計算隨時間變化的振蕩頻率。然后,可以將最小頻率定義為振蕩權重的閾值。對于在迭代t中發生的振蕩,需要滿足兩個條件:
然后,使用指數移動平均(EMA)來跟蹤隨時間變化的振蕩頻率:
3.2、振蕩阻尼
當權重振蕩時,它們總是在兩個量化區間之間的決策閾值附近移動。這意味著振蕩權重總是接近量化bin的邊緣。為了抑制振蕩行為,使用了一個正則化項,該項鼓勵潛在權重靠近bin的中心而不是邊緣。將類似于權重衰減的阻尼損失定義為:
獨立于標度s,因此間接獨立于位寬。進一步將潛在權重剪裁到量化網格的范圍,使得只有在量化期間沒有被剪裁的權重才會獲得正則化效果。這對于避免在基于LSQ的范圍學習中與量化尺度梯度的任何有害相互作用很重要。這種正則化的缺點是,它不僅影響振蕩的權重,而且還會阻礙不處于振蕩狀態的權重的移動。
3.3、振蕩權值的迭代凍結
作者提出了另一種更有針對性的方法,通過在訓練中凍結權重來防止權重振蕩。在這種方法中,跟蹤訓練期間每個權重的振蕩頻率,如方程(4)所述。如果任何權重的振蕩頻率超過閾值,該權重將被凍結,直到訓練結束。在整數域中應用凍結,以便在優化過程中scale 的潛在變化不會導致不同的舍入。
當一個權重振蕩時,它不一定在兩種振蕩狀態下花費相等的時間。正如在第2.2節的示例中所示,權重處于每個狀態的可能性線性地取決于該量化狀態與最優值的距離。結果,隨著時間的推移,所有量化值的期望將對應于最優值。一旦權重的頻率超過閾值,它就可能處于兩種量化狀態中的任何一種。為了將權重凍結到更頻繁的狀態,使用指數移動平均值(EMA)記錄以前的整數值。然后,通過四舍五入EMA將最頻繁的整數狀態分配給凍結權重。
在算法1中總結了提出的迭代權重凍結。注意,該算法可以與任何基于梯度的優化器組合使用,并且不限于特定的量化公式或梯度估計器。在迭代級別上凍結權重的想法與迭代修剪密切相關,在迭代修剪中,小權重被迭代修剪(凍結為零)。
4、實驗
4.1、消融實驗
1、振蕩阻尼
在表4中,作者研究了阻尼損失的強度如何影響網絡的最終精度以及訓練結束時振蕩權重的比例。在前3行中可以觀察到,隨著系數λ的增加,振蕩權重的比例降低,BN重新估計前后的精度差距縮小。然而,過多的阻尼會損害最終的精度,這表明過度的正則化會抑制權重在量化級別之間的有益移動。
解決這個問題的方法是在訓練過程中逐漸增加正規化權重。這允許潛在權重在訓練的第一階段更自由地移動,同時通過應用更強的正則化來減少接近收斂的有害振蕩。
作者發現λ的余弦退火計劃在實踐中效果良好。Han等人也注意到,這種規則化在訓練的早期階段是有害的,但實際上采用了兩階段優化過程。這樣的策略可以顯著抑制振蕩,同時不會損害準確性。最佳阻尼配置比BN后重新估計基線提高了近1%,比BN前重新估計基線改善了5%以上。
在圖4(左)中還看到了阻尼對圖3中相同深度可分離層的潛在重量分布的影響。正如預期的那樣,潛在權重現在聚集在量化bin中心周圍,在決策邊界幾乎沒有任何權重。
2、迭代權重凍結
在表5中展示了迭代權重凍結算法對各種凍結閾值的有效性。在整個訓練過程中使用恒定的閾值,可以看到殘差振蕩的數量隨著閾值的降低而顯著減少,并且網絡中只保留一些低頻振蕩。還可以看到,前BN重新估計精度更接近后BN重新估計準確性,正如人們在訓練結束時振蕩較少時所預期的那樣。
然而,如果振蕩閾值變得太低,那么在訓練的早期階段,太多的權重會被凍結,從而降低最終的準確性。為了解決這個問題,對凍結閾值應用了一個類似于阻尼中使用的退火計劃。這能夠使用更強的凍結閾值,并在訓練結束時凍結幾乎所有的振蕩,此時它們最具破壞性。
最佳凍結閾值比BN后重新估計基線提高了近1%,比BN前重新估計基線改善了5%以上。它的精度與振蕩阻尼相當,同時殘差振蕩顯著減少(0.04%對1.11%)。
在圖4(右)中可以看到迭代權值凍結如何改變MobileNetV2的層conv.3.1的潛在權值分布。大部分潛在權值現在被凍結在bin中心,去除在圖3中決策邊界觀察到的峰值。
4.2、與其他QAT方法的比較
將克服振蕩的方法與其他QAT替代方案進行了比較,并證明了它們在流行的高效神經網絡的低比特量化中的有效性。為了與文獻中現有的方法進行比較,作者對權重和激活進行了量化。在表6中展示了MobileNetV2的結果,并證明兩種算法在3-bits和4-bits量化方面都優于文獻中所有競爭的QAT技術。
還在表7和表8中分別獲得了MobileNetV3 Small和EfficientNet lite的最新結果。在所有情況下,本文的振蕩預防方法都比常用的LSQ基線顯著提高(>1%),表明本文的方法對其他高效網絡的普遍適用性。
可以注意到,與LSQ基線相比,振蕩抑制導致訓練時間增加了約33%。另一方面,迭代權重凍結在實現類似性能的同時,計算開銷可以忽略不計。
-
振蕩器
+關注
關注
28文章
3960瀏覽量
140355 -
神經網絡
+關注
關注
42文章
4804瀏覽量
102644
發布評論請先 登錄
在LTspice中導入模型時遇到相關問題
多層板的焊盤到底應該怎么設計?華秋一文告訴你
X-CUBE-AI 7.1.0生成代碼初始化錯誤如何解決呢?
【KV260視覺入門套件試用體驗】Vitis AI 進行模型校準和來量化
一文告訴你如何用好AD797
Google發布新API,支持訓練更小更快的AI模型

利用NVIDIA TensorRT實現推理的QAT偽量化
使用NVIDIA QAT工具包實現TensorRT量化網絡的設計

評論