这种聪明的 AI 黑客可以将处理成本降低一半
快速阅读: 据《黑客 Noon》最新报道,本文介绍了一种新的Transformer模型,称为“MoE转换器”,通过限制序列中参与计算的令牌数量,结合路由器动态选择令牌参与计算,以实现更高效的计算。实验表明,该模型在保持性能的同时,显著减少了计算量,特别是在自回归抽样时引入辅助损失解决了非因果性问题。
作者:大卫·拉波索,谷歌DeepMind,共同一作;萨姆·里特,谷歌DeepMind;布莱克·理查兹,谷歌DeepMind 和麦吉尔大学及Mila;蒂莫西·利利克拉普,谷歌DeepMind;彼得·康韦·汉弗莱斯,谷歌DeepMind;亚当·桑托罗,谷歌DeepMind,共同一作。
我们的高层次策略如下:
– 设定一个静态计算预算,该预算小于等效普通转换器的计算量,通过限制序列中参与块计算(即自注意力和随后的MLP)的令牌数量来实现。例如,虽然一个普通的转换器可能允许序列中的所有令牌参与自注意力,但我们可以将数量限制为序列中令牌的50%。参见第三节.1。
– 使用每个块的路由器为每个令牌发出一个标量权重,这个权重表达了路由器对令牌参与块计算或绕过它的偏好。参见第三节.2。
– 确定每条序列、每个块的前\(k\)个标量权重,以选择那些将参与块计算的令牌。由于恰好有\(k\)个令牌将参与块的计算,计算图和张量大小在整个训练过程中保持不变;只是令牌的参与是动态的和上下文敏感的,由路由器决定。参见第三节.3。
– 使用每个块的路由器为每个令牌发出一个标量权重,这个权重表达了路由器对令牌参与块计算或绕过它的偏好。参见第三节.2。
我们接着在第三节.5讨论了采样时的一些复杂情况。
**3.1 定义计算预算**
为了强制执行每次前向传递的总计算预算,我们利用了容量的概念,它定义了给定计算的输入所包含的令牌总数(例如,参与自注意力的令牌,在MoE转换器中的某个专家等)。例如,每个普通转换器块中的自注意力和MLP具有容量\(T\)——序列和批次中令牌的总数。而MoE转换器则使用每个专家MLP的容量小于\(T\),以便更均匀地分配每个专家的总计算量。但是,由于它们在每个块中使用多个专家,因此它们的总容量大约等于一个普通转换器的容量。通常,对于使用条件计算的转换器来说,决定总浮点运算次数的是令牌容量,而不是任何路由决策的结果。这是因为静态图实现考虑到了最坏的情况;例如,即使只有相对较少的令牌最终路由到某个计算,其输入也会被填充到其容量,或者如果超过容量,则会从计算中丢弃令牌。我们可以通过降低计算的容量来实现比普通转换器每次前向传递使用更小的计算预算的目标。然而,随意使用更小的计算预算会导致性能下降。我们假设某些令牌可能不需要像其他令牌那样多的处理,这些令牌可以通过学习来识别。因此,如果网络学会选择正确的令牌来填满其容量,那么它可能会保持其性能。在下面我们将描述可以用于此目的的路由方案。
**3.2 绕过转换器块的路由**
我们考虑一种设置,即将令牌路由到两条计算路径之一:(1)自注意力和MLP块,以及(2)残差连接。后者计算成本低廉,并且块的输出完全由其输入值决定。前者路径计算成本高昂。直观上,每次前向传递的总浮点运算次数(以及完成前向传递所需的时间)会随我们缩小块容量的程度成比例减少。然而,下游性能也会受到我们缩小块容量程度的影响,以及我们实施的路由算法的影响。在极端情况下,如果我们保持每个块的容量为\(T\)并将每个令牌路由到(而不是绕过)每个块,则我们恢复了一个普通转换器。而在另一个极端,如果我们设置每个块的容量为0并将所有令牌绕过每个块,则我们得到一个非常快速的模型,该模型不涉及转换器的大部分参数,并且无疑会有较差的下游性能。我们假设在这两个极端之间存在一个最优模型,它比普通转换器更快,并且表现得一样好,甚至更好,同时步进速度更快。
**3.3 路由方案**
简单地说,可以利用随机性来路由令牌,类似于层或块的“丢弃”。我们将这种路由方案作为对照组,并将展示它相对于普通转换器显著表现不佳。我们假设学习路由更为可取。直观上,网络应该能够学习哪些令牌需要更多的或更少的处理。如果我们正确地认为转换器经常花费比实际需要更多的计算来做预测,那么这是一个经验问题,即我们能多激进地缩小每个块的容量,从而能多激进地绕过多少令牌。
**3.4. 路由实现**
作为高级直觉的提醒,每个令牌都会经过路由器处理以产生一个标量权重,然后使用前\(k\)个权重来选择将通过变压器块(包括自注意力和随后的MLP)的令牌身份。值得注意的是,我们将函数\(f\)的输出与路由器权重相乘。这使得路由器权重沿着“梯度路径”,从而使其在整个语言建模任务过程中受到梯度下降的影响(我们在那些令牌绕过块计算时,也在计算路径中试验过包含路由器权重,但似乎只在那些不绕过块计算的令牌的计算路径中包含路由器权重就足够了,并且实现起来更简单)。
**3.5. 抽样**
虽然专家选择路由有许多优点,但它有一个显著的问题:前\(k\)操作是非因果的。这意味着给定令牌的路由权重是否属于序列中的前\(k\)个取决于其后令牌的路由权重值,而在自回归抽样时,我们无法访问这些信息。我们测试了两种方法来解决这个问题。第一种方法引入了一个简单的辅助损失,该损失在经验上影响主要的语言建模目标约0.2-0.3%,但允许我们从模型中自回归抽样。我们使用了一个二元交叉熵损失,其中路由器的输出作为logits,这些logits的前\(k\)个选择提供了目标(即,如果一个令牌是前\(k\)个,则为1,否则为0)。直观上,这种损失使路由器输出的sigmoid值集中在0.5左右;被选为前\(k\)个的令牌被施压产生大于0.5的路由器输出,而不在前\(k\)个的令牌被施压产生小于0.5的路由器输出。第二种方法引入了一个小型辅助MLP预测器(类似于第二个路由器),它接收与路由器相同的输入(带有停止梯度),但其输出是对该令牌是否会成为序列中的前\(k\)个的预测。这种方法不影响语言建模目标,并且在实际应用中不会显著影响步速。配备了这些新方法,我们可以通过对路由器的输出选择是否将令牌路由到或绕过块来进行自回归抽样,这不依赖于任何来自未来令牌的信息。我们提供了实验证据,证明这是一个相对容易的辅助任务,能快速达到99%的准确率。
**3.6. 训练方法**
所有模型都使用相同的基线超参数配置(例如,余弦调度等于训练步骤的1倍,128批次大小,2048序列长度),除了在isoFLOP分析期间为了生成不同大小的模型而改变层数、头数和嵌入尺寸。
(以上内容均由Ai生成)