[NAS论文][Transformer]HAT: Hardware-Aware Transformers.....

举报
苏道 发表于 2021/04/27 11:11:02 2021/04/27
【摘要】 一个Transformer的超网络空间,使用高效的权重共享机制,简称SuperTransformer,用这个网络进行硬件感知的神经结构搜索[NAS],并发现高性能低延迟模型,消耗的成本比之前的Evolved Transformer少四个数量级。

[HAT: Hardware-Aware Transformers for Efficient Natural Language Processing]

作者:韩松、MIT大佬们【和Once-for-all那篇的人差不多,一个团队的估计】

论文地址:https://arxiv.org/abs/2005.14187

论文代码:https://github.com/mit-han-lab/hardware-aware-transformers.git

注:以下图片都来自论文原文、文字基于原文翻译和个人主观理解,作者水平很差,大家手下留情,如有错误欢迎大家指正,拜谢

1619492929672088523.png


【总览】

1一个足够的设计空间中使用一个高效的权重共享SuperTransformer进行硬件感知的神经结构搜索[NAS],并发现高性能低延迟模型,消耗的成本比之前的Evolved Transformer少四个数量级

2、在评估Transformer的时候,往往有两个问题,1是FLOPs并不反映测量的latency。虽然在现有很多论文里,FLOPs被用作效率的衡量标准,但是其实在不同硬件下,FLOPs和latency之间并不完全对应,下图可见,同样的FLOPs模型的latency其实可以差很远。2是不同的硬件偏好的模型结构不同。ARM 对于Hidden Dim, Embedding Dim 和 Layer Num都比较敏感下图(a),大致呈线性关系。但是Intel CPU和NVIDIA GPU却基本只和layer num呈线性关系(下图bc),这也本文的动机,为不同的硬件提供他们喜欢的模型架构。

793147adaf722fe81374e860e6ee16fd_1265x458.png@900-0-90-f.png


【方法】

     为了使得Transformer可以变成超网络,提供可选的op,也就是从Transformer --> superTransformer这个过程,有两点改变:

1、Arbitrary Encoder-Decoder Attention

     
      传统的transformer只从encoder最后一层抽取信息,迫使虽有的解码器只从高抽象层学习,而忽略了低级信息,形成了信息瓶颈。因此,本文对transformer做的第一个改变是允许每个解码器层可以选择多个编码器层,它允许关注不同的抽象级别,从而提高了模型的容量,如下图所示。

33b2081cff494597c0cac4ab13057b9e_891x324.png@900-0-90-f.png 



       对于decoder来说,不同encoder层的Key和Value向量会分别concat在一起,来喂给En-Decoder Attendtion module,如下图,这个过程不会引入新的参数,并且时延负载上可以忽略不计。

91ba6dd8a894f16f888e099e07f0316f_450x201.png@900-0-90-f.png


2 Heterogeneous Transformer Layers

      传统的 Transformer 对所有的层重复同样的网络结构。在本文中,所以层的结构可以不相同,例如有不同的头数(Head Number),隐藏层维度(Hidden Dim),词向量长度(Embedding Dim)等等( with different numbers of heads, hidden dim, and embedding dim)。
       ① hidden dim elastic 
       传统的transformer的hidden dim是embedding dim 的2倍、4倍,
但这不是最优的,因为不同的层需要不同的能力,这取决于特征提取的难度

       ② elastic embedding dim
        也支持编码器和解码器的elastic embedding dim,但在编码器/解码器内部是尺度一致的
 
       ③ elastic layers

7583b758e880a81bc4138798a1992cdc_567x384.png@900-0-90-f.png



【superTransformer构建】


        因为训练每个架构然后再BLEU上比较不显示,所以,类似于CNN的supernet,这里也构建一个超网络涵盖了所有的子架构,叫做superTransformer,同样的,也采样权重共享的方案。对于 elastic embedding dim,所有子架构(subtransformer)共享最长单词embedding的前端部分和相应的FC层权值。对于elastic FFN dim,前端FC权重共享, Elastic layer numbers共享前几层,对于 elastic head number的注意模块中,全部Q;K;V向量(长度在NAS空间中是固定的 Q; K; V
vector dim fixed as 512)通过划分头部数部分来共享,上述看下图。
       superTransformer采用uniformly sample训练。          

8ae92f85ade6cf71e031e3f0ab6c757d_466x450.png@900-0-90-f.png

【如果不是共享前面部分,比如说共享中间部分会怎么样?】
 

【Evolutionary Search for SubTransformer】


     作者用几千个真实的架构和它的latency,每种设备采集2k个真实架构和他的latency,训练一个3层MLP,作为Latency predicator,用来做预测latency,预测的latency只在搜索过程中使用,实验部分用的latency是实际测量的latency,。用EA算法搜。总的来说,整个上述过程如下图所示

a8ac3de1822fbae782e925c66bf103ca_832x189.png@900-0-90-f.png


【Result】

     结果可以直接看图:,在机器翻译任务上,以transformer-big为基准,在GPU上可以加速2.7倍和1.8倍推理速度在WMT'14 En-De/WMT'14 EN-FR任务上

eb55d10411503a8c15fb88e15b6c8b47_944x517.png@900-0-90-f.png

40094733d46afcc99f12d1eecc11b8a0_947x350.png@900-0-90-f.png


【结论分析】

1、从搜到的结果来看,GPU的网络搜到的网络偏向于又宽又浅,树莓派的则又窄又深

2、在搜索部分,作者做了一个消融实验来对比EA和random search的区别,结果表明,EA搜的结果比random search好:

26bbecf67ac0b617f41ad8d62f64ac72_464x271.png@900-0-90-f.png


3、并不是参数越多,性能越好【我怀疑和架构长什么样有关,存在架构知识】

d0aa6fd897ab5935d9a35e4e58ccc775_455x169.png@900-0-90-f.png


4、如果最优架构不重新开始训练而是finetune的话,还能够起到正向加速训练效果:

ccc19b2c0367b19f1af8fb1d650aae28_424x164.png@900-0-90-f.png

5、如果使用KD蒸馏,效果会更好,教师模型的BLEU值是28.5,49M个参数,学生模型有30M参数。KD可以将学生模型的BLEU从25.8提高到26.1。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。