Google 研究人员开发了新的 AI 技术,不会将脑力浪费在无用的词语上
快速阅读: 据《黑客 Noon》称,在这项研究中,作者提出了一种名为深度混合变换器(MoD)的方法,该方法通过动态分配计算资源来优化基于变换器的语言模型。MoD通过限制每层中参与计算的令牌数量,实现了更高效的计算。实验结果显示,MoD在等效FLOP下能够提高模型性能,并减少每个前向传递所需的计算量,从而加快后训练采样速度。这项工作展示了如何通过智能路由来减少不必要的计算,同时保持或提升模型性能。
作者:(1)大卫·拉波索,谷歌深度思维,同等贡献;(2)萨姆·里特,谷歌深度思维;(1)大卫·拉波索,谷歌深度思维,同等贡献;(3)布莱克·理查兹,谷歌深度思维、麦吉尔大学和米拉;(1)大卫·拉波索,谷歌深度思维,同等贡献;(4)蒂莫西·利利克拉普,谷歌深度思维;(1)大卫·拉波索,谷歌深度思维,同等贡献;(5)彼得·康韦·汉弗莱斯,谷歌深度思维;(1)大卫·拉波索,谷歌深度思维,同等贡献;(6)亚当·桑托罗,谷歌深度思维,同等贡献。(1)大卫·拉波索,谷歌深度思维,同等贡献;编者注:这是研究的第一部分,共五部分,该研究详细介绍了如何通过动态分配计算资源使基于变换器的语言模型更高效。请继续阅读下面的内容。表格链接
引言
背景
实现深度混合变换器
3.1 定义计算预算
3.2 绕过变换器块
3.3 路由方案
3.4 路由实施
3.5 抽样
3.6 训练方法
结果
4.1 训练,等FLOP比较
4.2 自回归评估
4.3 深度专家混合(MoDE)
讨论与参考文献
基于变换器的语言模型在输入序列中均匀分布浮点运算次数(FLOP)。在这项工作中,我们证明了变换器可以学习将FLOP(或计算)动态分配到序列中的特定位置,在不同层之间优化分配。我们的方法通过限制给定层中可以参与自注意力和MLP计算的令牌数量(k)来强制执行总计算预算。需要处理的令牌由网络使用Top-k路由机制确定。由于k是事先定义的,这个简单的过程使用了一个静态计算图,具有已知的张量大小,与其他条件计算技术不同。尽管如此,由于k个令牌的身份是流动的,这种方法可以在时间和模型深度维度上非均匀地消耗FLOP。因此,总的计算支出是完全可预测的,但在令牌级别上是动态和上下文敏感的。
这些模型不仅学会动态分配计算,而且效率很高。这些模型在等效FLOP和训练时间墙钟时间内匹配基线性能,但每个前向传递所需的FLOP减少了数倍,并且在后训练采样期间可以快50%以上。
1. 引言
并非所有问题都需要相同的时间或精力来解决。同样地,在语言建模中,并非所有令牌和序列都需要相同的时间或精力来准确做出预测。然而,变换器模型在前向传递中对每个令牌都花费相同的计算量。理想情况下,变换器会通过不无谓地花费计算量来使用更小的总计算预算。条件计算是一种仅在必要时才进行计算以减少总计算量的技术。各种算法提供了何时以及应使用多少计算量的解决方案。然而,这种具有挑战性的问题的一般公式可能不会很好地适应现有的硬件约束,因为它们往往会引入动态计算图。
最有希望的条件计算方法可能是那些与我们当前的硬件堆栈相协调的方法,优先考虑静态计算图和已知的张量大小,以最大化硬件利用率。在这里,我们考虑使用静态计算预算进行语言建模的问题,这个预算可以小于普通变换器使用的预算。网络必须学会如何动态地分配可用计算量,通过在每一层中每令牌的基础上做出决策,决定从可用预算中花费计算量的位置。在我们的实现中,总计算量在训练之前是用户定义且不变的,而不是作为网络即时决策的结果。因此,我们可以提前预见并利用硬件效率提升带来的好处。正如我们将展示的那样,这些收益可以在不牺牲整体性能的情况下获得。
我们利用了一种类似于专家混合(MoE)变换器的方法,在网络深度上做出动态的令牌级路由决策。不同于MoE,我们选择要么对令牌应用计算(就像标准变换器的情况),要么通过残差连接传递它(保持不变并节省计算)。与MoE相比,我们将此路由应用于前向MLP和多头注意力。因此,这也影响到我们处理的键和查询,路由不仅决定了更新哪些令牌,还决定了哪些令牌可供关注。我们称这种策略为深度混合(MoD),强调单个令牌如何通过变换器深度的不同层数或块数(见图1)。
MoD技术还允许权衡性能与速度。一方面,可以训练一个MoD变换器,其在等FLOP条件下最终对数概率训练目标上的表现比普通变换器提高多达1.5%,同时训练所需的时间墙钟时间相同。另一方面,可以训练一个MoD变换器,其训练损失与等FLOP最优的普通变换器持平,但每个前向传递所用的FLOP减少了(高达50%以上),因此步进更快。这些结果表明,MoD变换器学会了智能路由(即跳过不必要的计算),因为尽管每个前向传递的FLOP足迹较小,它们仍能为每个序列达到相等或更好的对数概率。
本文可在arxiv上获取以CC BY 4.0许可证形式。
(以上内容均由Ai生成)