人工智能

OLMo:增强语言模型的科学

mm

过去几年语言模型的发展和进步几乎无处不在,不仅在NLP研究中,也在商业产品和实际应用中。然而,语言模型的商业需求的激增在一定程度上阻碍了社区的发展。这是因为大多数最先进和有能力的模型都被封闭在专有的接口后面,使得开发社区无法访问他们的训练架构、数据和开发过程的重要细节。现在已经不可否认,这些训练和结构细节对于研究研究至关重要,包括了解他们的潜在风险和偏见,因此,研究社区需要一个真正开放和强大的语言模型。

为了满足这一需求,开发人员创建了OLMo,一个最先进的、真正开放的语言模型框架。该框架允许研究人员使用OLMo来构建和研究语言模型。与大多数最先进的语言模型不同,OLMo框架是真正的开源,具有公开可访问的评估代码、训练方法和训练数据。OLMo的主要目标是增强和促进开放研究社区和语言模型的持续发展。

在本文中,我们将详细讨论OLMo框架,检查其架构、方法和性能,并将其与当前最先进的框架进行比较。所以,让我们开始吧。

OLMo:增强语言模型的科学

语言模型在过去几年中一直是最热门的趋势,不仅在AI和ML社区,也在整个科技行业中,因为其在执行真实任务时具有类似人类的性能。ChatGPT是语言模型潜力的一个典型例子,科技行业的主要玩家正在探索将语言模型集成到他们的产品中。

NLP,即自然语言处理,是过去几年中大量采用语言模型的行业之一。然而,自从行业开始使用人类注释来对齐和大规模预训练以来,语言模型在其商业可行性方面已经迅速增强,导致大多数最先进的语言和NLP框架具有受限的专有接口,开发社区无法访问重要细节。

为了确保语言模型的进步,OLMo,一个最先进的、真正开放的语言模型,提供了开发人员一个框架来构建、研究和推进语言模型的发展。它还为研究人员提供了访问其训练和评估代码、训练方法、训练数据、训练日志和中间模型检查点的机会。现有的最先进模型具有不同程度的开放性,而OLMo模型已经发布了整个框架,从训练到数据到评估工具,因此与最先进的模型如LLaMA2模型相比,性能差距已经缩小。

对于建模和训练,OLMo框架包括训练代码、完整模型权重、消融、训练日志和训练指标,以接口代码和Weights & Biases日志的形式呈现。对于分析和数据集构建,OLMo框架包括用于AI2的Dolma和WIMBD模型的完整训练数据,以及生成训练数据的代码。对于评估目的,OLMo框架包括AI2的Catwalk模型用于下游评估和Paloma模型用于基于困惑度的评估。

OLMo:模型和架构

OLMo模型采用基于神经信息处理系统的解码器仅Transformer架构,并提供两个模型,分别具有10亿和70亿参数,目前正在开发一个650亿参数的模型。

OLMo框架的架构比包括vanilla Transformer组件在内的架构有多个改进,包括最近的最先进的大型语言模型,如OpenLM、Falcon、LLaMA和PaLM。以下图表比较了OLMo模型与7B参数的最近LLM的性能。

OLMo框架通过优化模型的训练吞吐量和最小化慢分歧和损失峰值的风险来选择超参数。话虽如此,OLMo框架的主要变化是,它与vanilla Transformer架构不同,主要变化如下:

无偏见

与Falcon、PaLM、LLaMA和其他语言模型不同,OLMo框架不包含任何偏见,以增强训练稳定性。

非参数层归一化

OLMo框架实现了层归一化的非参数公式。非参数层归一化不提供任何仿射变换,即不提供任何自适应增益或偏差。非参数层归一化不仅提供了比参数层归一化更高的安全性,而且速度更快。

SwiGLU激活函数

像大多数语言模型(如PaLM和LLaMA)一样,OLMo框架在其架构中使用SwiGLU激活函数,而不是ReLU激活函数,并将隐藏激活大小增加到最接近128的倍数,以提高吞吐量。

RoPE或旋转位置嵌入

OLMo模型遵循LLaMA和PaLM模型,交换绝对位置嵌入为RoPE或旋转位置嵌入。

使用Dolma进行预训练

尽管开发社区现在可以访问模型参数,但预训练数据集的访问仍然受到限制,因为预训练数据并没有与封闭模型或开放模型一起发布。此外,涵盖此类数据的技术文档通常缺乏完全理解和复制模型所需的重要细节。这种障碍使得在语言模型研究的某些线索中(包括了解训练数据如何影响模型的能力和局限性)继续研究变得困难。为了促进开放的语言模型预训练研究,OLMo框架构建并发布了其预训练数据集Dolma。Dolma数据集是一个多源和多样化的集合,包含超过3万亿个标记,跨越50亿个文档,来自7个不同的来源,这些来源通常被强大的大规模LLM用于预训练,并且可以供普通公众访问。Dolma数据集的组成在以下表格中总结。

Dolma数据集是使用5个组件的管道构建的:语言过滤、质量过滤、内容过滤、多源混合、去重和标记化。OLMo还发布了Dolma报告,该报告提供了更多关于设计原则和构建细节的见解,以及更详细的内容摘要。该模型还开源了其高性能数据策展工具,以实现预训练数据集的快速和轻松策展。模型评估遵循两阶段策略,首先进行在线评估以进行模型训练期间的决策,然后进行离线评估以对模型检查点进行聚合评估。对于离线评估,OLMo使用Catwalk框架,该框架是我们公开可用的评估工具,具有访问广泛的数据集和任务格式的能力。该框架使用Catwalk进行下游评估以及在我们的新困惑度基准Paloma上的内在语言建模评估。OLMo然后使用其固定评估管道将其与几个公共模型进行比较,用于下游和困惑度评估。

OLMo运行几个关于模型架构、初始化、优化器、学习率调度和训练期间数据混合的评估指标。开发人员称之为OLMo的“在线评估”,即在每1000个训练步骤(或∼4B训练标记)后进行的循环迭代,以提供对正在训练的模型质量的早期和持续信号。这些评估的设置取决于我们离线评估中使用的核心任务和实验设置。OLMo的目标不仅是比较OLMo-7B与其他模型的最佳性能,还要展示它如何实现更全面的和更受控的科学评估。OLMo-7B是具有显式去污的最大的语言模型,用于困惑度评估。

OLMo训练

需要注意的是,OLMo框架模型使用ZeRO优化器策略进行训练,该策略由FSDP框架通过PyTorch提供,并通过在GPU上分割模型权重大大减少了GPU内存消耗。使用这种方法,在7B规模上,可以使用每个GPU的4096个标记的微批次大小进行训练。OLMo-1B和-7B模型的训练框架使用大约4M个标记(2048个实例,每个实例具有2048个标记的序列长度)的全局常量批次大小。对于当前正在训练的OLMo-65B模型,开发人员使用从约2M个标记(1024个实例)开始的批次大小热身,直到约16M个标记(8192个实例),每100B个标记增加一倍。

为了提高吞吐量,我们使用FSDP的内置设置和PyTorch的amp模块实现混合精度训练(Micikevicius et al., 2017)。后者确保某些操作(如softmax)始终以全精度运行以提高稳定性,而所有其他操作都以bfloat16格式以半精度运行。在我们的特定设置下,每个GPU上的分片模型权重和局部优化器状态都以全精度保存。在转发和反向传递期间,转换器块内的权重仅以bfloat16格式实现。梯度以全精度在GPU之间减少。

优化器

OLMo框架使用AdamW优化器,具有以下超参数。

对于所有模型大小,学习率在前5000步(或∼21B标记)内线性地增加到最大值,然后线性地减少到指定的最小学习率。学习率热身期之后,模型会剪裁梯度,使得参数梯度的总l-norm不超过1.0。以下表格给出了我们在7B规模上使用的优化器设置与其他最近使用AdamW的LM的比较。

训练数据

训练涉及使用词和BPE标记器对句子进行标记化,然后在每个文档末尾添加一个特殊的EOS标记,并将连续的2048个标记块组合成训练实例。训练实例以相同的方式进行混洗。可以从发布的工件中重构训练批次的数据顺序和确切组成。所有发布的OLMo模型都至少训练了2T个标记(其训练数据的一个epoch),并且一些模型在数据上进行了第二个epoch的训练,使用不同的混洗顺序。鉴于重复的数据量很小,这应该会产生微不足道的影响。

结果

用于评估OLMo-7B的检查点是在Dolma数据集上训练的,使用了之前提到的线性学习率衰减调度,训练了2.46T个标记。进一步在Dolma数据集上对该检查点进行1000步的训练,学习率线性衰减到0,这进一步提高了模型在困惑度和端任务评估套件上的性能。对于最终评估,开发人员将OLMo与其他公开可用的模型进行了比较,包括LLaMA-7B、LLaMA2-7B、Pythia-6.9B、Falcon-7B和RPJ-INCITE-7B。

下游评估

核心下游评估套件在以下表格中总结。

我们通过排名分类方法进行零样本评估。在这种方法中,候选文本完成(例如,不同的多项选择选项)根据可能性进行排名(通常由某个归一化因子归一化),并报告预测准确率。

虽然Catwalk使用几种典型的可能性归一化方法,例如每个标记归一化和每个字符归一化,但应用的归一化策略是为每个数据集单独选择的,包括答案的无条件可能性。更具体地说,这涉及对arc和openbookqa任务不进行归一化,对hellaswag、piqa和winogrande任务进行每个标记归一化,对boolq、copa和sciq任务不进行归一化(即,任务的公式接近单个标记预测任务)。

以下图表显示了九个核心端任务的准确率得分的进展。可以看出,随着OLMo-7B在更多标记上进行进一步训练,所有任务的准确率数字都呈现出总体上升的趋势,除了OBQA。最后一个和倒数第二个步骤之间许多任务的准确率急剧上升,表明在最后1000个训练步骤中将学习率线性减少到0的好处。例如,在内在评估中,Paloma通过一系列分析,包括检查每个域的性能以及对域组合的总结结果,证明了这一点。我们在两个级别报告结果:11个Paloma来源中的聚合性能,以及每个来源的更细粒度结果。

最后的想法

在本文中,我们讨论了OLMo,一个最先进的、真正开放的语言模型,提供了开发人员一个框架来构建、研究和推进语言模型的发展,并为研究人员提供了访问其训练和评估代码、训练方法、训练数据、训练日志和中间模型检查点的机会。现有的最先进模型具有不同程度的开放性,而OLMo模型已经发布了整个框架,从训练到数据到评估工具,因此与最先进的模型如LLaMA2模型相比,性能差距已经缩小。

专业为工程师,心为作家。 Kunal是一名技术作家,对AI和ML有着深厚的热爱和理解,致力于通过其引人入胜和信息丰富的文档来简化这些领域中的复杂概念。