OLMo(Open Language Model)是AI2(一个真正的非营利性组织)推出的完全开源大语言模型项目。它不仅在模型权重、训练代码和推理代码上实现了100%开源,还公开了完整的预训练数据——3万亿token的Dolma数据集,以及训练指标和完整日志等原始数据。这种高度的开放性为研究人员提供了前所未有的透明度,使他们能够完全复现模型训练过程,深入理解模型性能,并根据需要进行微调。
OLMo与其他开源语言模型的区别在于其“完全开放的框架”。
OLMo的核心特点
1. 完整的预训练数据
OLMo项目提供了完整的预训练数据——AI2的Dolma数据集。这个包含三万亿token的开放语料库涵盖了多种领域数据,如网络页面、代码、社交媒体、STEM论文、书籍和百科资料等。研究人员不仅可以访问模型本身,还能直接使用这些原始数据进行重新训练或调整,以适应特定的研究需求。
2. 训练代码与模型权重
OLMo框架提供了四种不同变体模型的完整模型权重,每种模型均训练了至少2万亿令牌。此外,项目还公开了训练代码、推理代码、训练指标和日志,使研究人员能够完全复现模型训练过程,并深入分析模型的性能表现。
3. 评估工具
OLMo项目包含了一套全面的评估工具,以及500多个模型的检查点(每1000步训练过程中的一个检查点),这些均属于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 7B在生成和阅读理解任务(如truthfulQA)上与Llama 2表现相当,但在某些问答任务(如MMLU或Big-bench Hard)上略微落后。通过AI2的Paloma评估工具,研究人员可以分析模型预测语言的能力与模型规模因素(如训练令牌数)之间的关系。
结语
OLMo的完全开源框架为语言模型的研究和开发树立了新标杆。通过提供完整的预训练数据、训练代码、模型权重和评估工具,OLMo不仅推动了透明度和可复现性,还为研究人员提供了丰富的资源,助力他们在语言模型领域取得更多突破。