2024年3月18日,马斯克兑现诺言,开源了其大模型Grok。有网友戏谑:这很马斯克,一言不合就开源,随后还不忘对OpenAI进行一番嘲笑。
说起开源大模型,Meta早在2023年7月就开源了LLama2。
但无论是Grok还是LLama2,都不包含训练代码,出于隐私和安全考虑,也没有公开训练数据集,只包含模型架构和推理代码。
这对于那些想从头开始训练一个大模型的人来说未免有些遗憾!
不过没关系,我给大家推荐OLMo(Open Language Model),有网友看过后惊叹:这才是真正的开源大模型,预训练,微调代码、数据集、模型架构、模型权重都完全公开。
OLMo在性能上可能不及Grok和LLama2,但它目的是帮助开发人员构建大模型开发的完整流程和细节,这对于无论出于学习或者商业目的的人来说无疑提供了重要帮助。
下面是对论文的总结:
背景与目标:随着语言模型在商业产品中的重要性日益增加,最强大的模型其训练数据、架构和开发细节未公开。为了促进研究社区对这些模型的科学研究,包括它们的偏见和潜在风险,OLMo提供了一个真正开放的语言模型和框架。
OLMo框架:OLMo框架包括用于构建和研究语言模型的工具和资源。它提供了完整的模型权重、训练代码、训练日志、训练指标(以Weights & Biases日志的形式)和推理代码。此外,还包括用于数据集构建和分析的完整训练数据、AI2的Dolma数据集,以及用于评估的Catwalk和Paloma工具。
模型架构:OLMo采用了基于Vaswani等人(2017年)的decoder-only transformer架构,并提供了1B和7B两种规模的变体,以及即将推出的65B版本。模型的具体架构在Vaswani等人的基础上进行了改进,包括去除所有偏置项、使用非参数层归一化、采用SwiGLU激活函数、使用旋转位置嵌入(RoPE)等。
预训练数据:OLMo使用了名为Dolma的预训练数据集,这是一个由3T tokens组成的多源语料库,涵盖了5B文档。Dolma的构建使用了语言过滤、质量过滤、内容过滤、去重、多源混合和分词等步骤。
微调:预训练模型通常需要进一步微调以提高性能、安全性和可用性。OLMo展示了如何使用Open Instruct数据和训练设置将OLMo训练为一个通用的聊天助手。
评估:OLMo在模型设计和模型检查点的两个阶段进行评估。使用Catwalk框架进行下游评估和基于Paloma的困惑度基准测试。此外,还对经过指令微调和DPO训练的适应性模型进行了评估。
训练OLMo:文档详细介绍了OLMo的预训练设置,包括分布式训练框架、优化器设置、数据准备和硬件。
结果:OLMo-7B模型在多个核心任务上的表现与其他公开可用的模型相当。在内在语言建模评估中,OLMo-7B在多个数据源上的表现也具有竞争力。
功耗和碳足迹:文档还讨论了预训练模型的总能耗和碳排放估计,以及如何通过开放模型来减少未来的排放。
10.发布的工件:OLMo项目发布了包括训练和建模代码、训练数据、评估代码和日志等在内的一系列工件,以促进开放研究并减少重复努力。
11.许可:所有代码和权重在Apache 2.0许可下发布,允许用户灵活使用这些资源和工件。
12.结论和未来工作:OLMo项目计划持续支持和扩展OLMo框架,推动开放语言模型的边界,以赋能开放研究社区并激发创新。