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