Reformer: 高效的Transformer

Reformer模型详解 Reformer模型 阅读详情

作者:Nikita Kitaev, Łukasz Kaiser

编译:ronghuaiyang

导读

来自Google AI的最新的进展。

理解序列数据 —— 如语言、音乐或视频 —— 是一项具有挑战性的任务,特别是当它依赖于大量的周围环境时。例如,如果一个人或一个物体在视频中消失,很久以后又重新出现,许多模型就会忘记它的样子。在语言领域,长短时记忆(LSTM)神经网络覆盖了足够的上下文来逐句翻译。在这种情况下,上下文窗口(在翻译过程中需要考虑的数据范围),从几十个词到大约 100 个词不等。最新的 Transformer 模型不仅改进了逐句翻译的性能,还可以通过多文档摘要生成整个 Wikipedia 的文章。这是可能的,因为 Transformer 使用的上下文窗口可以扩展到数千个单词。有了这样一个大的上下文窗口,Transformer 可以用于文本以外的应用,包括像素或音符,使其能够用于生成音乐和图像。

但是,将 Transformer 扩展到更大的上下文窗口会遇到限制。Transformer 的能力来自于注意力,在这个过程中,它考虑上下文窗口中所有可能的单词对,以理解它们之间的联系。因此,对于 100K 个单词的文本,这需要评估 100K x 100K 个单词对,或者每一步 100 亿对,这是不切实际的。另一个问题是存储每个模型层输出的标准实践。对于使用大型上下文窗口的应用程序,存储多个模型层的输出的内存需求很快变得非常大(从只有几层的 GB 字节到有数千层的模型的 TB 字节)。这意味着,使用许多层的实际的 Transformer 模型只能用于几段文本或生成简短的音乐片段。

今天,我们将介绍 Reformer,这是一个 Transformer 模型,设计用于处理最多 100 万个单词的上下文窗口,所有这些都在一个单一的加速器上,并且只使用了 16GB 的内存。它结合了两种关键技术来解决注意力和内存分配问题,这些问题限制了 Transformer 的应用只能使用长上下文窗口。Reformer 使用位置敏感散列(LSH)来降低处理过长序列和可逆残差层的复杂性,从而更有效地使用可用内存。

注意力机制的问题

当将 Transformer 模型应用于非常大的文本序列时,第一个挑战是如何处理注意力层。LSH 通过计算一个哈希函数来实现这一点,该哈希函数将类似的向量匹配在一起,而不是搜索所有可能的向量对。例如,在翻译任务中,来自网络第一层的每个向量表示一个单词(在后续层中甚至有更大的上下文),不同语言中相同单词对应的向量可能得到相同的散列。在下面的图中,不同的颜色描绘了不同的哈希,相似的单词有相同的颜色。当哈希值被分配时,序列会被重新排列,将具有相同哈希值的元素放在一起,并被分成片段(或块),以支持并行处理。然后将注意力机制放在这些更短的块(以及它们的相邻块以覆盖溢出)中,从而大大减少了计算负载。

位置敏感哈希:Reformer接受一个输入key序列,其中每个key是一个向量,表示第一层中的单个单词(或图像中的像素)和后续层中的较大上下文。LSH应用于序列,然后按key的哈希和块排序。注意力只应用于单个块及其近邻。

内存的问题

虽然 LSH 解决了注意力的问题,但仍然存在一个内存的问题。一个网络的单层通常需要几 GB 的内存,并且通常适用于一个 GPU,所以即使是一个具有长序列的模型在只有一层的情况下也是可以执行的。但是,当训练一个具有梯度下降的多层模型时,需要保存每一层的激活值,以便在向后传递中使用。一个典型的 Transformer 模型有 12 个或更多的层,因此,如果用来缓存来自每个层的值,那么内存很快就会用完。

在 Reformer 中实现的第二个新方法是在反向传播期间按需重新计算每个层的输入,而不是将其存储在内存中。这是通过使用可逆层来实现的,其中来自网络的最后一层的激活被用来恢复来自任何中间层的激活,这相当于反向运行网络。在一个典型的残差网络中,栈中的每一层都不断地增加通过网络的向量。相反,可逆层对每个层有两组激活。一个遵循刚才描述的标准过程,并从一个层逐步更新到下一个层,但是另一个只捕获对第一个层的更改。因此,要反向运行网络,只需减去应用于每个层的激活。

可逆层:(A)在标准残差网络中,每一层的激活用于更新到下一层的输入。(B)在可逆网络中,维持两组激活,每层后只更新其中一组。(C)这种方法使反向运行网络以恢复所有中间值成为可能。

Reformer 的应用

在 Reformer 中,这两种新方法的应用使其具有很高的效率,使其能够仅使用 16GB 内存在单个 GPU 上处理长度高达 100 万字的文本序列。由于 Reformer 具有如此高的效率,它可以直接应用于上下文窗口比几乎所有当前最先进的文本域数据集大得多的数据。也许 Reformer 处理如此大的数据集的能力将刺激社区创建它们。

大上下文数据的一个不足之处是图像生成,因此我们对图像进行了 Reformer 的实验。在这篇文章中,我们将举例说明如何使用 Reformer 来“完成”部分图像。从下图最上面一行的图像片段开始,Reformer 可以逐像素地生成全帧图像(下面一行)。

顶部:图像片段用作Reformer的输入。底部:“完成”的全帧图像。原始图像来自Imagenet64数据集。

虽然 Reformer 在图像和视频任务上的应用潜力巨大,但在文本上的应用更令人兴奋。Reformer 可以一次性在单一的设备中处理整个小说。将来,当有更多的数据集需要训练长文本时,诸如 Reformer 之类的技术可能会使生成长连贯的文本成为可能。

结论

我们相信,Reformer 为 Transformer 模型的未来使用奠定了基础,既可以用于长文本,也可以用于自然语言处理之外的应用。按照我们公开研究的传统,我们已经开始探索如何将其应用于更长的序列,以及如何改进位置编码的处理。阅读 Reformer 的论文(被选为 ICLR 2020 的口头报告),探索我们的代码并开发你自己的想法。目前在深度学习中广泛使用的长上下文数据集还很少,但在现实世界中,长上下文却无处不在。

英文原文:https://ai.googleblog.com/2020/01/reformer-efficient-transformer.html

(完)


Reformer:高效的Transformer 导读:Transformer模型已经在许多任务上取得了令人欣喜的成绩,但是当扩展到更长的上下文窗口时会遇到许多限制。更大的上下文窗口意味着模型能力变得更加强大,但也会让其变得不够高效,消耗更多的内存。来自Google AI团队最新的Reformer模型结合了两个至关重要的技术来解决限制Transformer应用到长上下文窗口的注意力和内存分配的问题。 作者:Nikita Kitaev, Lu... 阅读详情

相关推荐

多摄像头同步技术:帧同步信号在Sensor与解串器间的传递机制

本文深入探讨了多摄像头系统中帧同步信号的两种核心传递机制:由解串器统一发号施令或由主Sensor作为“带头大哥”。文章对比了两种方案在同步精度、硬件复杂度、成本及适用场景上的差异,并提供了实战配置要点与调试心法,为车载环视、ADAS及工业检测等应用提供关键的技术选型与实施指导。

weixin_29193359的博客 435

对Reformer的深入解读

作者:Madison May 编译:ronghuaiyang (AI3公园) 原文地址: 对Reformer的深入解读​mp.weixin.qq.com 导读 Reformer之前已经提过几次,这次带大家更加深入的了解一下这个方法的思想及背后的动机。 自从最初的"Attention is All You Need"论文在NLP社区掀起了Transformer热潮,似乎我们一直在不懈...

喜欢打酱油的老鸟 1968

[PayPal报错]为遵守国际法规,这笔交易已被拒绝。

PayPal报错解决:为遵守国际法规,这笔交易已被拒绝。

qq_39906413的博客 1万+

深度学习之Reformer

文章目录1. 局部敏感哈希2. 可逆层3. Chunk Transformer无法处理比较长的序列数据(通常是500左右的长度),而且十分消耗GPU资源。 Reformer可以处理的序列长度可以高达64k,GPU资源消耗也降低了很多。 Reformer的重点部分在于: Locality sensitive hash attention(局部敏感哈希注意力):空间换时间 Reversible layers(可逆层):时间还空间 Chunking FFN layer 1. 局部敏感哈希 普通哈希映射是直接进

weixin_36488653的博客 1801

合泰单片机HT32之keil5开发环境搭建(一)

1. 前言 这两天在准备合泰杯,但是总是感觉无从下手,因为合泰单片机的资料教程什么的非常少,不像stm32那样。而且听说要用合泰单片机的专用IDE,感觉当场被劝退了。后来经过查找资料,发现合泰单片机也有keil5的支持包,也就是说可以从库函数进行开发,不用从寄存器进行开发,但我找了好久,并没有找到教程,后来实在没办法,打算自己动手搭建环境,经过了大概两天的挣扎后,终于成功地搭建好了环境,也成功地点...

weixin_44713763的博客 8670

Vue中实现word文档渲染、在线编辑、保存

Vue3对word文档进行渲染、编辑、保存。word转成html,html转成word

h18749849699的博客 1328

图解Reformer:一种高效的Transformer

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”作者:Alireza Dirafzoon编译:ronghuaiyang导读在单GPU上就可以运行的Transformer模型,而...

AI公园 8127

VScode高效开发STM32:头文件路径配置全解析

本文详细解析了在VScode中高效开发STM32项目的核心步骤——头文件路径配置。针对常见的“找不到头文件”问题,文章深入剖析了IntelliSense的工作原理,并提供了手把手创建和解读c_cpp_properties.json配置文件的完整指南,包括includePath、defines、compilerPath等关键项的设置,帮助开发者彻底解决红色波浪线错误,实现精准的代码提示与跳转。

weixin_28835789的博客 340

解读Reformer

论文地址:https://openreview.net/forum?id=rkgNKkHtvB 代码:https://github.com/google/trax/blob/master/trax/models/research/reformer.py 介绍 Transformer 架构被广泛用于自然语言处理中,并且在许多任务中实现了 sota。为了获得这些结果,研究者不得不开始训练更大的 T...

小岁月太着急 8656

斯坦福大学3D点云模型下载

本文整理了斯坦福大学10个经典的点云(pcd)及其模型(ply),方便日后使用,欢迎免费下载!

孙悟空 7733

【虚幻引擎UE】UE5 可编辑动态样条线轨迹及AI跟随路径移动(含工程源码)

【虚幻引擎UE】可编辑动态样条线轨迹及AI跟随路径移动

灵境引路人 6227

REFORMER: 更高效的TRANSFORMER模型

大型Transformer模型通常在许多任务上都能达到最先进的结果,但是训练这些模型的成本可能会非常高昂,特别是在处理长序列时。我们引入了两种技术来提高Transformer的效率。首先,我们用一种使用局部敏感哈希的点积注意力替换了原来的点积注意力,将其复杂度从O(L^2)改变为O(L log L),其中L是序列的长度。此外,我们使用可逆的残差层代替了标准残差,这允许在训练过程中只存储一次激活,而不是N次,N是层的数量。由此产生的模型,即Reformer模型,在性能上与Transformer模型相当

暴力扬 1045

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【Reformer】图解Reformer:一种高效的Transformer

点击上方,选择星标或置顶,每天给你送干货!阅读大概需要13分钟跟随小博主,每天进步一丢丢作者:Alireza Dirafzoon编译:ronghuaiyang来自:AI公园导读在单GPU...

zenRRan的博客 627

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

transformer架构_图解Reformer:一种高效的Transformer

作者:Alireza Dirafzoon编译:ronghuaiyang导读在单GPU上就可以运行的Transformer模型,而且几乎不损失精度,了解一下?如果你一直在开发机器学习算法用于处理连续数据 —— 例如语言处理中的文本,语音信号,或视频 —— 你可能听说过或使用过Transformer,你可能知道这和是推特中认为的不同于一个东西。图1,打破僵局,摘自Chris Manning教授的推特最...

weixin_39603622的博客 499

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Reformer-PyTorch:高效Transformer终极指南

Reformer-PyTorch是基于PyTorch实现的高效Transformer模型,专门为解决传统Transformer在处理长序列时的内存瓶颈问题而设计。通过引入LSH注意力机制和可逆神经网络等创新技术,该项目在保持模型性能的同时显著降低了计算和内存消耗,是处理长文本序列的理想选择。 ## 🚀 核心创新技术 ### LSH注意力机制 Reformer的核心突破在于局部敏感哈希(LSH

gitblog_01044的博客 1132

终极指南:如何用Reformer-PyTorch实现高效Transformer模型训练

Reformer-PyTorch是一个基于PyTorch的高效Transformer实现,通过LSH注意力机制大幅降低计算复杂度,让长序列训练变得简单高效。本文将带你快速掌握这个强大工具的核心功能、安装步骤和实战案例。 ## ???? 为什么选择Reformer-PyTorch? 传统Transformer模型在处理长序列时面临计算瓶颈,而Reformer-PyTorch通过**局部敏感哈希(LS...

gitblog_00823的博客 971

【亲测免费】 探索Reformer-PyTorch:高效的Transformer模型实现

在自然语言处理领域,是一个值得深入研究的项目。它是由[lucidrains](https://gitcode.net/lucidrains)贡献的一个PyTorch实现,旨在提供一种内存和计算效率都更高的Transformer模型。通过创新的技术和优化,Reformer-PyTorch使得大规模文本理解任务变得更加可行。 ## 项目简介 Reformer是谷歌在2020年提出的一种新的Tran...

gitblog_00093的博客 1469
上一篇: 国企车间流水线5年,重新考研,弯道超车,收割百度腾讯offer
下一篇: Python爬虫解析年轻人之过年回家的“烦恼”
Wang_AI
博客等级 码龄12年 991粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值