今天小编分享的科技经验: 英伟达nGPT重塑Transformer,AI训练速度暴增20倍!文本越长,加速越快,欢迎阅读。
【新智元导读】LLM 训练速度还可以再飙升 20 倍!英伟达团队祭出全新架构归一化 Transformer(nGPT),上下文越长,训练速度越快,还能维持原有精度。
AI 的未来,或许就此改写 ......
最近,英伟达团队抛出的一枚重磅炸弹,提出了全新神经网络架构——归一化 Transformer(nGPT),基于超球面(hypersphere)进行表示学习。
相较于 Transformer 架构本身,nGPT 直接将 LLM 训练速度提升至高 20 倍,而且还保持了原有精度。
也就意味着,原本需要一个月完成的训练,在未来可能只需 1-2 天的时间就能搞定。
无疑为通向 AGI 终极目标,注入了一针强心剂!
论文地址:https://arxiv.org/pdf/2410.01131
在 nGPT 中,所有的向量(嵌入、MLP、注意力矩阵、隐藏状态),都被归一化为部門范数(unit norm)。
输入后的 token 在超球面表面上移动,每一层都通过「位移」来贡献最终的输出预测,其中位移量是由 MLP 和注意力模块进行定义的,其向量组件都位于同一个超球面上。
实验表明,nGPT 达到相同精度所需的训练步骤减少了 4-20 倍,具体取决于序列长度:
- 1k 上下文,训练速度提高 4 倍
- 4k 上下文,训练速度提高 10 倍
- 8k 上下文,训练速度提高 20 倍
可以看出,上下文越长,训练越快。
Reddit 网友表示,「我很好奇它还能扩展到多大程度。如果它能在更长的上下文中大幅扩展,这意味着像 o1 这样的模型将会获得显著的训练速度优势」。
还有人表示,「下一代模型将会更高效、更智能」。
nGPT 全新架构,超球面上归一化
毋庸置疑,Transformer 架构是现代大模型的基础。
不过,当前基于 Transformer 搭建的大模型都是计算密集型的,需要耗费大量的资源和时间。
为了改进其训练稳定性、推理成本、上下文长度、鲁棒性等方面,AI 科学家已进行了大量的修改尝试。
其中,最突出的发现是,归一化技术对于 Transformer 性能改善起着重要作用,比如 LayerNorm 和 RMSNorm。
另一种模型归一化方法是,通过权重衰减(weight decay)控制权重范数。
不过,最新研究又对权重衰减的作用进行评估,并且转向更多地关注旋转,而非仅仅关注向量范数。
越来越多的证据表明,在超球面上进行表示学习与更稳定的训练、更大的嵌入空间可分离性以及在下游任务上的更好性能相关。
而且,还有新研究表明,Transformer 隐式地执行梯度下降作为元优化器。
由此,英伟达团队提出了,在归一化 Transformer 新视角下,统一该领網域的各种发现和观察。
这项研究的主要贡献在于:
- 在超球面上优化网络参数
建议将形成网络矩阵嵌入维度的所有向量归一化,使其位于部門范数超球面上。这种方法将矩阵 - 向量乘法转化为余弦相似度的计算,其范围限定在 [ -1,1 ] 之间。而且归一化消除了对权重衰减的需求。
- 归一化 Transformer 作为超球面上的可变度量优化器
归一化 Transformer 本身在超球面上执行多步优化(每层两步),其中注意力和 MLP 更新的每一步,都由特征学习率控制——这些是可学习的可变度量矩阵的对角线元素。
对于输入序列中的每个 token
,归一化 Transformer 的优化路径从超球面上对应于其输入嵌入向量的点开始,移动到超球面上最能预测下一个
的嵌入向量的点。
- 更快的收敛
研究证明,归一化 Transformer 将达到相同精度所需的训练步骤减少了 4-20 倍。
Transformer 演变:从 GPT 到 nGPT
嵌入层归一化
标准的 decoder-only Transformer 的训练目标是根据输入序列的前序 tokens 来预测后面的 token,在 token 预测时,模型会引入两个可学习的嵌入矩阵 Einput 和 Eoutput,分别用来从输入词转为词嵌入,以及从词嵌入转为预测输出。
在模型训练期间,通常使用对应嵌入向量的点积来计算 token 相似度,但嵌入向量的范数(norms)不受限制的,可能会导致相似性计算存在偏差。
为了提高相似性估计的准确性,研究人员在新架构中提出,在训练算法的每一步之后,对 Einput 和 Eoutput 中的嵌入向量进行归一化。
智能体在预测文本中的下一个词时,会使用因果掩码(casual masking)来确保模型在预测 token 时不会「偷看」到之后的词,造成信息泄露,从而让模型能够同时预测多个词并计算预测误差,提高训练效率,同时保持了按顺序预测词的能力。
在输入词序列后,模型会在预测序列中的每个位置都生成一个输出向量,然后计算出一个 logits 向量 zi 来表示词汇表中每个词出现的可能性,可以辅助模型理解不同词在当前上下文中的重要性:
之后用 softmax 函数把 zi 转为概率值,并选取概率最高的词作为下一个词的预测。
由于 nGPT 的嵌入矩阵已经归一化了,所以 zi 的值范围为 [ −1,1 ] ,也会限制 softmax 后得到的概率分布的置信度,也可以叫做温度。
为了在训练过程中调整置信度,nGPT 又引入了一个可学习的缩放参数 sz,通过逐元素地缩放 logits,模型可以更灵活地预测的置信度,更好地学习到在不同情况下如何做出更准确的预测:
层 / 块归一
标准 Transformer 架构需要对隐藏层状态 h 进行 L 层变换,包括一个自注意力(ATTN)和多层感知机(MLP)。
其中 RMSNorm 也可以替换成其他归一化(normalization)函数。
隐藏层的参数更新,其实就是在一个超平面上(维度为隐藏层的向量长度)寻找两个点(原参数和新参数)的最短距离。
1985 年,Shoemake 提出了球面线性插值(SLERP,Spherical Linear Interpolation),可以沿着球面上两点之间的最短路径找到中间点,研究人员发现该方法还可以通过更简单的线性插值(LERP,linear interpolation)来得到近似解,从而降低计算量:
按最短路径寻找来说,参数更新过程可以描述为:
其中 a 和 b 是球面上的两个点,对应到 nGPT 上,a 也就是隐藏层状态,b 是经过注意力机制或 MLP 块后的状态,梯度就是 g=a-b,B 为可变矩阵。
在拟牛顿方法中,B 可以近似于逆黑塞矩阵,当 B 是一个对角线元素非负的对角矩阵时,αB 就变成了一个向量,其元素对应于 B 的对角线元素乘以学习率 α,也可以称之为特征学习率(eigen learning rates)。
eigen 源自德语词,意为「自己的」(own),可以指代 Transformer 的内部结构。
所以 nGPT 中的参数更新方程可以写为:
其中 αA 和 αM 是可学习的参数,分别用于注意力和多层感知机(MLP)模块的归一化输出 hA 和 hM
与基础 Transformer 相比,在 nGPT 的最终层之后不需要再进行额外的归一化了。
自注意力块
注意力机制可以说是 Transformer 中最重要的模块,序列中的每个 token 都能够关注到其他所有 token,从而让模型具有捕捉长距离依赖关系的能力。
模型会把处理后的信息分解成三个部分:查询(q,query)、键(k,key)和值(v,value),可以辅助确定哪些信息是重要的,以及信息之间是如何相互关联的。
为了确保模型能够理解每个词在序列中的位置,模型中通常还会在 query 和 key 向量之间加入旋转位置嵌入(Rotary Position Embeddings,RoPE)。
然后通过计算 query 向量和 key 向量的点积、缩放、应用 softmax 得到注意力权重,对 value 向量进行加权求和,得到注意力得分。
在实践中,Transformer 一般都会用到多个注意力头,其中每个头的注意力机制都是独立计算,最后再通过一个可学习的投影矩阵 Wo 合并所有头输出。
在计算注意力得分的过程中,权重矩阵没有受到太多限制,可能会导致最终得分过大或过小。
在 nGPT 中,研究人员对 q 向量和 k 向量进行归一化,还引入了一些可调整的参数(sqk),以确保权重矩阵在处理位置信息时不会失真,更准确地捕捉到句子中词与词之间的关系,从而做出更好的预测和决策。
MLP 块
在标准 Transformer 中,隐藏层收入通过 RMSNorm 进行归一化,然后经过两个线性投影生成中间向量(暂不考虑偏置项):
然后使用 SwiGLU 门控激活函数,以及一个线性变换得到最终门控激活。
在 nGPT 中,研究人员提出对线性投影的权重矩阵进行归一化,并引入可学习的缩放因子,能够更充分地利用处理信息时的非线性特性,在处理复杂信息时更加灵活。
多层感知机模块的输出不会因为缩放调整而发生变化。
Adam 高效学习率
Adam 优化算法通过动量和梯度幅度的估计来调整每次的学习步长,同时考虑了当前及过去的梯度信息。
在 nGPT 中,研究人员同样引入了一个可训练的缩放参数向量,对特定的参数进行更精细的控制,确保每个参数都能以最适合自己的速度进行学习,从而进一步提高学习效率。
在不影响全局学习率的情况下,对特定的参数进行调整,提供了更大的灵活性和控制力。
变化总结
和基础 Transformer 相比,nGPT 主要做了七个改变:
1、移除所有归一化层,比如 RMSNorm 或 LayerNorm;
2、在每个训练步骤之后,沿着嵌入维度对所有矩阵,包括输入输出嵌入矩阵,以及各种权重矩阵进行归一化处理;
3、修改了隐藏层参数更新方程;
4、调整注意力机制中的 softmax 缩放因子,对 q 和 k 进行重新缩放和归一化;
5、对 MLP 块的中间状态进行重新缩放;
6、对 logits 进行重新缩放;
7、移除权重衰减和学习率预热步骤。
上下文越长,训练速度越快
接下来,研究人员在 OpenWebText 数据集上训练了基础基础 Transformer(GPT)和归一化 Transformer(nGPT),并在一系列标准下游任务上对其进行评估。
实验中,使用了 0.5B 和 1B(包括嵌入)两种参数规模的模型。两种参数规模的模型 0.5B 和 1B(包含嵌入)。
训练加速
图 1 显示了,在训练过程中,10 亿参数且样本长度为 4k token 的 GPT 和 nGPT 模型的验证损失。
经过 2 万次迭代后,nGPT 达到了与 GPT 在 20 万次迭代(约 4000 亿个 token)后,才能达到的相同验证损失。
这表明,在迭代次数和使用 token 数量方面,nGPT 实现了 10 倍的加速。
再来看图 2,展示了 nGPT 和 GPT 在三个方面的性能差距是如何变化的:总 token 数量、上下文长度、参数规模。
在 1k、4k 和 8k token 上下文中,训练 0.5B 和 1B 的 nGPT 模型分别约快 4 倍、10 倍和 20 倍。
图 3 在下游任务中显示了类似的性能,证实加速不仅反映在困惑度上,也反映在任务表现上。
研究人员观察到,对于较长的训练运行,nGPT 显示出一些饱和现象,这暗示在当前可训练参数数量下,模型容量可能已接近极限。
神经网络参数检查
图 4 显示,虽然 nGPT 保持固定的嵌入范数(这是设计使然),但 GPT 表现出明显的变化。
从嵌入的协方差矩阵计算得出的特征值分布(已经由其中位数归一化)显示,GPT 的输入嵌入具有更高的条件数,尤其是在 1B 模型中。
嵌入之间的成对点积分布表明,即使在 nGPT 中,嵌入也并非均匀分布在超球面上(在那里点积会接近 0),而是形成簇——这可能反映了语言数据中的自然模式。
由于 GPT 的嵌入形成了一个超椭球体(hyper-ellipsoid ) ,如向量范数的分布所示,其点积往往具有更高的值。
GPT 输入嵌入的病态性质(ill-conditioned nature)可能导致涉及这些嵌入的计算问题。
下图 5 展示了,注意力和 MLP 矩阵在不同层深度上的中位数条件数(跨多个头)—— 0.5B 模型有 24 层,1B 模型有 36 层。
与 nGPT 相比,GPT 模型的注意力矩阵呈现显著更高的条件数。
对这些矩阵的进一步检查,GPT 的注意力矩阵表现出退化为低秩矩阵的趋势,可能减少了这些块的学习容量。
下图 6 展示了,(左图)注意力模块和 MLP 模块的特征学习率,(中图)应用于 MLP 中间状态的缩放因子,(右图)应用于 QK 点积之前的缩放因子。