一年六篇顶会的清华大神提出Fastformer:史上最快、效果最好的Transformer

简介: Transformer模型好是好,可惜太慢了!最近一位清华大神在arxiv上传了一篇论文,提出新模型Fastformer,线性时间复杂度,训练和推理效率史上最快,还顺手在排行榜刷了个sota。

Transformer 的强大毋庸置疑,想要在CV和NLP的排行榜上取得一席之地,Transformer几乎是必不可少的骨架模型。

 

但它的效率相比传统的文本理解模型来说却不敢恭维,Transformer的核心是自注意力(self-attention)机制,对于输入长度为N的文本,它的时间复杂度达到二次O(N^2)。

 

虽然已经有很多方法来处理 Transformer 加速问题,但是对于长序列来说,这些方法要么效率仍然较低或是效果还不够好,例如BigBird使用稀疏注意力却丢失了全局上下文信息。

 

清华大学提出了一个新模型Fastformer,基于additive attention能够以线性复杂度来建立上下文信息。

80.jpg论文地址:https://arxiv.org/abs/2108.09084


文章的第一作者武楚涵,是清华大学电子工程系的博士研究生。


目前的研究兴趣包括推荐系统、用户建模和社会媒体挖掘。在人工智能、自然语言处理和数据挖掘领域的会议和期刊上发表过多篇论文。81.jpg仅2021年就在顶会上发表了六篇论文,大神的世界只能仰望。

 82.jpg论文的通讯作者是黄永峰,清华大学电子系教授,博士,博导,信息认知和智能系统研究所副所长,首届全国十佳网络安全优秀教师。


主要从事网络及网络安全技术的研究和教学。现为IEEE Senior Member、中国电子学会信息隐藏与多媒体安全专家委员会委员。


已在IEEE Transaction IFS和中国科学等国内外著名期刊和AAAI和ACL等重要国际会议发表论文300多篇;出版专著4部、译著2部,教材2部。申请和授权发明专利10余项。

83.jpg

Fastformer首先对输入的attention query矩阵合并为一个全局query向量,然后对attention的key和全局query向量采用element-wise的乘法学习到全局上下文相关key矩阵,再通过additive attention合并为全局key向量。

 

通过元素乘积对全局key和attention之间的交互进行建模,并使用线性变换学习全局上下文感知的注意力,最后将它们与attention query查询一起添加以形成最终输出。

84.jpg由此,计算复杂度可以降低到线性,并且可以有效地捕获输入序列中的上下文信息。

 

对于学习全局query和key向量的additive attention网络,其时间和内存开销均为O(N·d),参数总数为2hd(h为注意头数)。此外,元素乘积的时间代价和内存代价也是O(N·d),总复杂度是,比标准的Transformer复杂度要更有效率。

 

如果采用权重共享(weight sharing)方法,每层Fastformer的总参数量为,也有更少的参数。


模型验证


论文在五个不同任务的数据集上进行实验来验证Fastformer的效率:


  1. IMDB,电影评论星级预测数据;
  2. MIND,一个大规模的新闻推荐数据集。在这个数据上进行两个任务:新闻主题分类和个性化推荐;
  3. CNN/DailyMail数据集,一个广泛使用的文本摘要数据集;
  4. PubMed数据集,包含更长文本的文本摘要数据集;
  5. Amazon 电子产品领域评论星级预测数据。


85.jpg实验过程中使用Glove词向量初始化,在32GB的V100 GPU上进行5次实验取性能的平均值。

 

对比模型包括:

  1. 标准的Transformer;
  2. Longformer,基于稀疏注意力的Transformer,结合了滑动窗口注意力和全局注意力来建模局部和全局上下文;
  3. BigBird,Longformer的扩展,包括稀疏随机注意力机制;
  4. Linformer,一个线性复杂度的Transformer,使用低维key和value矩阵来计算近似self-attention;
  5. Linear Transformer,也是线性复杂度的Transformer,使用核函数来估计self-attention机制;
  6. Poolingformer,一种层次结构,首先使用滑动窗口自注意力来捕捉短距离的内容,然后使用pooling self-attention来捕捉长距离的上下文。

 

在分类任务上,可以看到FastFormer要比标准的Transformer要更好。

 

86.jpg比较不同方法在新闻推荐任务中的性能时,又增加了三个模型:

  1. NRMS,它使用多头自注意力网络学习新闻和用户表征;
  2. FIM,一种用于个性化新闻推荐的细粒度兴趣匹配方法;
  3. PLM-NR,使用预训练的语言模型为新闻推荐提供基础。

 

在不同的Transformer结构中,Fastformer达到了最好的性能,并且它也优于基本NRMS模型。此外,Fastformer可以进一步提高PLM-NR的性能,并且集成模型在MIND排行榜上获得最佳结果。


结果分析


结果表明,Fastformer不仅在文本建模方面是有效的,而且在理解用户兴趣方面也是有效的。

87.jpg

既然提到快,在效率的对比上也要进行实验。将输入序列的长度从128调整为65535,并将batch size的大小与序列长度成反比。使用随机生成token作为伪样本,并固定token embedding以更好地测量不同方法的计算成本。

 88.jpg当序列长度相对较长时(例如512),Transformer效率较低。此外还发现,虽然Poolingformer在理论上具有线性复杂性,但在实践中效率低下。这是因为它使用的窗口大小(例如256)以类似卷积的方式计算池权重,这导致计算成本的非常大的常数项。

 

在训练和推理时间方面,Fastformer比其他线性复杂度Transformer更有效,这些结果验证了Fastformer的有效性。

 

不同的参数共享技术对Fastformer的技术也有影响,通过共享query和value转换矩阵,在不同的注意头之间共享参数,可以发现,与没有任何参数共享技术的Fastformer模型相比,使用query-value参数共享可以获得类似或略好的性能。因此可以通过共享query和value转换矩阵来减少参数大小。

 

此外,头部参数共享将导致显著的性能下降。这是因为不同的注意头需要捕捉不同的上下文模式,而共享它们的参数对上下文建模是不利的,采用分层共享方法可以进一步提高模型的性能,因为不同层之间的参数共享可以缓解过拟合的风险。



相关文章
|
存储 网络协议 Linux
把Linux服务器做成一个下载器,实现远程下载
把Linux服务器做成一个下载器,实现远程下载
把Linux服务器做成一个下载器,实现远程下载
|
JavaScript 前端开发
VUE3(三十六)压缩base64格式图片
VUE3(三十六)压缩base64格式图片
850 0
|
25天前
|
消息中间件 弹性计算 关系型数据库
阿里云服务器2核8G、4核16G、8核32G配置ECS实例规格族和选型指南
阿里云2核8G、4核16G、8核32G配置推荐选用r系列(内存型)或g系列(通用型)企业级独享实例,vCPU与内存比为1:4。r系列适合Redis、内存数据库等高内存需求场景;g系列适用于Java Web、MySQL等均衡型应用。同规格族内,核数越高,网络PPS、IOPS性能越强。新购建议选新一代r8i/g8i,性能提升显著;成本敏感可选r7/g7。避免用2核8G部署重负载数据库,高并发Kafka场景优选c系列。具体配置与活动价格详见阿里云官网。
401 1
|
Python
使用Python计算字符串的SHA-256散列值
使用Python计算字符串的SHA-256散列值
349 7
|
3月前
|
关系型数据库 MySQL 数据库
云时代MySQL:RDS与自建数据库的抉择
在云计算时代,选择合适的数据库部署方案至关重要。本文深入对比了AWS RDS与自建MySQL的优劣,帮助您在控制权、运维成本和业务敏捷性之间找到最佳平衡点。内容涵盖核心概念、功能特性、成本模型、安全性、性能优化、高可用方案及迁移策略,为您提供全面的决策参考。
|
8月前
|
存储 缓存 文件存储
uv安装python及其依赖的加速方法
国内在使用uv的时候,可能会涉及到装python的速度太慢的问题,为了解决这个问题,可以使用`UV_PYTHON_INSTALL_MIRROR`这个环境变量。除此以外,对于多人协作场景,`UV_CACHE_DIR`也是一个有用的环境变量。本文会介绍这两个变量。
5852 10
|
弹性计算 固态存储 数据可视化
2022阿里云服务器租用价格表(CPU/内存/带宽/系统盘)
阿里云服务器租用费用1核2G、2核4G、4核8G、8核16G、2核8G、4核16G、8核32G、2核16G、4核32G、8核16G多配置报价,包括CPU内存实例价格、公网带宽费用和系统盘收费标准
2022阿里云服务器租用价格表(CPU/内存/带宽/系统盘)
|
关系型数据库 MySQL 数据库
CDC YAML 在阿里云的最佳实践
本文撰写自阿里云开源大数据平台数据通道团队,主要介绍了 Flink CDC YAML 在实时计算Flink版的最佳实践。
815 4
CDC YAML 在阿里云的最佳实践
|
12月前
|
传感器 监控 前端开发
产品经理-面试自我介绍
面试自我介绍主要包括个人基本信息、教育经历和工作经历。工作经历按时间倒序描述,重点介绍最近的工作内容与项目经验。例如:我叫小宋,毕业于浙江大学,12年B端产品经验,涉及智慧城市、智慧医疗等项目。项目经历中需说明角色、解决问题的能力及团队结构,如智慧城市项目的智能交通管理和能源管理等模块的规划与实施。成功的产品应符合公司商业价值并满足用户核心诉求。
260 3