0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

tansformer的量化實(shí)現(xiàn)方案

454398 ? 來(lái)源:AI加速微信公眾號(hào) ? 作者:AI加速微信公眾號(hào) ? 2020-11-03 15:21 ? 次閱讀

理論介紹

相比于訓(xùn)練后量化方法,將量化過(guò)程插入到訓(xùn)練中可以彌補(bǔ)量化產(chǎn)生的誤差,但是帶來(lái)的問(wèn)題可能是增加了訓(xùn)練的時(shí)間。在tansformer的量化實(shí)現(xiàn)中,我們采用了訓(xùn)練中量化的方法,在網(wǎng)絡(luò)前向傳輸中,對(duì)權(quán)重等參數(shù)進(jìn)行線性量化。反向傳播中,對(duì)scale和權(quán)重參數(shù)的求導(dǎo)采用Hinton的strait-through estimator的方式。在CPU上訓(xùn)練花費(fèi)了10天的時(shí)間,在這期間又review了最近的量化方法的文章。所以先總結(jié)一下,然后再分析一下transformer量化的結(jié)果。

1) PACT

這是一種實(shí)現(xiàn)對(duì)activation量化的方法,基本思想是通過(guò)訓(xùn)練來(lái)獲得ReLU的一個(gè)clip參數(shù)a。a的動(dòng)態(tài)調(diào)整能夠在減少量化誤差和保證反向傳播有效進(jìn)行之間獲得平衡。PACT重新定義了ReLU過(guò)程如下:

參數(shù)a限定了activation的范圍為[0, a]。然后獲得的激活值y在進(jìn)行線性映射到k bit的表示空間,如下:

在這里[0, a]是y值的一個(gè)限定,a>=y。所以其范圍比y值的實(shí)際范圍要大,這可以對(duì)y的量化誤差有一些彌補(bǔ)。采用strait-through estimator方法計(jì)算其相對(duì)于a的梯度為:

當(dāng)a趨向于無(wú)窮大的時(shí)候,就接近于ReLU函數(shù),所以訓(xùn)練過(guò)程一定是往a增大方向移動(dòng)。通過(guò)在loss中增加a的L2 規(guī)范化可以尋求一個(gè)合適的a值。

2) quantization-aware training

谷歌采用量化和訓(xùn)練分離的方法,在前向計(jì)算使用量化數(shù)據(jù),而在訓(xùn)練的時(shí)候還是浮點(diǎn)訓(xùn)練。量化方法為如下公式:

其中S為scale參數(shù),z是零點(diǎn)偏移,q是量化后參數(shù)。Z值的存在會(huì)導(dǎo)致矩陣或者卷積運(yùn)算中有交叉項(xiàng)。這會(huì)增加一部分加法和乘法項(xiàng)。這在CPU等通用處理器上容易實(shí)現(xiàn),只是一個(gè)時(shí)間復(fù)雜度的問(wèn)題,但是實(shí)際上不利于在FPGA硬件上實(shí)現(xiàn)。所以FPGA等平臺(tái)的量化一般都讓z值為0。消除交叉項(xiàng)計(jì)算。對(duì)于一個(gè)矩陣乘法,量化導(dǎo)致了scale的組合,比如:




在這里M是浮點(diǎn)數(shù)據(jù),在這里作者對(duì)其又做了一次量化,首先將M數(shù)據(jù)映射到[0.5, 1)空間,然后在使用32bit數(shù)據(jù)來(lái)表達(dá)為整數(shù)。

32bit的表達(dá)能夠降低量化精度。

在量化整個(gè)網(wǎng)絡(luò)的過(guò)程中,作者也提供了一些處理技巧。在進(jìn)行線性量化的時(shí)候,采用了對(duì)稱的量化區(qū)間,比如8bit量化,正常取值范圍在[-128, 127],作者取了對(duì)稱空間[-127, 127]。這樣做的目的和實(shí)現(xiàn)的平臺(tái)有關(guān)。在量化activation的時(shí)候,使用EMA來(lái)處理收集到的數(shù)值范圍,這樣做可以在初始訓(xùn)練中,完全屏蔽掉對(duì)activation的量化,使得訓(xùn)練進(jìn)入到一個(gè)比較穩(wěn)定的狀態(tài)后在進(jìn)行量化。BN是一個(gè)復(fù)雜的計(jì)算,但是可以將其折疊到之前的卷積層和FC層中,如下圖所示:



3) 訓(xùn)練后量化,基于KL發(fā)散性。

基于訓(xùn)練后的量化方法的優(yōu)勢(shì)就是量化花費(fèi)時(shí)間短。在tensorRT中使用了KL發(fā)散性來(lái)描述量化后的數(shù)據(jù)和浮點(diǎn)數(shù)據(jù)之間的信息損失程度。通過(guò)最小化這個(gè)值來(lái)達(dá)到量化后數(shù)據(jù)包含的信息接近浮點(diǎn)數(shù)據(jù)的信息。這種方法的出發(fā)點(diǎn)是,為了保證量化后模型的精度損失較小,應(yīng)該讓量化后的數(shù)據(jù)和原始浮點(diǎn)數(shù)據(jù)表達(dá)的信息最一致。具體的做法是:

對(duì)每層網(wǎng)絡(luò),先收集activation的數(shù)值區(qū)間,這樣就生成一個(gè)activation值的分布;采用不同的量化區(qū)間[a,b]來(lái)對(duì)activation進(jìn)行線性映射,這樣就形成了針對(duì)參數(shù)a和b的多種不同分布,然后找到和原始數(shù)據(jù)分布KL最小的分布,這個(gè)時(shí)候得到的a和b的值就是量化activation時(shí)所采用的threshold值。

Transformer量化結(jié)果

還是決定由簡(jiǎn)入難,先進(jìn)行16bit的量化,量化內(nèi)容包括transformer中的dense層,F(xiàn)C層。對(duì)權(quán)重和數(shù)據(jù)都進(jìn)行16bit的量化,即將量化節(jié)點(diǎn)插入到計(jì)算圖中。梯度采用strait-through estimator來(lái)估計(jì)。對(duì)于embedding,softmax,layer normalization還是使用浮點(diǎn)值。因?yàn)閾?dān)心對(duì)這些的量化可能會(huì)導(dǎo)致精度降低。選擇batch size為256,epoch為20,數(shù)據(jù)集使用英語(yǔ)德語(yǔ)翻譯數(shù)據(jù)集。這個(gè)數(shù)據(jù)集有460萬(wàn)個(gè)句子。在服務(wù)器上使用CPU跑了10天,以下是結(jié)果:

對(duì)比一下github上作者浮點(diǎn)模型的訓(xùn)練結(jié)果:


發(fā)現(xiàn)存在以下問(wèn)題:

1 loss下降很慢,浮點(diǎn)模型在訓(xùn)練到達(dá)5k次的時(shí)候,loss已經(jīng)下降到4了,但是量化的訓(xùn)練loss在5k次的時(shí)候才到5.4。經(jīng)歷了前幾次快速下降之后,后邊更加緩慢。

2 BLEU得分很低,訓(xùn)練了10K次后得分才有0.11。得分低的原因也是loss值很低。

第一次做沒(méi)有什么經(jīng)驗(yàn),猜測(cè)可能有以下幾種原因:

1 對(duì)所有的scale我都使用了常數(shù)2作為初始值,為什么選擇2,并沒(méi)有什么原因,就是隨便選擇的?;蛟S初始值的不當(dāng)導(dǎo)致了loss訓(xùn)練很慢。設(shè)想通過(guò)以下方式來(lái)改進(jìn),先進(jìn)行warmup,通過(guò)計(jì)算參數(shù)的范圍來(lái)計(jì)算出一個(gè)scale值。進(jìn)行了幾輪warmup之后再進(jìn)行量化訓(xùn)練。

2 因?yàn)榭吹絣oss也一直是下降的趨勢(shì),那么猜測(cè)可能是量化訓(xùn)練是比正常訓(xùn)練收斂慢。因?yàn)榱炕瘏?shù)的梯度在參數(shù)超過(guò)閾值會(huì)為0,這個(gè)可能導(dǎo)致梯度更新較慢。

編輯:hfy


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10804

    瀏覽量

    210829
  • Transformer
    +關(guān)注

    關(guān)注

    0

    文章

    139

    瀏覽量

    5968
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    解讀大模型FP量化的解決方案

    63.1 的分?jǐn)?shù),只比完整精度模型低了 5.8 分,且比之前的 SOTA 方法平滑量高出了 12.7,這是目前少數(shù)已知可行的 4-bit 量化方案了。
    發(fā)表于 11-24 11:15 ?873次閱讀
    解讀大模型FP<b class='flag-5'>量化</b>的解決<b class='flag-5'>方案</b>

    實(shí)現(xiàn)量化生產(chǎn)線性恒流驅(qū)動(dòng)IC方案

    變壓器和電感,可實(shí)現(xiàn)量化生產(chǎn)。SM2082B支持單顆應(yīng)用,也支持并聯(lián)應(yīng)用,同時(shí)還支持可控硅調(diào)光應(yīng)用,適用于T8/T5、平板燈、吸頂燈等LED照明領(lǐng)域,易過(guò)3C、UL、CE等認(rèn)證標(biāo)準(zhǔn)
    發(fā)表于 11-20 15:00

    怎么在GUI中如何實(shí)現(xiàn)量化

    在GUI中如何實(shí)現(xiàn)均勻量化和非均勻量化,可以達(dá)到等距輸入?yún)?shù)得到相應(yīng)變化,謝謝幫助,最好給個(gè)程序
    發(fā)表于 05-26 18:23

    碳纖維為何能實(shí)現(xiàn)汽車(chē)輕量化?

    碳纖維是一種與人造絲、合成纖維絲一樣的纖維狀碳材料,是目前世界高科技領(lǐng)域中十分重要的新型工業(yè)材料,提高汽車(chē)的綠色化性能。 節(jié)約不可再生能源和提高燃料效率的汽車(chē)輕量化解決方案正推動(dòng)碳纖維應(yīng)用快速增長(zhǎng)
    發(fā)表于 01-25 16:52

    怎樣分析量化過(guò)程及Verilog實(shí)現(xiàn)方法?

    編碼語(yǔ)法等。由于采用了整數(shù)變換,計(jì)算不會(huì)出現(xiàn)浮點(diǎn)數(shù),而且精度高等。這些措施使得H.264算法具有很高的編碼效率。在量化方面,量化步長(zhǎng)采用52個(gè),下面將主要分析量化。在此,提出量化的Ve
    發(fā)表于 07-05 08:16

    請(qǐng)問(wèn)怎樣實(shí)現(xiàn)H.264的量化

    量化的功能有哪些?量化的算法是什么?怎樣用Verilog語(yǔ)言實(shí)現(xiàn)H.264的量化?如何運(yùn)用Modelsim對(duì)H.264進(jìn)行仿真?
    發(fā)表于 04-28 06:12

    INT8量化常見(jiàn)問(wèn)題的解決方案

    一、int8的輸出和fp32模型輸出差異比較大 解決方案: 檢查前后處理是否有問(wèn)題,int8網(wǎng)絡(luò)輸入輸出一般需要做scale處理,看看是否遺漏? 通過(guò)量化可視化工具分析int8的輸出和fp32
    發(fā)表于 09-19 06:09

    基于模糊規(guī)則的服裝風(fēng)格的區(qū)域量化實(shí)現(xiàn)

    服裝風(fēng)格的概念和影響因素十分復(fù)雜,是款式CAD 實(shí)現(xiàn)智能化的難點(diǎn)所在。本文根據(jù)模糊規(guī)則,采用劃分風(fēng)格區(qū)域的方法對(duì)款式風(fēng)格進(jìn)行初步的量化。通過(guò)對(duì)具體款式的量化分析,對(duì)
    發(fā)表于 08-15 09:06 ?17次下載

    數(shù)字馬達(dá)控制系統(tǒng)的量化誤差設(shè)計(jì)方案

    數(shù)字馬達(dá)控制系統(tǒng)的量化誤差設(shè)計(jì)方案 量化誤差的產(chǎn)生 數(shù)字控制系統(tǒng)能夠?yàn)樵O(shè)計(jì)人員提供多種優(yōu)勢(shì),如更易于實(shí)現(xiàn)高級(jí)算法功能、成本更低且性能更穩(wěn)定等
    發(fā)表于 03-12 15:49 ?729次閱讀
    數(shù)字馬達(dá)控制系統(tǒng)的<b class='flag-5'>量化</b>誤差設(shè)計(jì)<b class='flag-5'>方案</b>

    非線性量化的模擬實(shí)現(xiàn)方法

    本內(nèi)容詳細(xì)介紹了非線性量化的模擬實(shí)現(xiàn)方法
    發(fā)表于 06-22 15:54 ?26次下載
    非線性<b class='flag-5'>量化</b>的模擬<b class='flag-5'>實(shí)現(xiàn)</b>方法

    如何使用FPGA實(shí)現(xiàn)微型SAR成像的量化顯示

    針對(duì)微型合成孔徑雷達(dá)(SAR)實(shí)時(shí)成像處理機(jī)高性能、小體積、低功耗的特點(diǎn)和要求,提出了一種基于FPGA實(shí)現(xiàn)微型SAR成像灰度量化、顯示驅(qū)動(dòng)的設(shè)計(jì)方案。采用StratixⅡEP2S180開(kāi)發(fā)板為
    發(fā)表于 01-26 15:30 ?10次下載

    深度解析MegEngine 4 bits量化開(kāi)源實(shí)現(xiàn)

    因此量化模型被廣泛使用在推理側(cè),量化也成為了一個(gè)重要且非?;钴S的研究領(lǐng)域。近期,MegEngine 開(kāi)源了 4 bits 的量化的相關(guān)內(nèi)容,通過(guò) MegEngine 4 bits 量化
    的頭像 發(fā)表于 09-23 15:08 ?928次閱讀

    淺談?shì)p量化設(shè)計(jì):材料、創(chuàng)新技術(shù)及未來(lái)解決方案

    量化的材料就是可以用來(lái)減輕產(chǎn)品自重且可以提高產(chǎn)品綜合性能的材料。材料輕量化,指的是在滿足機(jī)械性能要求的前提下,通過(guò)采用輕量化的金屬和非金屬材料實(shí)現(xiàn)重量減輕的方法。在當(dāng)前汽車(chē)制造領(lǐng)域,
    的頭像 發(fā)表于 01-29 10:43 ?1520次閱讀

    量化5G核心網(wǎng)的實(shí)現(xiàn)方式

    5G核心網(wǎng)分離架構(gòu)明確了各網(wǎng)元間的分工,為輕量化5GC的實(shí)現(xiàn)提供了保障。輕量化5GC設(shè)備是一種利用較少資源實(shí)現(xiàn)核心網(wǎng)主要功能的技術(shù)產(chǎn)品,通常在單個(gè)硬件服務(wù)器上就能
    發(fā)表于 06-20 10:35 ?989次閱讀
    輕<b class='flag-5'>量化</b>5G核心網(wǎng)的<b class='flag-5'>實(shí)現(xiàn)</b>方式

    基于MacroBenchmark的性能測(cè)試量化指標(biāo)方案

    基于Benchmark的性能測(cè)試量化指標(biāo)方案是一種用于評(píng)估和量化系統(tǒng)性能的方法。通過(guò)使用Benchmark測(cè)試工具,該方案旨在提供可靠的性能數(shù)據(jù),并使用具體的指標(biāo)來(lái)衡量系統(tǒng)在各個(gè)方面的
    的頭像 發(fā)表于 10-17 10:15 ?690次閱讀