ACL 2020 | 基于不同硬件搜索更好的Transformer结构
論文標題:
HAT: Hardware-Aware Transformers for Efficient Natural Language Processing
論文作者:
Hanrui Wang (MIT), Zhanghao Wu (MIT), Zhijian Liu (MIT), Han Cai (MIT), Ligeng Zhu (MIT), Chuang Gan, Song Han (MIT)
論文鏈接:
https://arxiv.org/abs/2005.14187
代碼鏈接:
https://github.com/mit-han-lab/hardware-aware-transformers
收錄情況:
ACL 2020
過去有大量針對Transformer結(jié)構(gòu)進行簡化的工作,但是它們都沒有考慮到不同硬件對模型結(jié)構(gòu)的影響。
本文首次提出使用網(wǎng)絡(luò)結(jié)構(gòu)搜索(NAS)的方法,針對不同的硬件,搜索適合該硬件的最佳的Transformer結(jié)構(gòu)。
實驗表明,在不同硬件下,得到的Transformer結(jié)構(gòu)相比其他模型更小、更快,且不損效果。
更好更快的Transformer
眾所周知,盡管Transformer效果很好,但由于它本身較大,難以在一些硬件上,尤其是移動手機上運行。
針對此,已經(jīng)有很多工作對Transformer的結(jié)構(gòu)進行改進,在大幅降低它體型的同時,保持效果不變。
然而,這些工作大都忽略了一個事實:對不同硬件而言,“最優(yōu)”的Transformer結(jié)構(gòu)可能大不相同。
而且,過去的方法往往用FLOPs(浮點運算量)去度量模型效率,而不是更加直接的Latency(時延),在不同的硬件上,FLOPs和Latency之間并不完全對應(yīng)。
如下圖所示,在Raspberry ARM CPU上,Eembedding的大小影響更大,但是對Intel CPU和NVIDIA GPU而言,Embedding就幾乎沒有影響。
此外,在Raspberry ARM CPU上,FLOPS和Latency大致呈線性關(guān)系,但是在Intel CPU和NVIDIA GPU上,只有模型的層數(shù)呈現(xiàn)這種關(guān)系,對隱藏層維數(shù)而言,相似的FLOPs會導致完全不同的Latency。這
說明了,在設(shè)計Transformer的時候,如果要追求更加精細的結(jié)果,需要考慮到不同硬件的實際條件。
但是,又該如何設(shè)計基于硬件的模型結(jié)構(gòu)呢?手工設(shè)計自然過于麻煩,于是本文提出,利用網(wǎng)絡(luò)結(jié)構(gòu)搜索(NAS)方法進行自動搜索!
本文提出將解碼器和編碼器之間的任意Attention作為模型結(jié)構(gòu)的一個變量,并且允許不同的頭數(shù)、層數(shù)、隱藏層維數(shù)等其他變量,將以上變量作為一個大型的搜索空間,在其中針對不同的硬件找到最好的模型結(jié)構(gòu)。
為了加快搜索速度,本文提出SuperTransformer——SubTransformer的父子類搜索方法。SuperTransformer是所有結(jié)構(gòu)中最大的一個,而SubTransformer則從中采樣子網(wǎng)絡(luò),不同子網(wǎng)絡(luò)中相同的部分共享權(quán)重。
如此一來,就不必為每個自網(wǎng)絡(luò)訓練單獨的模型,這就大大加快了搜索速度。
最后,通過實驗顯示,本文搜索出的模型結(jié)構(gòu)不僅更小更快,而且在效果上甚至更好,超過了Evolved Transformer等結(jié)構(gòu)。
總的來說,本文貢獻如下:
基于不同硬件搜索不同的Transformer結(jié)構(gòu),和硬件實際條件更加契合;
提出SuperTransformer搜索范式,大大加快搜索速度;
搜索得到的模型更小、更快、更好。
HAT:Hard-Aware Transformers
|?搜索空間
對Transformer而言,比較重要的參數(shù)有:Embedding維數(shù),Hidden維數(shù),Head數(shù),Layer數(shù),此外,本文還允許解碼器的每一層同時關(guān)注編碼器的多層而不僅僅是最后一層。以上就定義了整個搜索空間。
但是,如果要訓練所有的模型并且來評估它們的BLEU值,顯然是不可能的。于是,本文提出SuperTransformer——作為所有可能的模型結(jié)構(gòu)的一個“父類”——來囊括所有可能的模型。
SuperTransformer是搜索空間中“最大”的一個模型,所有的其他模型都是SuperTransformer中的一個子網(wǎng)絡(luò),并且共享相同的部分。一個子網(wǎng)絡(luò)只需要取SuperTransformer中的前端一部分參數(shù)即可。
下圖是一個示例。藍色部分表明:如果搜索空間中Embedding維數(shù)最大為640,當前想要測評的模型維數(shù)是512,那么我們只需要取整個大矩陣的前512維。
橙色部分同理:如果搜索空間中Hidden維數(shù)最大允許是1024,而當前考慮的模型是768,也只需要取前768維即可。
如此一來,所有的子網(wǎng)絡(luò)都包含在了一個大的“父模型”中,訓練子模型,也就意味著只需要大模型中對應(yīng)的一部分參數(shù)即可。
相比一個一個訓練獨立的小模型,只需要像訓練一個普通Transformer一樣訓練這個大模型,然后再從中取出子模型來做測評就可以了。這樣就大大節(jié)約了訓練開銷。
|?搜索方法
然而,現(xiàn)在還有一個問題。我們的目標是直接降低模型在硬件上的Latency,這就需要對每個模型進行評估。
然而,用真實數(shù)據(jù)對每個模型都測量它們的Latency耗時太多。基于此,本文提出使用Latency Predictor,直接訓練一個小的神經(jīng)網(wǎng)絡(luò),輸入模型結(jié)構(gòu),預測該模型在此硬件上的Latency。
乍一看這個方法似乎不靠譜,但是實際的效果卻很好。如下圖所示。
網(wǎng)絡(luò)預測得到的Latency和實際的幾乎沒有差別,而我們需要做的,只是為每個硬件提供真實的訓練數(shù)據(jù)。本文為每個硬件提供了2000個樣本,按照8:1:1的方法劃分數(shù)據(jù)集。
注意到Latency Predictor只用在搜索過程中,在最后實驗的時候還是用的真實測得的Latency。
|?概覽
下圖是HAT的方法概覽。第一步就是定義搜索空間、訓練SuperTransformer并從中采樣子網(wǎng)絡(luò);第二步是搜集實際硬件-Latency的數(shù)據(jù);第三步把這個數(shù)據(jù)訓練一個Latency Predictor;最后使用進化算法搜索得到最佳的模型結(jié)構(gòu)。
實驗
本文在WMT’14 En-De, WMT’14 En-Fr, WMT’19 En-De, 和IWSLT’14 De-En上實驗,基線模型有Transformer, Levenshtein Transformer, Evolved Transformer,和 Lite Transformer。
運行的硬件有Raspberry Pi-4 ARM Cortex-A72 CPU, Intel Xeon E5-2640 CPU, 和Nvidia TITAN Xp GPU。其他實驗設(shè)置詳見原文。
下圖是在En-De和En-Fr上,不同模型的Latency和BLEU值結(jié)果。在Raspberry Pi ARM CPU上,HAT比Transformer Big快3倍,并且小3倍多,甚至效果還更好;在Intel CPU、Nvidia GPU上也有不小的提升。
下表是具體的數(shù)據(jù)和比較。可以看到,HAT無論在Latency、參數(shù)量上,還是在FLOPs、BLEU值上,還是在搜索時間,甚至在二氧化碳排放量和花費的錢上,都有顯著優(yōu)勢。可謂讓NAS-Transformer走進千萬實驗室!
下圖是搜索過程所排放的二氧化碳量比較,可以看到,HAT的排放量可以忽略不計,比Evolved Transformer少一萬多倍。
除了以上實驗之外,本文還做了詳實的分解實驗,包括:SuperTransformer的效果,是否可以加上量化,是否可以使用知識蒸餾等。讀者可以參考原文。
最后來看看使用HAT在不同硬件上得到的最好的結(jié)構(gòu)是怎樣的。如下圖所示,可以發(fā)現(xiàn),對Raspberry Pi ARM CPU和NVIDIA GPU,HAT得到的模型結(jié)構(gòu)是很不同的。二者在層數(shù)、維度數(shù)和Attention方式上都有差別。
小結(jié)
本文提出了基于不同硬件的Transformer結(jié)構(gòu)搜索方法,巧妙地提出了SuperTransformer的方法,讓所有的子結(jié)構(gòu)都囊括其中,從而只需要一次性訓練父模型,就可以以采樣的方式評估子模型了。
此外,為了進一步節(jié)約模型在評估時的開銷,本文還提出了Latency Predictor,通過模型結(jié)構(gòu)直接預測Latency,而不需要實際數(shù)據(jù)的輸入。實驗表明,本文方法可以得到更小、更快、更好的Transformer模型,而且有利環(huán)保,開銷極小。
????
現(xiàn)在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關(guān)注」訂閱我們的專欄吧
關(guān)于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術(shù)平臺。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結(jié)
以上是生活随笔為你收集整理的ACL 2020 | 基于不同硬件搜索更好的Transformer结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 欧盟计划紧急限制乌粮食外运,吃饭时喉,喉
- 下一篇: 小米卢伟冰:胡馨心轮岗至 Redmi 产