亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        404 Not Found


        nginx
        404 Not Found

        404 Not Found


        nginx
        404 Not Found

        404 Not Found


        nginx
        404 Not Found

        404 Not Found


        nginx
        404 Not Found

        404 Not Found


        nginx
        404 Not Found

        404 Not Found


        nginx

        面向神經(jīng)機(jī)器翻譯的模型存儲壓縮方法分析

        2019-02-25 05:31:54姜雨帆李恒雨
        中文信息學(xué)報 2019年1期
        關(guān)鍵詞:實驗方法模型

        林 野,姜雨帆,肖 桐,李恒雨

        (東北大學(xué) 自然語言處理實驗室,遼寧 沈陽 110819)

        0 引言

        當(dāng)前深層神經(jīng)網(wǎng)絡(luò)在很多任務(wù)上都取得了巨大的進(jìn)步[1-3],但隨著網(wǎng)絡(luò)規(guī)模的增大,網(wǎng)絡(luò)中的參數(shù)增多,網(wǎng)絡(luò)變得更冗余和繁重[4],這種冗余的網(wǎng)絡(luò)不僅會對存儲資源造成浪費(fèi),還會導(dǎo)致嚴(yán)重的過參數(shù)化和過擬合問題[5]。相比傳統(tǒng)的統(tǒng)計機(jī)器翻譯,神經(jīng)機(jī)器翻譯在翻譯質(zhì)量上有了顯著提升;并占用更少的存儲空間,但由于神經(jīng)網(wǎng)絡(luò)仍然規(guī)模巨大,受網(wǎng)絡(luò)計算復(fù)雜度以及有限內(nèi)存、有限存儲資源、有限能源的限制,高性能的基于深層神經(jīng)網(wǎng)絡(luò)的神經(jīng)機(jī)器翻譯系統(tǒng)只能在有限的平臺下使用,無法移植到資源和能源都有限的小型嵌入式系統(tǒng)當(dāng)中[6],如何有效減小機(jī)器翻譯系統(tǒng)模型存儲便成了一個亟待解決的問題。

        針對此問題,研究人員引入模型壓縮方法來進(jìn)行模型的存儲壓縮,在降低模型存儲需求的同時保證模型的性能不受損害。模型壓縮的目標(biāo)分為兩種:(1)減少運(yùn)行時刻內(nèi)存/顯存消耗,指通常所說的運(yùn)行時刻模型壓縮; (2)減少模型在磁盤上的存儲消耗(但是運(yùn)行內(nèi)存并不減小),這個方法可以把模型變得更小,有利于模型在設(shè)備間的傳輸。更小存儲的模型有很多優(yōu)點,比如,小的存儲空間可以使得很多手機(jī)端機(jī)器翻譯應(yīng)用使用更小的離線下載包而提升用戶體驗,減小帶寬并提高并行性,本文實驗針對第二種目的。

        模型壓縮方法總體可以分為兩大類:第一類方法修改模型結(jié)構(gòu),減小模型存儲大小[7-9],設(shè)計更精細(xì)的網(wǎng)絡(luò)結(jié)構(gòu);第二類方法不改變模型結(jié)構(gòu),在現(xiàn)有模型基礎(chǔ)上減少模型參數(shù)以減小模型存儲。本文在第二類方法上進(jìn)行研究。研究人員在對第二類模型壓縮方法的研究中提出了很多可行方法,如剪枝[10]、量化[5]、低精度[11]、哈夫曼變長編碼[12]、知識精煉[13]等。本文針對現(xiàn)有剪枝、量化和低精度三種方法,基于Transformer和GNMT[14]雙層RNN基線系統(tǒng)在NIST12數(shù)據(jù)集上進(jìn)行實驗,對比分析以上三種模型壓縮方法在兩種模型上可達(dá)到的不同壓縮效果及其原因,本文中實驗僅針對模型存儲空間進(jìn)行壓縮,并未對模型運(yùn)行內(nèi)存進(jìn)行壓縮。

        實驗中,為了分析使用不同模型對每種模型壓縮方法效果的影響,我們選取了RNN和Transformer兩個基線系統(tǒng)。在最后的實驗結(jié)果中,對于RNN和Transformer,單獨(dú)使用剪枝方法可分別剪掉40%和15%模型參數(shù)而保持模型性能不變;單獨(dú)使用量化方法,在保證模型性能的同時可以將RNN最多由32-bit浮點數(shù)壓縮至4-bit,可以將Transformer的參數(shù)最多由32-bit浮點數(shù)壓縮至6-bit;單獨(dú)使用半精度方法可將兩套模型均壓縮至原有大小的50%而沒有任何性能損失。由于模型在解碼過程中僅需要一部分參數(shù),對其余模型參數(shù)我們不進(jìn)行存儲,在僅存儲解碼相關(guān)參數(shù)的基礎(chǔ)上,使用剪枝、量化、低精度三種方法的組合方法,可在不損失原有模型精度的前提下在Transformer和RNN模型上達(dá)到5.8×和11.7×的壓縮率。

        1 模型壓縮方法

        本節(jié)對本文實驗中所使用的模型壓縮方法進(jìn)行具體介紹。模型壓縮方法包括剪枝、量化、低精度中的半精度方法。

        1.1 剪枝

        模型裁剪的方法最早由Cun等人提出[10],是目前模型壓縮中使用最廣泛的方法,其主要思想是通過減少參數(shù)空間中的冗余來縮小模型規(guī)模。近年來,在基于卷積神經(jīng)網(wǎng)絡(luò)的計算機(jī)視覺領(lǐng)域任務(wù)中,模型裁剪方法已經(jīng)取得了不小的成果,有些研究工作甚至可以在完全不損失模型性能的前提下大幅裁剪模型的參數(shù)[15]。

        我們以RNN模型為例觀察模型的參數(shù)分布,從圖1(a)可以看出,神經(jīng)網(wǎng)絡(luò)中絕大部分參數(shù)分布在0點附近,在整個參數(shù)分布中,裁剪掉越靠近0的參數(shù)往往對模型造成的破壞就越小。在實驗中,我們可以硬性設(shè)置一個閾值,裁剪掉絕對值低于這個閾值的權(quán)值或者整個神經(jīng)元,也可以裁剪掉所有權(quán)值絕對值最小的前x%??傮w來說,剪枝的整個過程就是一個將稠密的網(wǎng)絡(luò)變成稀疏網(wǎng)絡(luò)的過程。

        圖1 模型參數(shù)分布圖

        本文中實驗中采取了Class-blind和Class-uniform兩種剪枝策略[16]。Class-blind方法是將模型中所有參數(shù)按絕對值大小進(jìn)行排序,裁剪掉絕對值最小的前x%參數(shù),這種方法可以保證裁剪掉的模型參數(shù)值一定最接近0,缺點是導(dǎo)致模型中每層的剪枝比例不均勻。Class-uniform方法首先需對模型中參數(shù)分層,在每層中剪掉絕對值最小的前x%參數(shù)來保證每層的剪枝比例均勻,缺點是若某一層中參數(shù)絕對值普遍偏大或這一層中大部分參數(shù)對模型來說都很重要,硬性的分層剪枝會對模型精度造成更大損失。

        按Class-blind和Class-uniform方法進(jìn)行剪枝后模型參數(shù)分布如圖1(b)和(c)所示,由圖中可以看出按Class-blind方法比Class-uniform方法所剪參數(shù)分布更集中,Class-uniform方法所剪參數(shù)分布范圍更廣,體現(xiàn)在圖中就是圖1(b)和圖1(c)中間無參數(shù)部分寬度相比,圖1(c)中間空白部分比圖1(b)更寬且更有層次。

        1.2 量化

        量化方法最早由Oliver等人提出[17],Denil等人的工作將量化方法用于神經(jīng)網(wǎng)絡(luò)模型的壓縮并證實了神經(jīng)網(wǎng)絡(luò)當(dāng)中的過參數(shù)化問題[5]。在神經(jīng)網(wǎng)絡(luò)當(dāng)中,參數(shù)都是用32-bit浮點數(shù)表示,量化方法實際上就是通過犧牲參數(shù)精度的方式減少每個模型參數(shù)存儲所需要的比特位數(shù)。

        在進(jìn)行量化實驗時,我們首先需選定量化區(qū)間,量化區(qū)間是執(zhí)行量化操作的區(qū)域,對于量化區(qū)間外的值仍以原值保存,由于神經(jīng)網(wǎng)絡(luò)參數(shù)總體呈正態(tài)分布,選定量化區(qū)間以0為中心。以1--bit量化為例,量化過程如圖2所示,量化過程即用索引值代替量化區(qū)間內(nèi)原值的過程,當(dāng)進(jìn)行n-bit量化時,將選定量化區(qū)間分為2n個等長區(qū)間,每個區(qū)間依次由索引0至2n-1來表示。進(jìn)行解碼時,需將索引值恢復(fù)為原區(qū)間內(nèi)的值,本文實驗中我們分別將參數(shù)值恢復(fù)為原區(qū)間的左值、中值和右值,并進(jìn)行對比分析。

        經(jīng)過量化,模型以一個更低精度的形式來保存,使其成功地嵌入到小型設(shè)備上成為可能[18]。量化過程中,可以將網(wǎng)絡(luò)的參數(shù)量化至固定的4~12-bit[19],更極端的情況下也可以用1~2-bit來表示模型參數(shù)[20]。

        圖2 量化過程圖

        1.3 低精度

        神經(jīng)網(wǎng)絡(luò)中的權(quán)值都用浮點數(shù)表示,單精度浮點數(shù)在計算機(jī)中用32-bit表示,其中符號位1-bit,指數(shù)位8-bit,尾數(shù)位23-bit。在進(jìn)行模型的訓(xùn)練時,保持權(quán)值的高精度可以確保得到更優(yōu)的模型,而當(dāng)模型訓(xùn)練完之后,權(quán)值精度適度降低一般對模型性能影響不大。低精度與量化方法思想相近,都是通過改變模型參數(shù)表示的形式來達(dá)到壓縮存儲的目的,在低精度方法中,通過將浮點數(shù)的尾數(shù)部分去掉來節(jié)省模型參數(shù)存儲空間。

        本文采取低精度中的半精度方法進(jìn)行實驗,在半精度方法中把32-bit單精度浮點數(shù)裁剪成16-bit半精度浮點數(shù)來進(jìn)行參數(shù)的壓縮存儲。具體實驗時可分為壓縮和解壓兩個步驟,壓縮步驟中將原有的32-bit直接舍去尾數(shù)位中的16-bit,在解壓縮步驟中把舍去的16-bit用0補(bǔ)全恢復(fù)為32-bit,壓縮和解壓過程如圖3所示。

        圖3 半精度方法參數(shù)壓縮和解壓過程

        2 基線系統(tǒng)

        本文基于Tensorflow開源框架,搭建Transformer和GNMT雙層RNN兩套基線系統(tǒng)。主要對比分析剪枝、量化和半精度三種方法在Transformer和RNN兩種模型上不同的實驗效果及出現(xiàn)這些實驗現(xiàn)象的原因。

        本文中使用Transformer[21]作為實驗基線之一。Transformer由Google在2017年提出,此模型摒棄了傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),是一個完全基于自注意機(jī)制的網(wǎng)絡(luò)結(jié)構(gòu),模型的優(yōu)點是提高了模型的可并行程度,減少了模型的訓(xùn)練代價。

        Transformer編碼器由6個相同的層堆疊而成,每層都有兩個子層,第一個子層是多頭自注意力機(jī)制,第二個子層是一個簡單的,對位置敏感的前饋神經(jīng)網(wǎng)絡(luò)。解碼器同樣由6個相同的層堆疊而成,其中每層有三個子層,其中有兩個子層和編碼器相同,第三個子層是負(fù)責(zé)處理編碼器輸出的多頭注意力機(jī)制。為了減小訓(xùn)練壓力并加速模型收斂,在編碼器和解碼器中每一個子層后都會有殘差連接和層正則化操作。

        Transformer使用的多頭注意力機(jī)制(mulit-head attention)的基本單元是按比例的點積注意力(scaled dot-product attention),這種注意力的輸入分為K、Q、V,計算過程如下所示

        (1)

        由于在點積的注意力機(jī)制上我們進(jìn)行了按比例縮放,縮放后每個參數(shù)都被映射至更小的值,使模型參數(shù)范圍壓縮至更小的區(qū)間內(nèi),因此Transformer相較于傳統(tǒng)的RNN參數(shù)分布范圍更小。

        表1 Class-blind和Class-uniform剪枝策略對Transformer和RNN的性能影響

        2.1 實驗設(shè)置

        本文實驗主要在中英翻譯任務(wù)上進(jìn)行,評價指標(biāo)采用Moses公開計算BLEU的腳本multi-bleu.pl,對于Transformer和RNN,實驗數(shù)據(jù)均采用NIST12 OpenMT[注]LDC2000T46,LDC2000T47,LDC2000T50,LDC2003E14,LDC2005T10, LDC2002E18,LDC2007T09,LDC2004T08作為訓(xùn)練集,其中包括39.42MB的中文詞和44.92MB的英文詞,用NIST2006 (MT06)作校驗集和測試集,所有中文句子都采取NiuTrans[22]提供的工具進(jìn)行分詞,長度超過50詞的句子都被過濾掉,Transformer和RNN中均使用詞頻最高的30KB大小的詞表,所有詞表外的詞都用UNK來代替。

        模型結(jié)構(gòu)方面,在Transformer中,編碼端和解碼端各有六層,RNN編碼端和解碼端各為兩層。模型參數(shù)方面,Transformer基線系統(tǒng)中訓(xùn)練參數(shù)共90MB,訓(xùn)練參數(shù)占存儲空間大小362MB,RNN訓(xùn)練參數(shù)共有134MB,占存儲空間大小537MB。

        2.2 實現(xiàn)細(xì)節(jié)

        對于Transformer,本工作采用tensor2tensor的1.0.14版本,模型編碼端和解碼端各有六層,隱藏層維度大小為512,batch大小為4 096,num_heads為8,最大句長為50,殘差dropout為0.1,初始學(xué)習(xí)率設(shè)置為0.001,優(yōu)化器采用Adam,訓(xùn)練15輪,沒有采用BPE、Ensemble和Finetune。

        對于RNN基線系統(tǒng),本工作采用GNMT的RNN,模型編碼端和解碼端各有兩層且編碼器為單向結(jié)構(gòu),隱藏層維度大小為1 024,batch大小為128,最大句子長度設(shè)為50,dropout為0.2,初始學(xué)習(xí)率為1.0,優(yōu)化器采用SGD(stochastic gradient descent),訓(xùn)練步數(shù)為150k,沒有采用BPE、Ensemble和Finetune。

        3 對比分析

        3.1 剪枝方法對比分析

        本部分實驗基于Transformer和RNN兩套系統(tǒng),運(yùn)用Class-blind和Class-uniform方法進(jìn)行模型剪枝,主要對比分析兩種剪枝方法在兩種模型上不同的剪枝效果。在不損失模型性能的前提下,Class-blind方法在Transformer和RNN上分別可以剪枝15%和40%;Class-uniform方法在Transformer和RNN上分別可以剪枝15%和25%。剪枝方法在RNN及Transformer上的實驗結(jié)果如表1所示,其中剪枝比例為0即代表基線,剪枝過程中模型性能整體變化趨勢如圖4所示。

        圖4 Transformer和RNN在Class-blind和Class-uniform剪枝方法下的性能對比

        3.1.1 相同剪枝方法在不同模型上的效果分析

        此部分主要介紹在相同的剪枝方法下,隨著剪枝比例的增大,Transformer和RNN的性能變化趨勢。本文中采取Class-blind和Class-uniform兩種剪枝策略,具體方法見1.1節(jié)。值得注意的是,在進(jìn)行Class-uniform剪枝實驗時,由于需要分層進(jìn)行剪枝,我們首先將神經(jīng)網(wǎng)絡(luò)模型按結(jié)構(gòu)分成五部分,Source embedding、Target embedding、Encoder、Decoder和Softmax,在分層實驗時,我們在Encoder和Decoder中進(jìn)一步按照不同模型結(jié)構(gòu)進(jìn)行分層,其中Transformer中有6層,RNN中有2層。

        從表1實驗結(jié)果可以看出,隨著剪枝比例的增大,BLEU值趨向于變低,剪枝比例越大,BLEU值下降得越快,這與我們的預(yù)期相符,被剪枝參數(shù)數(shù)量越多,必然對模型造成的破壞越大,BLEU值就會越快地降低。

        從圖4實驗結(jié)果看出,無論采取Class-blind還是Class-uniform方法,RNN在保持模型精度的條件下剪枝程度都大于Transformer,這說明在剪枝比例相同的情況下,Transformer的性能損失明顯大于RNN。從總體剪枝實驗情況來看,RNN最高可以剪到40%性能不掉,而Transformer最高只能剪到15%左右。這也從側(cè)面說明了Transformer模型中相較于RNN中冗余參數(shù)更少。

        造成以上實驗現(xiàn)象的原因與RNN和Transformer的參數(shù)分布特點有關(guān)。雖然二者參數(shù)均服從正態(tài)分布,但Transformer較RNN參數(shù)分布得更集中,導(dǎo)致其參數(shù)矩陣的方差更大,因此其對于0點附近的值不敏感,而剪枝時我們剪掉的是0附近的值,因此對于RNN可以剪掉較大比例的參數(shù)值而不對模型性能產(chǎn)生影響。Transformer則與RNN相反,其參數(shù)分布集中,因此其對于0附近的值比較敏感,導(dǎo)致剪枝對Transformer的影響更大。

        由此可見,剪枝方法更適用于壓縮方差較大、分布離散的模型。

        3.1.2 不同剪枝方法在相同模型中的效果分析

        此部分主要介紹Cass-blind和Class-uniform兩種剪枝策略分別在Transformer和RNN上進(jìn)行實驗的實驗現(xiàn)象以及出現(xiàn)這些現(xiàn)象的原因,剪枝過程中模型性能整體變化趨勢如圖4所示,剪枝比例小于10%時,兩種模型的BLEU值均沒有降低,圖中兩套模型的起始點即為其各自的基線BLEU值。

        對于RNN來說,隨著剪枝比例的增大,在剪枝比例小于50%時,兩種剪枝策略在同一剪枝比例所達(dá)到的模型性能相同,當(dāng)剪枝比例大于50%時,按Class-blind策略進(jìn)行剪枝的性能明顯優(yōu)于Class-uniform,Class-blind策略剪枝達(dá)到性能更接近于基線系統(tǒng),原因在于RNN在每層之間的參數(shù)分布范圍差異較大,而且RNN中參數(shù)值普遍偏大,運(yùn)用Class-blind 方法進(jìn)行剪枝可以保證所剪參數(shù)一定是最接近于0,而對于Class-uniform方法,按比例硬性剪掉每層中參數(shù)則會導(dǎo)致剪掉RNN中絕對值較大的參數(shù),從而對模型的性能產(chǎn)生影響。

        對于Transformer模型來說,隨著剪枝比例的增大,當(dāng)剪枝比例小于15%至20%時,兩種方法在性能上無明顯差異,當(dāng)剪枝比例大于這一比例時,按Class-uniform策略進(jìn)行剪枝的模型性能明顯優(yōu)于Class-blind方法,這與在RNN上實驗現(xiàn)象相反,主要是因為Transformer每層間參數(shù)分布差異較小,按Class-uniform策略進(jìn)行剪枝可以發(fā)揮該方法的優(yōu)勢,即Class-uniform方法可以使模型的剪枝更加均勻,并在每個分類中都剪掉更多對于模型冗余的參數(shù)。

        總體來說,對于RNN,由于RNN參數(shù)范圍偏大且各層間參數(shù)分布不均勻,因此用Class-blind方法比Class-uniform剪枝效果好。對于Transformer,由于模型參數(shù)范圍小且各層間參數(shù)分布較均勻,因此在其上用Class-uniform來剪枝效果更好。

        3.1.3 相同剪枝方法在相同模型上不同層次效果分析

        在進(jìn)一步分析模型層次對剪枝效果的影響的時候,我們在Transformer和RNN上分別進(jìn)行實驗,實驗中統(tǒng)一采取Class-blind方法,在其余層不變的情況下對每一層進(jìn)行單獨(dú)剪枝,我們對編碼器和解碼器中的每一層都單獨(dú)進(jìn)行了實驗。由于選取的兩套基線系統(tǒng)中Transformer層數(shù)較多,我們以其為例分析模型層次加深對剪枝效果的影響以得到更有合理性的實驗結(jié)果,在保持模型性能的前提下各層可以進(jìn)行剪枝的最大比例如圖5所示。

        圖5 Transformer分層剪枝效果圖

        從實驗結(jié)果看出,隨著模型層次的加深,在保持模型性能的前提下剪枝比例逐漸減小,原因在于神經(jīng)網(wǎng)絡(luò)層與層之間是遞進(jìn)關(guān)系,模型更高層中包含前面所有層中信息,也就是說越高層中包含重要的信息越多,因此越高的層次趨向于對剪枝更敏感。

        在圖5實驗結(jié)果中發(fā)現(xiàn),對剪枝越敏感的層趨向于有更大的權(quán)值,比如此模型中decoder layer 1參數(shù)分布范圍較大,對剪枝比較敏感。也就是說,在剪枝相同比例的情況下,對參數(shù)越大的層進(jìn)行剪枝對模型造成的損失越大。在實驗中發(fā)現(xiàn),模型中每一層的參數(shù)大小具有一定隨機(jī)性,因此具體每一層中剪枝比例缺乏普適性。

        在Transformer上進(jìn)行分層剪枝實驗時,若將所有層中保持模型性能的最大比例相結(jié)合進(jìn)行組合剪枝實驗,剪枝比例如圖5所示,當(dāng)基線系統(tǒng)BLEU值為41.76時組合剪枝可以達(dá)到41.65的BLEU值。當(dāng)我們在RNN模型上用相同方法進(jìn)行嘗試性實驗時,將每層中可以達(dá)到基線性能的最大剪枝比例相結(jié)合后模型性能卻很差,在基線BLEU值為39.55時組合剪枝BLEU值僅達(dá)到39.07。產(chǎn)生以上實驗現(xiàn)象的一部分原因是由于RNN模型中每層剪枝的幅度比Transformer大,而神經(jīng)網(wǎng)絡(luò)層與層之間都聯(lián)系十分緊密,改變其中任何一層的參數(shù)都可能對其他層產(chǎn)生不可預(yù)估的影響。另一部分原因是由于RNN模型每層間參數(shù)分布沒有Transformer分布均勻,對單獨(dú)層進(jìn)行剪枝會對其他層產(chǎn)生更大的影響。

        3.2 量化方法對比分析

        實驗中將Transformer和RNN原始訓(xùn)練系統(tǒng)作為基線,運(yùn)用n-bit量化方法對模型進(jìn)行壓縮,由于僅壓縮了存儲空間,解碼時需將參數(shù)恢復(fù)為32-bit浮點數(shù)。在量化的恢復(fù)階段,我們分別將參數(shù)值恢復(fù)為區(qū)間中左值、中值和右值和進(jìn)行實驗,在進(jìn)行8-bit量化過程中,兩種模型均可在保持模型性能不變的前提下,取到包含全部模型參數(shù)99%以上的量化區(qū)間。

        3.2.1 量化時取值方式對模型性能的影響分析

        為了驗證量化恢復(fù)時取值方式對模型性能的影響,我們在Transformer上進(jìn)行實驗,對于同一量化區(qū)間(包含全部參數(shù)范圍的99.1%),在量化的恢復(fù)階段我們分別將參數(shù)值恢復(fù)至量化區(qū)間中左值、中值和右值,實驗結(jié)果如圖6所示。

        圖6 Transformer量化時取值方法對模型性能的影響

        從圖6中可以看出,隨著n-bit量化中n的減小,開始時取左值、中值和右值模型性能無明顯差異,但當(dāng)n逐漸減小直至小于5時,取左值和右值對模型性能破壞極大,當(dāng)n=4或更小時,BLEU值幾乎降為0。也就是說隨著n的減小,量化恢復(fù)時取中值的優(yōu)勢越來越明顯,取中值時模型的性能會明顯優(yōu)于取左值和右值。

        這也驗證了我們的一個想法,一個區(qū)間的中值會接近區(qū)間中的大部分參數(shù),因此將量化后參數(shù)恢復(fù)為32-bit時用中值來代替一個區(qū)間的參數(shù)會更加合理。

        3.2.2 Transformer和RNN對量化方法的敏感程度分析

        為了驗證Transformer和RNN兩套模型對量化方法的敏感程度,我們在8-bit量化的基礎(chǔ)上對模型進(jìn)行了更精細(xì)的n-bit量化實驗,這部分的所有實驗在參數(shù)恢復(fù)階段都將參數(shù)恢復(fù)至區(qū)間中值,實驗結(jié)果如圖7和表2所示。

        圖7 Transformer和RNN最大量化區(qū)間趨勢圖

        圖7顯示內(nèi)容為進(jìn)行n-bit量化時在保證模型性能不變的情況下所能取到的最大范圍的量化區(qū)間。從圖中可以看出,隨著n-bit量化實驗過程中n的減小,所取量化區(qū)間也逐漸減小,這與我們期望相符。n越小,可以取到索引值的總數(shù)2n就越少,量化區(qū)間分成等長區(qū)間的份數(shù)越小,對模型造成的破壞就越大。因此隨著n的減小,本文傾向于選擇更小范圍的量化區(qū)間。從圖中還可以看出Transformer相較于RNN對量化更敏感,量化為相同的比特數(shù)時Transformer的量化區(qū)間更小。產(chǎn)生以上實驗現(xiàn)象的原因與Transformer模型結(jié)構(gòu)有關(guān),由于Transformer有一個參數(shù)矩陣縮放過程,模型參數(shù)被縮小到一定范圍內(nèi),導(dǎo)致模型參數(shù)變化對Transformer造成破壞更大。

        單獨(dú)使用n-bit量化方式時,隨著n的減小,模型壓縮率變化趨勢如圖8所示。模型壓縮率為

        (2)

        圖8 Transformer和RNN n-bit量化模型壓縮率變化

        其中rquan代表n-bit量化后模型壓縮率,xquan代表量化區(qū)間占總參數(shù)區(qū)間的百分比,n代表總模型參數(shù)數(shù)量,b代表每個模型參數(shù)原本需要用來表示的比特位數(shù),bindex代表用來表示模型參數(shù)索引需要的比特位數(shù),bmark代表用來區(qū)分是否在量化區(qū)間外的標(biāo)志的比特位數(shù)。

        從圖8可以看出,隨著n-bit量化中n的減小,模型壓縮率均呈現(xiàn)出先增大后減小的趨勢。產(chǎn)生以上實驗現(xiàn)象的原因主要是由于在模型達(dá)到最大壓縮程度前,隨著n的減小,量化區(qū)間內(nèi)的參數(shù)值被極大程度壓縮,量化區(qū)間外的值所占比例比較小,模型壓縮率增大;在模型達(dá)到最大壓縮程度后,隨著n的減小,雖然量化區(qū)間內(nèi)的參數(shù)值被壓縮,但量化區(qū)間縮小后量化外區(qū)間參數(shù)所占范圍增大,整體模型壓縮程度減小。

        3.3 半精度方法對比分析

        在實驗中我們發(fā)現(xiàn),無論對于Transformer還是RNN模型,用半精度方法進(jìn)行全范圍參數(shù)的壓縮均不會對其造成性能上的損失,這也向我們證明了神經(jīng)網(wǎng)絡(luò)中存在冗余。由于在半精度方法中通過把32-bit單精度浮點數(shù)裁剪成16-bit半精度浮點數(shù)來進(jìn)行參數(shù)的壓縮存儲,因此用半精度方法可以將模型壓縮至原有大小的50%而不對模型性能產(chǎn)生影響。

        而半精度模型壓縮方法在以上兩個模型中的使用效果也向我們證明,在神經(jīng)網(wǎng)絡(luò)中我們并沒有必要使用32-bit單精度浮點數(shù)來保存參數(shù),尾數(shù)位的后16位對模型性能沒有任何意義,用16-bit或更少的比特數(shù)來保存參數(shù)對神經(jīng)網(wǎng)絡(luò)模型就已經(jīng)足夠,多余的比特位會導(dǎo)致網(wǎng)絡(luò)的冗余,并且對存儲資源造成十分不必要的浪費(fèi)。

        基于以上實驗結(jié)果,本文的下一步工作計劃就是嘗試使用更低精度的參數(shù),如整數(shù),進(jìn)行模型的推斷和訓(xùn)練,不僅僅可以減少模型的存儲空間,還可以節(jié)省模型運(yùn)行內(nèi)存及更多的計算資源。

        3.4 總體壓縮程度分析

        進(jìn)行剪枝、量化、半精度三種方法的組合實驗的實驗結(jié)果如表2所示。三種模型壓縮方法的參數(shù)操作范圍為: total=半精度>量化>剪枝,其中total代表全部參數(shù)。

        表2 模型壓縮組合實驗的實驗結(jié)果

        對于RNN,在組合實驗中,我們采取40%剪枝,4-bit量化(量化區(qū)間為98%,其中98%包括剪枝的40%),全范圍的半精度壓縮,最終能達(dá)到11.7×的壓縮率;對于Transformer,我們采取15%范圍剪枝,6-bit量化(量化區(qū)間為98%,98%包括剪枝的15%),全范圍的半精度壓縮,最終能達(dá)到5.8×的壓縮率??梢钥闯觯琑NN的可壓縮程度明顯大于Transformer,二者在總體壓縮程度上的區(qū)別也可反映出Transformer相比于RNN冗余較小。

        從表2實驗結(jié)果可以看出,在剪枝、量化、半精度三種模型壓縮方法組合實驗過程中,量化方法對整個模型壓縮率的影響最大。與剪枝方法相比,量化方法操作的參數(shù)區(qū)間范圍大,與半精度方法相比,量化將參數(shù)存儲壓縮的程度更大,因此在實驗過程中量化方法占主要優(yōu)勢,經(jīng)過量化后,模型被極大地壓縮。

        3.5 更深層網(wǎng)絡(luò)分析

        為了進(jìn)一步驗證Transformer和RNN之間壓縮程度的差異,本文在更深層網(wǎng)絡(luò)(4層和8層)的GNMT RNN模型上進(jìn)行實驗,在兩個更深層RNN上得到的最大壓縮率如表3所示。

        進(jìn)行更深層RNN網(wǎng)絡(luò)的實驗進(jìn)一步證明了我們之前實驗結(jié)果的普適性,RNN可壓縮程度比Transformer更大,從側(cè)面反映出RNN中冗余參數(shù)較多。

        表3 更深層網(wǎng)絡(luò)實驗結(jié)果

        4 下一步工作

        本文,實驗對神經(jīng)網(wǎng)絡(luò)模型的壓縮進(jìn)一步證明了神經(jīng)網(wǎng)絡(luò)中模型參數(shù)的冗余特性。針對該特性,我們在未來工作中會考慮進(jìn)行神經(jīng)網(wǎng)絡(luò)的整數(shù)或更低精度的訓(xùn)練和推斷,將模型壓縮與模型加速相結(jié)合,在減小模型存儲空間的同時也達(dá)到模型加速的目的。

        5 結(jié)論

        本文主要針對如何降低模型參數(shù)存儲進(jìn)行實驗,對比不同壓縮方法在Transformer和RNN上的模型壓縮效果。

        對于剪枝方法,Transformer這種參數(shù)分布范圍較小且每層間參數(shù)分布較均勻的模型,進(jìn)行分層剪枝效果更好,RNN這種模型參數(shù)分布范圍廣且每層間參數(shù)分布相差較大的模型運(yùn)用整體剪枝效果更好,越深的層次趨向于對剪枝越敏感。

        對于量化方法,參數(shù)分布集中的Transformer模型比參數(shù)分布離散的RNN模型更敏感,在進(jìn)行量化時應(yīng)注意選擇合理的量化區(qū)間和n值。

        對于半精度方法,無論在Transformer還是RNN模型上,半精度方法均可在全參數(shù)范圍內(nèi)進(jìn)行模型的壓縮而不會對模型造成任何損失。

        在進(jìn)行剪枝、量化、半精度三種模型壓縮方法的組合實驗中我們發(fā)現(xiàn),Transformer比RNN可壓縮程度小,從側(cè)面反映出Transformer相對于RNN冗余參數(shù)較少。

        猜你喜歡
        實驗方法模型
        一半模型
        記一次有趣的實驗
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        做個怪怪長實驗
        可能是方法不對
        3D打印中的模型分割與打包
        NO與NO2相互轉(zhuǎn)化實驗的改進(jìn)
        實踐十號上的19項實驗
        太空探索(2016年5期)2016-07-12 15:17:55
        用對方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        404 Not Found

        404 Not Found


        nginx
        404 Not Found

        404 Not Found


        nginx
        404 Not Found

        404 Not Found


        nginx
        404 Not Found

        404 Not Found


        nginx
        404 Not Found

        404 Not Found


        nginx
        亚洲精品无码高潮喷水在线| 东北女人一级内射黄片| 午夜亚洲av日韩av无码大全| 中国丰满熟妇xxxx| 亚洲精品国产品国语在线app| av网站在线观看二区| 国产午夜在线视频观看| 精品无码人妻一区二区三区不卡| 一级做a爰片久久毛片| 一区二区三区精彩视频在线观看 | 天天摸天天做天天爽天天舒服| 日本一区二区三区综合视频| 成人免费无码大片a毛片| 国产人在线成免费视频| 国产成人精品免费视频大全| 91乱码亚洲精品中文字幕| 少妇被粗大的猛进出69影院| 永久免费观看的毛片手机视频| 国产精品欧美亚洲韩国日本 | 中文字幕久久波多野结衣av不卡| 久久aⅴ人妻少妇嫩草影院| 亚洲成AⅤ人在线观看无码| 久久夜色精品国产三级| 无码国产成人午夜电影在线观看| 亚洲日韩v无码中文字幕| 男女视频在线一区二区| 久久精品国产在热亚洲不卡| 色综合久久中文娱乐网| 亚洲av熟妇高潮30p| 日本精品国产1区2区3区| 日本伦理精品一区二区三区| 久久无码专区国产精品s| 亚洲精品成AV无在线观看| 白白色日韩免费在线观看 | 无码国产精品第100页| 国产一区二区三区在线观看黄| 亚洲精品一区二区国产精华液 | 国产精品老女人亚洲av无| 国产办公室秘书无码精品99| 国产一区二区三区av在线无码观看 | 一区二区国产av网站|