模型压缩95%:Lite Transformer,MIT韩松等人

Lite Transformer with Long-Short Range Attention

Zhanghao WuZhijian LiuJi LinYujun LinSong Han

  • 论文地址:https://arxiv.org/abs/2004.11886v1
  • GitHub 地址:https://github.com/mit-han-lab/lite-transformer

摘要

Transformer在自然语言处理(如机器翻译、问答等)中已经非常普遍,但是它需要大量的计算才能达到较高的性能,这使得它不适合于硬件资源和电池的严格限制下的移动应用。本文提出了一种高效的移动NLP架构Lite Transformer,以便于在边缘设备上部署移动NLP应用。关键原语是长-短距离注意(LSRA),其中一组负责人专门研究局部上下文建模(通过卷积),另一组负责人专门研究长距离关系建模(通过注意)。这种专业化在三个公认的语言任务(机器翻译、抽象摘要和语言建模)上比普通的转换程序带来了一致的改进。在资源受限(500米/100米MACs)的情况下,Lite Transformer的性能分别比WMT的14英法文高1.2/1.7 BLEU。Lite-Transformer在BLEU评分下降0.3的情况下,将变压器基础模型的计算量减少了2.5x。结合剪枝和量化,进一步压缩了Lite-Transformer的模型尺寸18.2x,在语言建模方面,Lite-Transformer在500M左右的MACs下比Transformer的复杂度降低了1.8。值得注意的是,Lite Transformer比基于AutoML的演进Transformer在移动NLP设置上的BLEU高0.5,而无需花费超过250 GPU年的昂贵架构搜索。

Transformer 的高性能依赖于极高的算力,这让移动端 NLP 严重受限。在不久之前的 ICLR 2020 论文中,MIT 与上海交大的研究人员提出了一种高效的移动端 NLP 架构 Lite Transformer,向在边缘设备上部署移动级 NLP 应用迈进了一大步。

虽然推出还不到 3 年,Transformer 已成为自然语言处理(NLP)领域里不可或缺的一环。然而这样流行的算法却需要极高的算力才能实现足够的性能,这对于受到算力和电池严格限制的移动端来说有些力不从心。

在 MIT 最近的研究《Lite Transformer
with Long-Short Range Attention》中,MIT
与上海交大的研究人员提出了一种高效的移动端 NLP 架构 Lite Transformer,向在边缘设备上部署移动级 NLP 应用迈进了一大步。该论文已被人工智能顶会 ICLR 2020 收录


该研究是由 MIT 电气工程和计算机科学系助理教授韩松领导的。韩松的研究广泛涉足深度学习和计算机体系结构,他提出的 Deep Compression 模型压缩技术曾获得 ICLR2016 最佳论文,论文 ESE 稀疏神经网络推理引擎 2017 年曾获得芯片领域顶级会议——FPGA 最佳论文奖,引领了世界深度学习加速研究,对业界影响深远。

图1:左:最近NLP模型的大小增长迅速,超过了移动限制很多。右图:基于AutoML的NLP模型的搜索成本高得令人望而却步,因为它会排放碳,二氧化碳几乎是汽车寿命平均排放量的5倍。

注意机制在各种应用中得到了广泛的应用,包括1-D(language              处理(Vaswani等人,2017年)、二维(图像识别)和三维(视频识别)(Wang等人2018年)。它计算所有输入元素之间的成对点积,以对两个短期元素进行建模以及长期的关系。尽管该操作有效,但它引入了大量计算。

假设元素的数量(例如,语言处理中标记的长度、像素的数量在图像等中,输入到注意层的是N,而特征(即通道)的维数是d,则点积所需的计算是N2d。

为了解决这个难题,通常的做法是首先使用注意力之前的线性投影层,然后增加尺寸(如图2所示)。在transformer的原始设计中(Vaswani等人,2017),通道尺寸注意模块比FFN层小4倍。同样,在非本地视频中,网络(Wang等人,2018),在应用非本地注意模块。这种做法节省了16×或4×的计算量。然而,它也减少了语境对特征维度较小的注意层的捕获能力。情况可能更糟的是语言处理,因为注意力是获取上下文的主要模块(不像卷积进行图像和视频的主要信息捕获)。

Transformer 在自然语言处理任务(如机器翻译、问答)中应用广泛,但它需要大量计算去实现高性能,而这不适合受限于硬件资源和电池严格限制的移动应用。

这项研究提出了一种高效的移动端 NLP 架构——Lite
Transformer,它有助于在边缘设备上部署移动 NLP 应用。其核心是长短距离注意力(Long-Short Range Attention,LSRA),其中一组注意力头(通过卷积)负责局部上下文建模,而另一组则(依靠注意力)执行长距离关系建模

这样的专门化配置使得模型在三个语言任务上都比原版 transformer 有所提升,这三个任务分别是机器翻译、文本摘要和语言建模。

在资源有限的情况下(500M/100M MACs),Lite
Transformer 在 WMT’14 英法数据集上的
BLEU 值比分别比 transformer 高
1.2/1.7。Lite Transformer 比
transformer base 模型的计算量减少了 60%,而 BLEU 分数却只降低了 0.3。结合剪枝和量化技术,研究者进一步将 Lite Transformer 模型的大小压缩到原来的 5%。

对于语言建模任务,在大约 500M MACs 上,Lite
Transformer 比 transformer 的困惑度低
1.8。

值得注意的是,对于移动 NLP 设置,Lite
Transformer 的 BLEU 值比基于 AutoML 的 Evolved
Transformer
 高 0.5,而且它不需要使用成本高昂的架构搜索。

从 Lite Transformer 与 Evolved
Transformer、原版 transformer 的比较结果中可以看出,Lite Transformer 的性能更佳,搜索成本相比 Evolved
Transformer 大大减少。

那么,Lite Transformer 为何能够实现高性能和低成本呢?接下来我们来了解其核心思想。

长短距离注意力(LSRA)

NLP 领域的研究人员试图理解被注意力捕捉到的上下文。Kovaleva 等人 (2019) 和 Clark 等人
(2020) 对 BERT 不同层的注意力权重进行了可视化。

如下图 3b 所示,权重 w 表示源句单词与目标句单词之间的关系(自注意力也是如此)。随着权重 w_ij 的增加(颜色加深),源句中的第 i 个词更加注意目标句中的第 j 个词。注意力图通常有很强的模式化特征:稀疏和对角线。它们代表了一些特定单词之间的关系:稀疏表示长距离信息间的关系,对角线表示近距离信息间的关系。研究者将前者称为「全局」关系,将后者称为「局部」关系。

图 3:Lite Transformer 架构 (a) 和注意力权重的可视化。传统的注意力 (b) 过于强调局部关系建模(参见对角线结构)。该研究使用卷积层专门处理局部特征提取工作,以高效建模局部信息,从而使注意力分支可以专门进行全局特征提取 (c)。

在翻译任务中,注意力模块必须捕获全局和局部上下文,这需要很大的容量。与专门化的设计相比,这并非最佳选择。以硬件设计为例,CPU 等通用硬件的效率比 FPGA 等专用硬件低。研究者认为应该分别捕捉全局和局部上下文。模型容量较大时,可以容忍冗余,甚至可以提供更好的性能。但是在移动应用上,由于计算和功率的限制,模型应该更加高效。因此,更需要专门化的上下文捕获。

为了解决该问题,该研究提出一个更专门化的架构,即长短距离注意力(LSRA),而不是使用处理 “一般” 信息的模块。该架构分别捕获局部和全局上下文。

如图 3a 所示,LSRA 模块遵循两分支设计。左侧注意力分支负责捕获全局上下文,右侧卷积分支则建模局部上下文。研究者没有将整个输入馈送到两个分支,而是将其沿通道维度分为两部分,然后由后面的 FFN 层进行混合。这种做法将整体计算量减少了 50%。

左侧分支是正常的注意力模块(Vaswani et al. (2017)),不过通道维度减少了一半。至于处理局部关系的右分支,一个自然的想法是对序列应用卷积。使用滑动窗口,模块可以轻松地覆盖对角线组。为了进一步减少计算量,研究者将普通卷积替换为轻量级的版本,该版本由线性层和深度卷积组成。通过这种方式,研究者将注意力模块和卷积模块并排放置,引导它们对句子进行全局和局部的不同角度处理,从而使架构从这种专门化设置中受益,并实现更高的效率。

实验设置

数据集和评估 研究者在机器翻译、文本摘要和语言建模三个任务上进行了实验和评估。

具体而言,机器翻译任务使用了三个基准数据集:IWSLT’14 德语 - 英语 (De-En)、WMT 英语 - 德语 (En-De)、WMT 英语 - 法语(En-Fr)。

文本摘要任务使用的是 CNN-DailyMail 数据集。

语言建模任务则在 WIKITEXT-103 数据集上进行。

架构

模型架构是基于序列到序列学习的编码器 - 解码器。在机器翻译任务中,针对 WMT 数据集,基线模型基于 Vaswani 等人提出的模型。对于 IWSLT 数据集,基线模型遵循 Wu 等人的设置。对于文本摘要任务,研究者采用了与 WMT 相同的模型。至于语言建模任务,模型与 Baevski & Auli
(2019) 一致,但模型尺寸较小。

该研究提出的架构首先将 transformer base 模型中的 bottleneck 拉平,然后用 LSRA 替换自注意力。更具体地说,是使用两个专门的模块,一个注意力分支和一个卷积分支。

实验结果

机器翻译

表 1 展示了 Lite Transformer 在 IWSLT’14 De-En 数据集上的定量结果,并与 transformer 基线方法和 LightConv 做了对比。在大约 100M Mult-Adds 时,Lite Transformer 模型的 BLEU 值比 transformer 高出 1.6。

表 1:IWSLT’14 De-En 上的结果。

表 2 中的定量结果表明,在 100M Mult-Adds 设置下,Lite Transformer 在 WMT En-De 数据集和 WMT En-Fr 数据集上的 BLEU 值分别比 Transformer 高出 1.2 和 1.7,在 300M Mult-Adds 设置下,也有 0.5 和 1.5 分的提升。

表 2:在 WMT’14 En-De 和
WMT’14 En-Fr 上的结果。

研究者还提供了模型在 WMT  En-Fr 上的权衡曲线,如图 4a 所示,Lite Transformer 一直优于原版 transformer。

图 4:在 WMT En-Fr 数据集上的机器翻译权衡曲线,以及在 WIKITEXT-103 数据集上的语言建模权衡曲线。两个曲线都说明了在移动设置下,Lite Transformer 比 transformer 性能更佳(蓝色区域)。

与自动化设计模型的对比

与基于 AutoML 的 Evolved Transformer(ET)相比,Lite Transformer 在移动设置中也有明显的改进。此外,在 100M 和 300M 的
Mult-Adds 下,Lite Transformer 的
BLEU 值分别比 ET 高 0.5 和 0.2,详见表 3。

表 3:不同 NMT 模型的性能和训练成本。

文本摘要

表 4:在 CNN-DailyMail 数据集上的文本摘要结果。

表 5:在 WIKITEXT-103 数据集上的语言建模结果。

模型压缩95%:Lite Transformer,MIT韩松等人的更多相关文章

  1. CNN 模型压缩与加速算法综述

    本文由云+社区发表 导语:卷积神经网络日益增长的深度和尺寸为深度学习在移动端的部署带来了巨大的挑战,CNN模型压缩与加速成为了学术界和工业界都重点关注的研究领域之一. 前言 自从AlexNet一举夺得 ...

  2. 模型压缩一半,精度几乎无损,TensorFlow推出半精度浮点量化工具包,还有在线Demo...

    近日,TensorFlow模型优化工具包又添一员大将,训练后的半精度浮点量化(float16 quantization)工具. 有了它,就能在几乎不损失模型精度的情况下,将模型压缩至一半大小,还能改善 ...

  3. 对抗性鲁棒性与模型压缩:ICCV2019论文解析

    对抗性鲁棒性与模型压缩:ICCV2019论文解析 Adversarial Robustness vs. Model Compression, or Both? 论文链接: http://openacc ...

  4. 模型压缩,模型减枝,tf.nn.zero_fraction,统计0的比例,等。

    我们刚接到一个项目时,一开始并不是如何设计模型,而是去先跑一个现有的模型,看在项目需求在现有模型下面效果怎么样.当现有模型效果不错需要深入挖掘时,仅仅时跑现有模型是不够的,比如,如果你要在嵌入式里面去 ...

  5. 【转载】NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩、机器学习及最优化算法

    原文:NeurIPS 2018 | 腾讯AI Lab详解3大热点:模型压缩.机器学习及最优化算法 导读 AI领域顶会NeurIPS正在加拿大蒙特利尔举办.本文针对实验室关注的几个研究热点,模型压缩.自 ...

  6. tensorflow 模型压缩

    模型压缩 为了将tensorflow深度学习模型部署到移动/嵌入式设备上,我们应该致力于减少模型的内存占用,缩短推断时间,减少耗电.有几种方法可以实现这些要求,如量化.权重剪枝或将大模型提炼成小模型. ...

  7. 【模型压缩】MetaPruning:基于元学习和AutoML的模型压缩新方法

    论文名称:MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning 论文地址:https://arxiv.org/ ...

  8. 模型压缩-Learning Efficient Convolutional Networks through Network Slimming

    Zhuang Liu主页:https://liuzhuang13.github.io/ Learning Efficient Convolutional Networks through Networ ...

  9. MindSpore图像分类模型支持(Lite)

    MindSpore图像分类模型支持(Lite) 图像分类介绍 图像分类模型可以预测图片中出现哪些物体,识别出图片中出现物体列表及其概率. 比如下图经过模型推理的分类结果为下表: 类别 概率 plant ...

随机推荐

  1. Pytorch系列:(四)IO操作

    首先注意pytorch中模型保存有两种格式,pth和pkl,其中,pth是pytorch默认格式,pkl还支持pickle库,不过一般如果没有特殊需求的时候,推荐使用默认pth格式保存 pytorch ...

  2. hdu1316 水大数

    题意:      给你一个区间,问这个区间有多少个斐波那契数. 思路:      水的大数,可以直接模拟,要是懒可以用JAVA,我模拟的,打表打到1000个就足够用了... #include<s ...

  3. 华为USG6000V防火墙简单配置案例

    如图,PC1是企业内网用户,要通过防火墙NAT方式( 1.1.1.105-1.1.1.106 )访问Internet,Server是企业的FTP服务器,通过静态NAT方式供外网用户访问,对外的地址是1 ...

  4. 路由选择协议(RIP/OSPF)

    目录 IGP RIP协议 OSPF协议 IS-IS协议 EIGRP协议 EGP BGP 我们可能会想,在偌大的网络中,我们是如何跟其他人通信的呢?我们是如何跟远在太平洋对面的美国小伙伴对话的呢? 这就 ...

  5. Python脚本自动化破解大白鲨摄像头(Shodan)

    关于本文的技术知识点,Shodan模块的用法,传送门-->  Python中shadon模块的使用    Shodan的使用 今天我们要利用python进行自动化破解的摄像头叫大白鲨摄像头,他的 ...

  6. CVE-2019-11043 Nginx PHP 远程代码执行漏洞复现

    漏洞背景:来自Wallarm的安全研究员Andrew Danau在9月14-16号举办的Real World CTF中,意外的向服务器发送%0a(换行符)时,服务器返回异常信息.由此发现了这个0day ...

  7. Windows核心编程 第四章 进程(中)

    4.2 CreateProcess函数 可以用C r e a t e P r o c e s s函数创建一个进程: BOOL CreateProcessW( _In_opt_ LPCWSTR lpAp ...

  8. WPF之数据绑定基类

    数据绑定方法 在使用集合类型作为列表控件的ItemsSource时一般会考虑使用ObservalbeCollection,它实现了INotifyCollectionChanged和INotifyPro ...

  9. Pulsar部署和实践(一)

    前言 本地Docker部署Pulsar消息代理实现消息发布和消息订阅 介绍 相关概念,后面有时间再花时间整理下. 实践步骤 1.使用dokcer本地部署pulsar docker run -it \ ...

  10. 带你解析MySQL binlog

    前言: 我们都知道,binlog可以说是MySQL中比较重要的日志了,在日常学习及运维过程中,也经常会遇到.不清楚你对binlog了解多少呢?本篇文章将从binlog作用.binlog相关参数.解析b ...