AI 模型与平台
GLM-130B:一个开源的双语预训练大语言模型

GLM-130B 框架是一个具有超过 130 亿参数的双语预训练大语言模型,能够生成英文和中文的文本输出。GLM-130B 框架是一个尝试开源一个超过 100 亿参数的语言模型的尝试,并讨论如何预训练这样的大规模模型,因为目前,训练这样的大规模模型往往伴随着诸如发散和损失激增等问题。
在这篇文章中,我们将讨论 GLM-130B 框架,它试图提出一种有效的预训练大语言模型的方法。我们将深入探讨 GLM-130B 框架的工作原理和架构,以及训练过程和设计选择,这些选择不仅提高了效率,还提高了稳定性。最初的实验结果表明,GLM-130B 框架在多个英文基准测试中超越了当前的最先进的 GPT-3 框架。因此,让我们开始探索 GLM-130B 框架如何实现如此一致、准确和稳定的结果。
GLM-130B 框架介绍
能够在少样本和零样本设置中工作的大语言模型,尤其是那些具有超过 100 亿参数的模型,表现出有吸引力的缩放规律,其中 GPT-3 框架是最先进的框架之一。然而,尽管 GPT-3 框架很受欢迎,但其训练过程和某些方面的框架本身对公众来说并不是透明的。另外,枚举所有可能的设计用于训练超过 100 亿参数的 LLM 框架在计算上是不可行的,这使得提出一种预训练方法对于大规模 LLM 框架变得更加重要。
上述观点使得分享高质量的大规模 LLM 框架(如 GPT-3)的工作原理和训练过程变得至关重要,并且考虑到伦理问题,GLM-130B 框架是一个尝试预训练一个准确和开源的 LLM 框架,具有超过 100 亿参数。在此过程中,GLM-130B 框架的开发团队观察到,预训练大规模 LLM 框架通常伴随着一系列的工程和技术挑战,包括预训练稳定性、效率和收敛性。
具体来说,GLM-130B 是一个双向和双语密集框架,具有超过 130 亿参数,预训练超过 400 亿令牌,在 96 个 NVIDIA DGX-A100 GPU 节点的集群上,花费了近两个月的时间。另外,GLM-130B 框架没有采用 GPT 风格的架构,而是使用 GLM 或通用语言模型算法,尝试利用其自回归空白填充目标和双向注意力优势。以下表格比较了 GLM-130B 框架与其他具有超过 100 亿参数的模型,包括 GPT、BLOOM-176B 和 OPT-175B。

GLM-130B 框架的工程和开发概念在很多情况下超越了几乎所有的大规模 LLM 框架,包括 GPT-3 和 PaLM 540B,具有超过 500 亿参数。以下图表比较了 GLM-130B 框架与具有超过 100 亿参数的模型的性能,如图所示,GLM-130B 框架的生成有毒性和偏差远远小于其对手。

最后,GLM-130B 框架被设计为允许尽可能多的开发人员研究超过 100 亿参数的框架,并且有两种方式可以实现这一点。首先,GLM-130B 框架使用 130 亿参数,而不是像 BLOOM 和 OPT那样使用 175 亿参数,因为模型的大小支持即使在单个 A100 服务器上也可以进行干预。其次,GLM-130B 框架运行所需的 GPU 资源比其他 LLM 框架少,并且通过将原始框架量化为 INT4 精度来实现这一点。GLM-130B 框架使用的 INT4 量化提高了性能,同时保持了可忽略的性能退化。
GLM-130B:架构
机器学习模型的归纳偏差由其架构决定,并且开发人员无法探索大语言模型的各种架构设计,这并不令人惊讶,考虑到计算的可负担性和可行性。话虽如此,让我们来看看 GLM-130B 的架构。
大规模 LLM 框架,如 PaLM、GPT 和其他,具有超过 100 亿参数,建立在传统的解码器仅 GPT 风格的架构上,用于自回归语言建模。另一方面,GLM-130B 框架探索了使用双向通用语言模型(GLM)或基于变压器的语言模型的可能性,目标是利用其自回归空白填充目标和双向注意力优势。简而言之,对于给定的文本序列,GLM 框架会对文本跨度进行采样,然后用单个掩码令牌替换它们。
GLM 框架的双向注意力在未损坏或未掩码的上下文中是 GLM-130B 框架与使用单向方法的 GPT 风格方法之间的区别。另外,为了支持数据的生成和理解,GLM 框架结合了两种损坏策略,每种策略都有一个特殊的掩码令牌。
- [MASK]:[MASK] 是一种损坏策略,使用句子中的短空白,长度加起来占输入的某个百分比。
- [gMASK]:[gMASK] 是一种损坏策略,使用随机长度的空白,位于句子的末尾,具有前缀上下文。
GLM 框架采用的方法使其能够在零样本 LAMBADA 语言建模中记录超过 80% 的准确率,并且在 PaLM 540B 和 GPT-3 框架上表现更好。

层归一化
训练 LLM 框架时,开发人员面临的主要挑战之一是训练不稳定性,使用适当的层归一化(LN)可能有助于解决这个问题。GLM-130B 框架使用后层归一化方法,这得益于其在下游任务中的性能。
FFNs 和位置编码
前馈神经网络(FFNs)和位置编码是 GLM-130B 框架采用的两种方法,用于引入高端下游性能和训练稳定性。
预训练设置
GLM-130B 框架的预训练目标不仅包括少量令牌的多任务学习,还包括自监督 GLM,用于自回归空白填充,期望这种方法能够帮助 GLM-130B 框架在下游任务中表现更好。话虽如此,GLM-130B 框架的预训练设置如下所示。
自监督空白填充
如前所述,GLM-130B 框架使用两种损坏策略,即 [MASK] 和 [gMASK],并且每次对每个训练序列独立应用其中一种策略。对于填充空白,[MASK] 策略在 30% 的训练序列中掩码连续跨度,长度加起来占输入的 15%,并且遵循泊松分布。对于序列的剩余 70%,每个序列的前缀作为上下文保持不变,[gMASK] 策略帮助掩码其余部分,掩码长度使用均匀分布进行采样。
多任务指令预训练
已经表明,采用多任务学习方法进行预训练可以比微调带来更好的结果,以提高零样本设置中的任务转移。因此,GLM-130B 框架提出使用一系列指令提示数据集,包括语言生成、理解和信息提取,在预训练期间进行多任务学习。
与使用多任务提示微调的其他零样本任务转移方法相比,GLM-130B 框架采用的多任务指令预训练方法仅占总令牌的 5%,并且在预训练阶段设置,以防止破坏 LLM 框架的其他能力,或者说,无条件自由生成。
3D 并行策略
训练大规模模型(具有数十亿参数)有两种事实上的做法,张量模型并行性和数据并行性。为了最小化 GPU 利用率,并处理巨大的 GPU 要求,GLM-130B 框架实现了一种 3D 并行策略,将流水线模型并行性策略与张量模型并行性和数据并行性策略相结合。
GLM-130B:训练稳定性
训练稳定性是确定 LLM 质量的重要因素,训练稳定性在很大程度上取决于它传递的令牌数量。另外,必须在浮点格式方面建立稳定性和效率之间的权衡,考虑到计算约束。例如,低精度浮点格式可以提高计算效率,但它们经常导致训练崩溃,因为它们容易出现下溢和溢出错误。
混合精度
为了提高训练准确率和降低内存使用,GLM-130B 框架遵循使用混合精度的常见做法,即对于前向和后向传播使用 FP16,对于主权重和优化器状态使用 FP32。与其他流行的 LLM 框架(包括 BLOOM-176B 和 OPT-175B)一样,使用混合精度策略的 GLM-130B 框架的训练阶段会经常出现损失激增,随着模型继续训练,这种损失激增的频率会增加。此外,开发人员在扩大变压器时会面临重大问题。

首先,当使用预层归一化(Pre-LN)时,变压器主分支的值范围可能在更深的层中非常大,在 GLM-130B 框架中,这是通过使用基于 DeepNorm 的预层归一化来解决的,这确保了值范围始终保持有界。其次,随着模型的扩大,注意力分数会增长到超过 FP16 范围的程度。
嵌入层梯度收缩或 EGS
GLM-130B 框架的开发人员发现,梯度范数可以作为训练崩溃的有用指标,训练崩溃通常滞后于梯度范数的激增。这些激增的原因是嵌入层的异常梯度,开发人员观察到,相比其他层的梯度范数,嵌入层的梯度范数大了几个数量级,并且在框架的早期训练中也会剧烈波动。视觉模型也面临这个问题,并且通过冻结补丁投影层来处理。然而,相同的方法不能应用于 LLM,因为在语言模型中,不能冻结投影层。

GLM-130B:结果和性能
为了评估 GLM-130B 的英文任务性能,它遵循与常见 LLM 框架(包括 PaLM 和 GPT-3)相同的设置,因为 GLM-130B 是一个双语框架,它还在多个中文基准测试中进行了评估。GLM-130B 框架的性能将在多个基准测试中进行衡量,包括语言建模、MMLU 或大规模多任务语言理解、BIG-Bench 或超越模仿游戏基准测试和 CLUE 或中文语言理解评估。让我们开始吧。
语言建模
GLM-130B 框架的语言建模基准测试在两个数据集上进行:LAMBADA 和 Pile。
LAMBADA 数据集用于测试 LLM 的最后一个词的建模能力,GLM-130B 框架在双语设置中实现了 80.2 的零样本准确率,并在此过程中在 LAMBADA 数据集上设定了新的基准记录。
另一方面,Pile 是一个测试集,包含一系列语言模型的基准测试。在平均值上,相比 GPT-3 和 Jurassic-1,GLM-130B 框架在 18 个共享测试集上以加权 BPBs 的形式实现了最好的性能。结果展示了 GLM-130B 框架的强大语言能力,结果如下表所示。

MMLU 或大规模多任务语言理解
MMLU 或大规模多任务语言理解是一个多样化的基准测试,包含超过 50 个多项选择题,涉及人类智能和知识,范围从高中到专家水平,并且在爬取 Pile 测试集之后发布,因此,它是评估 LLM 零样本学习能力的理想测试集。

如图所示,在少样本设置(5 次采样)中,GLM-130B 框架的性能接近 GPT-3 模型的性能,后者在查看了大约 300 亿令牌之后。随着训练的进行,性能继续提高,当训练结束时,框架在查看了总共 400 亿令牌后实现了 44.8 的准确率。
BIG-Bench 或超越模仿游戏基准测试
BIG-Bench 或超越模仿游戏基准测试的具有挑战性的任务测试了模型的知识、推理和常识能力。如图所示,在零样本设置中,GLM-130B 框架超越了 PaLM 540B 和 GPT-3 175B 框架,这可能是由于 MIP 和双向上下文注意力提高了 GLM-130B 在零样本设置中未见任务的性能。此外,随着样本数量的增加,GLM-130B 框架的性能也会提高,始终超越 GPT-3 框架。

CLUE 或中文语言理解评估
GLM-130B 的中文零样本性能在成熟的 NLP 基准测试任务中进行评估,包括 CLUE 和 FewCLUE,并且与现有的最大中文语言模型 260B ERNIE Titan 3.0 进行比较。如图所示,GLM-130B 框架在 12 个不同的任务中始终超越 260B ERNIE Titan 3.0 框架,并且在两个抽象 MRC 数据集中,性能几乎是 ERNIE 框架的 260%。

结论
在本文中,我们讨论了 GLM-130B,一个双语预训练大语言模型,旨在促进包容性 LLM 研究。架构、工程和技术努力旨在为 AI 社区提供对 LLM 框架的架构、训练效率和稳定性、预训练目标和负担得起的干预的更好见解。












