• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

    2019-02-25 05:31:54姜雨帆李恒雨
    中文信息學(xué)報(bào) 2019年1期
    關(guān)鍵詞:對(duì)模型剪枝區(qū)間

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

    (東北大學(xué) 自然語(yǔ)言處理實(shí)驗(yàn)室,遼寧 沈陽(yáng) 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ò)不僅會(huì)對(duì)存儲(chǔ)資源造成浪費(fèi),還會(huì)導(dǎo)致嚴(yán)重的過(guò)參數(shù)化和過(guò)擬合問(wèn)題[5]。相比傳統(tǒng)的統(tǒng)計(jì)機(jī)器翻譯,神經(jīng)機(jī)器翻譯在翻譯質(zhì)量上有了顯著提升;并占用更少的存儲(chǔ)空間,但由于神經(jīng)網(wǎng)絡(luò)仍然規(guī)模巨大,受網(wǎng)絡(luò)計(jì)算復(fù)雜度以及有限內(nèi)存、有限存儲(chǔ)資源、有限能源的限制,高性能的基于深層神經(jīng)網(wǎng)絡(luò)的神經(jīng)機(jī)器翻譯系統(tǒng)只能在有限的平臺(tái)下使用,無(wú)法移植到資源和能源都有限的小型嵌入式系統(tǒng)當(dāng)中[6],如何有效減小機(jī)器翻譯系統(tǒng)模型存儲(chǔ)便成了一個(gè)亟待解決的問(wèn)題。

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

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

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

    1 模型壓縮方法

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

    1.1 剪枝

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

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

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

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

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

    1.2 量化

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

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

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

    圖2 量化過(guò)程圖

    1.3 低精度

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

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

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

    2 基線系統(tǒng)

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

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

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

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

    (1)

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

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

    2.1 實(shí)驗(yàn)設(shè)置

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

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

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

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

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

    3 對(duì)比分析

    3.1 剪枝方法對(duì)比分析

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

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

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

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

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

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

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

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

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

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

    對(duì)于RNN來(lái)說(shuō),隨著剪枝比例的增大,在剪枝比例小于50%時(shí),兩種剪枝策略在同一剪枝比例所達(dá)到的模型性能相同,當(dāng)剪枝比例大于50%時(shí),按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,而對(duì)于Class-uniform方法,按比例硬性剪掉每層中參數(shù)則會(huì)導(dǎo)致剪掉RNN中絕對(duì)值較大的參數(shù),從而對(duì)模型的性能產(chǎn)生影響。

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

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

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

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

    圖5 Transformer分層剪枝效果圖

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

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

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

    3.2 量化方法對(duì)比分析

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

    3.2.1 量化時(shí)取值方式對(duì)模型性能的影響分析

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

    圖6 Transformer量化時(shí)取值方法對(duì)模型性能的影響

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

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

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

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

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

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

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

    (2)

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

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

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

    3.3 半精度方法對(duì)比分析

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

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

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

    3.4 總體壓縮程度分析

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

    表2 模型壓縮組合實(shí)驗(yàn)的實(shí)驗(yàn)結(jié)果

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

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

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

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

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

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

    4 下一步工作

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

    5 結(jié)論

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

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

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

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

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

    猜你喜歡
    對(duì)模型剪枝區(qū)間
    解兩類(lèi)含參數(shù)的復(fù)合不等式有解與恒成立問(wèn)題
    你學(xué)會(huì)“區(qū)間測(cè)速”了嗎
    人到晚年宜“剪枝”
    基于YOLOv4-Tiny模型剪枝算法
    光源對(duì)模型貼圖的影響——3種人造光源在三維數(shù)字化采集中的應(yīng)用
    廣州文博(2020年0期)2020-06-09 05:15:44
    剪枝
    蒙藥特潤(rùn)舒都樂(lè)對(duì)模型小鼠脾臟NK細(xì)胞活性的影響
    蒙醫(yī)開(kāi)竅補(bǔ)腎針刺法對(duì)模型大鼠胸腺、脾臟指數(shù)的影響
    蒙醫(yī)催熟療法對(duì)模型大鼠炎癥因子影響的實(shí)驗(yàn)研究
    區(qū)間對(duì)象族的可鎮(zhèn)定性分析
    驻马店市| 迭部县| 叶城县| 绍兴市| 佳木斯市| 通化县| 隆安县| 鹤岗市| 花垣县| 阳曲县| 余庆县| 无为县| 白玉县| 石景山区| 无为县| 白玉县| 共和县| 五常市| 确山县| 雷山县| 玛多县| 淄博市| 宝山区| 思南县| 德州市| 汪清县| 扎鲁特旗| 云霄县| 理塘县| 虎林市| 方山县| 云和县| 临漳县| 澜沧| 剑河县| 京山县| 丰县| 麻江县| 县级市| 石河子市| 元谋县|