當前位置:
首頁 > 最新 > 面向神經機器翻譯的模型存儲壓縮方法分析

面向神經機器翻譯的模型存儲壓縮方法分析

當前深層神經網路在很多任務上都取得了巨大的進步,但隨著網路規模的增大,網路中的參數增多,網路變得更冗餘和繁重,這種冗餘的網路不僅會對存儲資源造成浪費,還會導致嚴重的過參數化和過擬合問題。

相比於傳統的統計機器翻譯,神經機器翻譯在翻譯質量上有了顯著提升並佔用更少的存儲空間,但由於神經網路仍然規模巨大,受網路計算複雜度以及有限內存、有限存儲資源、有限能源的限制,高性能的基於深層神經網路的神經機器翻譯系統只能在高性能GPU伺服器平台上使用。如果要將它移植到資源和能源都有限的小型智能嵌入式系統當中(CPU上可用),讓這些設備在沒有網路連接的環境中也能擁有機器翻譯功能,那麼如何有效減小機器翻譯系統模型存儲便成了一個亟待解決的問題。

模型壓縮技術的應用場景

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

模型壓縮方法總體可以分為兩大類:第一類方法修改模型結構減小模型存儲大小,設計更精細的網路結構;第二類方法不改變模型結構,在現有模型基礎上減少模型參數以減小模型存儲,本文在第二類方法上進行研究。研究人員在對第二類模型壓縮方法的研究中提出了很多可行方法,如剪枝、量化、低精度、哈夫曼變長編碼、知識精鍊等。本文針對現有剪枝、量化和低精度三種方法,基於Transformer和GNMT雙層RNN基線系統在NIST12數據集上進行實驗,對比分析以上三種模型壓縮方法在兩種模型上可達到的不同壓縮效果及其原因,本文中實驗僅針對模型存儲空間進行壓縮,並未對模型運行內存進行壓縮。

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

剪枝

模型裁剪的方法最早由LeCun等人於1989年提出,是目前模型壓縮中使用最廣泛的方法,其主要思想是通過減少參數空間中的冗餘來縮小模型規模。近年來,在基於卷積神經網路的計算機視覺領域任務中,模型裁剪方法已經取得了不小的成果,有些研究工作甚至可以在完全不損失模型性能的前提下大幅裁剪模型的參數。

我們以RNN模型為例觀察模型的參數分布,從圖1左側可以看出神經網路中絕大部分參數分布在0點附近,在整個參數分布中,裁剪掉越靠近0的參數往往對模型造成的破壞就越小。在實驗中,我們可以硬性設置一個閾值,裁剪掉絕對值低於這個閾值的權值或者整個神經元,也可以裁剪掉所有權值絕對值最小的前x%。總體來說,剪枝的整個過程就是一個將稠密的網路變成稀疏網路的過程。

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

按Class-blind和Class-uniform方法進行剪枝後模型參數分布如下圖的中側和右側所示。

量化

量化方法最早由Oliver等人於1948年提出, Denil等人於2013年將量化方法應用於神經網路模型的壓縮並證實了神經網路當中的過參數化問題。在神經網路當中,參數都是用32bit浮點數表示,量化方法實際上就是通過犧牲參數精度的方式減少每個模型參數存儲所需要的比特位數。

在進行量化實驗時,我們首先需選定量化區間,量化區間是執行量化操作的區域,對於量化區間外的值仍以原值保存,由於神經網路參數總體呈正態分布,選定量化區間以0為中心。以1-bit量化為例,量化過程如下圖所示。

量化過程即用索引值代替量化區間內原值的過程,當進行n-bit量化時,將選定量化區間分為2n個等長區間,每個區間依次由索引0至2n-1來表示。進行解碼時,需將索引值恢復為原區間內的值,本文實驗中我們分別將參數值恢復為原區間的左值、中值和右值並進行對比分析。

經過量化,模型以一個更低精度的形式來保存,使其成功的嵌入到小型設備上成為可能。量化過程中,可以將網路的參數量化至固定的4-12bit,更極端的情況下也可以用1-2bit來表示模型參數。

低精度

神經網路中的權值都是用浮點數表示,單精度浮點數在計算機中用32bit表示,其中符號位1bit,指數位8bit,尾數位23bit。在進行模型的訓練時,保持權值的高精度可以確保得到更優的模型,而當模型訓練完之後,權值精度適度降低一般對模型性能影響不大。低精度與量化方法思想相近,都是通過改變模型參數表示的形式來達到壓縮存儲的目的,在低精度方法中,通過將浮點數的尾數部分去掉來節省模型參數存儲空間。

本文中採取低精度中的半精度方法進行實驗,在半精度方法中把32bit單精度浮點數裁剪成16bit半精度浮點數來進行參數的壓縮存儲。具體實驗時可分為壓縮和解壓兩個步驟,壓縮步驟中將原有的32bit直接捨去尾數位中的16bit,在解壓縮步驟中把捨去的16bit用0補全恢復為32bit,壓縮和解壓過程如下圖所示。

實驗設置

本文實驗主要在中英翻譯任務上進行,評價指標採用Moses公開計算BLEU的腳本multi-bleu.pl,對於Transformer和RNN,實驗數據均採用NIST12 OpenMT 作為訓練集,其中包括39.42M的中文詞和44.92M的英文詞,用NIST2006 (MT06)作校驗集和測試集,所有長度超過50詞的句子都被過濾掉,Transformer和RNN中均使用詞頻最高的30K大小的詞表,所有詞表外的詞都用UNK來代替。

模型結構方面,在Transformer中,編碼端和解碼端各有六層,RNN編碼端和解碼端各為兩層。模型參數方面,Transformer基線系統中訓練參數共有90M,訓練參數占存儲空間大小為362 MB,RNN基線系統中訓練參數共有134M,占存儲空間大小為537 MB。

對於Transformer,模型編碼端和解碼端各有六層,隱藏層維度大小為512,batch大小為4096,num_heads為8,最大句長為50,殘差dropout為0.1,初始學習率設置為0.001,優化器採用Adam,訓練15輪,沒有採用BPE、Ensemble和Finetune。

對於RNN基線系統,我們採用GNMT的RNN,模型編碼端和解碼端各有兩層且編碼器為單向結構,隱藏層維度大小為1024,batch大小為128,最大句子長度設為50,dropout為0.2,初始學習率為1.0,優化器採用SGD(Stochastic Gradient De-scent),訓練步數為150k,沒有採用BPE、Ensemble和Finetune。

實驗結果

本文中進行了剪枝、量化、半精度三種方法的模型壓縮實驗以及三種方法的組合實驗,以下為三種方法組合實驗的最終實驗結果,如下表所示。

三種模型壓縮方法的參數操作範圍為total=半精度>量化>剪枝,其中total代表全部參數。

對於RNN,在組合實驗中,我們採取40%剪枝,4-bit量化(量化區間為98%,其中98%包括剪枝的40%),全範圍的半精度壓縮,最終能達到11.7×的壓縮率;對於Transformer,我們採取15%範圍剪枝,6-bit量化(量化區間為98%,98%包括剪枝的15%),全範圍的半精度壓縮,最終能達到5.8×的壓縮率。可以看出,RNN的可壓縮程度明顯大於Transformer,二者在總體壓縮程度上的區別也可反映出Transformer相比於RNN冗餘較小。

從上表的實驗結果可以看出,在剪枝、量化、半精度三種模型壓縮方法組合實驗過程中,量化方法對整個模型壓縮率的影響最大。與剪枝方法相比,量化方法操作的參數區間範圍大,與半精度方法相比,量化將參數存儲壓縮的程度更大,因此在實驗過程中量化方法佔主要優勢,經過量化後,模型被極大的壓縮,在Transformer和RNN模型上可分別達到11.7×和5.8×的壓縮率。

實驗結論

對於剪枝方法,Transformer這樣參數分布範圍較小且每層間參數分布較均勻的模型,進行分層剪枝效果更好,對RNN這樣模型參數分布範圍廣且每層間參數分布相差較大的模型運用整體剪枝效果更好,越深的層次趨向於對剪枝越敏感。

對於量化方法,參數分布集中的Transformer模型比參數分布離散的RNN模型對於量化方法更敏感,在進行量化時應注意選擇合理的量化區間和n值。

對於半精度方法,無論在Transformer還是RNN模型上,半精度方法均可在全參數範圍內進行模型的壓縮而不會對模型造成任何損失。

在進行剪枝、量化、半精度三種模型壓縮方法的組合實驗中我們發現, Transformer較RNN可壓縮程度小,從側面反映出Transformer相對於RNN冗餘參數較少。

參考文獻

林野,姜雨帆,李恆雨,肖桐. 2018. 面向神經機器翻譯的模型存儲壓縮方法分析. CCL2018.

小牛翻譯

基於東北大學自然語言處理實驗室38年的機器翻譯研究積累,小牛翻譯NiuTrans團隊致力於打造專業級的外文到中文雙向機器翻譯系統,目前支持近百種語言,全面支持「維蒙藏哈朝彝壯」七大少數民族語言。2016年獲得國內自然語言處理領域最高科學技術獎——錢偉長中文信息處理科學技術獎一等獎,成為首次榮獲該獎的機器翻譯研發團隊。

小牛翻譯開放平台(http://NiuTrans.vip)為合作夥伴提供最好品質的多語種機器翻譯引擎,支持公有雲、專有雲、私有雲和離線版機器翻譯解決方案,目標成為業內最專業的機器翻譯開發平台。

小牛翻譯∣專註機器翻譯38年

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 小牛翻譯 的精彩文章:

神經機器翻譯漏譯問題的改進方法

TAG:小牛翻譯 |