谷歌大脑Quoc发布Primer,从操作原语搜索高效Transformer变体

简介: 调参、改激活函数提高模型性能已经见怪不改了。最近Google Brain的首席Quoc发布了一个搜索框架,能够自动搜索高效率的Transformer变体,并找到一些有效的模型Primer,其中ReLU加个平方竟然能提升最多性能!

目前自然语言处理领域发展的红利都来自于大型的、基于Transformer的语言模型,但这些语言模型的训练成本、推理成本都高到劝退平民炼金术师。 而当模型参数量大到一定程度的时候,研究人员也在考虑如何在缩小模型的情况下,保持性能不变。 Google Brain团队最近在arxiv 上传了一篇论文,目标是通过寻找更高效的Transformer 变体来降低训练和推理成本。 与之前的方法相比,新提出的方法在更低级别上执行搜索,在Tensorflow 程序的原语上定义和搜索 Transformer。并提出了一种名为 Primer 的模型架构,训练成本比原始 Transformer 和用于自回归语言建模的其他模型变体要更小。 

1.jpghttps://arxiv.org/abs/2109.08668 
论文的作者是大神 Quoc V. Le,在斯坦福读博期间导师是吴恩达教授,目前是谷歌的研究科学家,Google Brain 的创始成员之一;seq2seq的作者之一;谷歌AutoML的奠基人,提出包括神经架构等方法;EfficientNet的作者等。2.jpg

研究人员使用TensorFlow(TF)中的操作来构造Transformer 变体的搜索空间。在这个搜索空间中,每个程序定义了自回归语言模型的可堆叠解码器块。给定输入张量是一个长度为n且嵌入长度为d的序列,程序能够返回相同形状的张量。 堆叠时,其输出表示每个序列位置的下一个token的预测embedding,并且程序只指定模型架构,没有其他内容。换句话说,输入和输出embedding矩阵本身以及输入预处理和权重优化不在这个程序的任务范围内。3.jpg解码器模型程序(DNA, decoder model program)定义了一个自回归语言模型,每个DNA都有一组子程序,其中子程序0是MAIN函数的入口点。每个子程序都由指令组成,这些指令被转换为TensorFlow代码行。 指令操作映射到原语词汇表中的基本TensorFlow库函数或父DNA子程序之一,原语词汇表由简单的原语TF函数组成,如ADD、LOG、MATMUL等等,但像self-attention这样的高级构建块不是搜索空间中的操作,自注意力可以从低级操作中构建出来的。 DNA的子程序库由附加程序组成,这些程序可以通过指令作为函数执行。每个子程序只能调用子程序库中索引较高的子程序,这样就消除了循环的可能性。4.jpg使用父指令的参数集填充操作的参数,该参数集包含所有潜在操作参数的值,参数包括Input 1( 用作第一个tensor输入的隐藏状态的索引)、Input 2(第二个tensor输入的隐藏状态的索引)、Constant(实值常数,可以用于MAX等函数)、Dimensionsize(用来表示输出维度大小的整数)。特定操作中没有使用的参数就直接被省略掉。 研究人员还提出进化搜索(evolutionary search),目标是在搜索空间中找到最有效的模型架构。主要方法是设计一个固定的训练预算(使用TPUv2限时24小时),并将其适应性指标定义为Tensor2Tensor中One Billion Words Benchmark (LM1B)上的困惑度。 这些架构搜索工作的明确目标是在优化效率时减少训练或推理步骤时间,在搜索过程中,可以发现将步长时间增加一倍、采样效率提高三倍是一个不错的修改方案,因为它最终使模型架构的计算效率更高。还可以将ReLUs平方化,并在注意力上增加深度卷积,从而增加训练步长时间。 这些操作极大地提高了模型的采样效率,通过大幅减少达到目标质量所需的训练步骤数量,减少了达到目标性能所需的总计算量。 通过这个搜索程序找到的模型被研究人员命名为Primer,也就是原语搜索Transformer(PRIMitives searched transformER)。  Primer 的改进主要有平方 ReLU 激活并在自注意力中的每个 Q、K 和 V 投影后添加一个深度卷积层。 最有效的修改是将变Transformer前馈块中的ReLU激活改进为平方ReLU激活函数,这也是第一次证明这种整流多项式激活在Transformer 中有用。并且高阶多项式的有效性也可以在其他Transfomer 非线性激活函数中观察到,例如GLU 的各种变体,ReGLU、近似GELU等。然而平方ReLU与最常用的激活功能相比 ReLU、GELU和Swish 具有截然不同的渐近性。5.jpg平方ReLU确实与ReGLU有显著重叠,事实上,当ReGLU的U和V权重矩阵相同时,平方ReLU与ReLU是等效的。并且平方ReLU在更简单的同时,也能获得GLU变体的好处,且无需额外参数,并提供更好的质量。 研究人员使用三个Transformer 变体与Primer 进行对比:1、Vanilla Transformer: 原始Transformer,使用ReLU激活和layer normalization。2、Transformer+GELU: Transformer的常用变体,使用GELU近似激活函数3、Transformer++: 使用RMS归一化、Swish激活和GLU乘法分支在前馈反向瓶颈(SwiGLU)中。这些修改在T5 中进行了基准测试,并被表明是有效的。 实验表明,随着计算规模的增长,Primer 相对于 Transformer 的收益会增加,并且在最佳模型大小下遵循与质量相关的幂律。 6.jpg研究人员还凭经验验证了 Primer 可以放入不同的代码库,发现可以显著加快训练速度,而无需额外调整。例如,在 500M 的参数大小下,Primer 在 C4 自回归语言建模上改进了原始 T5 架构,将训练成本降低了 4 倍。 此外,降低的训练成本意味着 Primer 需要更少的计算来达到目标one shot性能。例如,在类似于 GPT-3 XL 的 1.9B 参数配置中,Primer 使用 1/3 的训练计算来实现与 Transformer 相同的一次性性能。  研究人员已经开源了模型,以帮助提论文可重复性。 7.jpg

相关文章
|
Kubernetes 负载均衡 调度
【Docker 专栏】Docker Swarm 与 Kubernetes 的选型指南
【5月更文挑战第8天】Docker Swarm 和 Kubernetes 是两大容器编排工具,各有优势。Docker Swarm 简单易用,适合小到中型规模,与 Docker 生态系统集成紧密;而 Kubernetes 功能强大,扩展性好,适用于大规模、复杂场景。选择时需考虑团队技术能力、应用需求及现有技术栈。Kubernetes 学习曲线较陡,Docker Swarm 则较平缓。
949 7
【Docker 专栏】Docker Swarm 与 Kubernetes 的选型指南
|
机器学习/深度学习 缓存 PyTorch
PyTorch 深度学习(GPT 重译)(四)(3)
PyTorch 深度学习(GPT 重译)(四)
235 3
|
关系型数据库 MySQL 数据库
MySQL如何安装配置(含my.ini详细配置-新旧版通杀)
MySQL如何安装配置(含my.ini详细配置-新旧版通杀)
10574 0
|
存储 缓存 算法
05-Docker安装Mysql、Redis、Tomcat
05-Docker安装Mysql、Redis、Tomcat
|
人工智能 网络协议 安全
阿里云首席安全科学家吴翰清的思考:弹性安全网络,构建下一代安全的互联网
阿里云首席安全科学家吴翰清:前些天得知自己入选了MIT的TR35,非常开心。我想这是中国安全技术在国际上被认可的一次证明。但这个荣誉不仅属于我一个人,更属于我团队中所有为此做出过努力和贡献的人,也属于那些敢于和我们一起尝试最新技术的客户们,因为新技术在诞生之初往往是生涩的,但缺少了孵化过程中的磨难,我们永远见不到美丽绽放的那天。
10539 1
|
3天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1089 152