OLMo是由AI2推出的一个真正的非营利性开源项目,致力于实现完全开源,100%开放的目标。
OLMo不仅开放了其完整的预训练数据——包含3万亿token的Dolma数据集,还提供了训练代码、模型权重、推理代码、训练指标和完整日志等所有原始数据。这种开放程度使研究人员能够完全复现模型训练过程,深入理解模型的性能表现,并根据需要对模型进行微调。
OLMo框架包括以下几个关键部分:
完整的预训练数据:OLMo项目提供的Dolma数据集是一个包含三万亿token的开放语料库,研究人员可以访问模型本身及其训练所需的原始数据,从而深入理解模型的学习基础,甚至重新训练或调整模型以适应特定的研究需求。
训练代码和模型权重:OLMo框架提供了四种不同变体模型的完整模型权重,每种模型至少训练到2万亿令牌。除了数据,OLMo还提供了训练代码、推理代码、训练指标和日志,确保研究人员能够复现模型训练过程并进行微调。
评估工具的提供:项目包含了开发过程中使用的评估套件,以及500多个模型的检查点,评估代码也属于Catwalk项目的一部分。这使得研究人员可以使用相同的工具来评估自己的模型或对OLMo模型进行进一步的分析。
OLMo提供了不同规模的模型变体,具体包括:
1B(10亿参数)模型:具有16层,每层2048个隐藏单元,16个注意力头,训练了至少2万亿个令牌。
7B(70亿参数)模型:包含32层,每层4086个隐藏单元,32个注意力头,训练了约2.46万亿个令牌。
65B(650亿参数)模型:计划包含80层,每层8192个隐藏单元,64个注意力头(文章撰写时仍在训练中)。
这些模型采用了基于Vaswani等(2017年)的解码器仅Transformer架构,并进行了多项改进,例如:
不使用偏置项,以提高训练稳定性。
采用非参数层归一化。
使用SwiGLU激活函数代替ReLU。
引入旋转位置嵌入(RoPE)。
使用修改版的BPE-based标记器,以减少个人可识别信息(PII)。
OLMo使用的Dolma数据集是一个多源、多样性的3万亿令牌语料库,涵盖了从7种不同数据源获取的5亿文档。该数据集旨在促进语言模型预训练的开放研究,内容包括网络页面、代码、社交媒体、STEM论文、书籍和百科资料等。
OLMo 7B在许多生成和阅读理解任务(如truthfulQA)上与Llama 2不相上下,但在流行的问答任务(如MMLU或Big-bench Hard)上略微落后。使用AI2的Paloma和可用检查点,分析了模型预测语言的能力与模型规模因素(如训练令牌数)之间的关系。Paloma试图通过平等地采样每个领域来更均衡地代表LLM使用的许多领域。