最近,艾伦人工智能研究所(AI2)联合多家顶尖学术机构,共同推出了史上首个完全开源的大模型——OLMo!英文全称为Open Language Model,顾名思义,其核心特色就是开放透明。

OLMo的独特之处,用四个字概括就是:完全开源。这并非那种仅开放权重、文档写一半的“伪开源”,而是将全部家底毫无保留地公开:完整的训练数据(包括生成数据的代码)、完整的训练与评估代码、中间模型检查点(每个基础模型拥有500多个,训练过程中每1000步保存一个),以及详尽的训练日志。对于研究者和开发者而言,这堪称“开箱即用”的宝藏级资源。
目前OLMo已开源三个规格的模型,具体参数如下表所示:
| 模型尺寸 | 训练令牌数 | 训练配置 | 层数 | 隐藏层大小 | 注意力头数 |
| 1B | 2T | configs/official/OLMo-1B.yaml | 16 | 2048 | 16 |
| 7B | 3T | configs/official/OLMo-7B.yaml | 32 | 4096 | 32 |
| 65B* | 80 | 8192 | 64 |
其中65B的模型仍在训练中,目前开源的最大规格是OLMo 7B,已足以覆盖绝大多数应用场景。
Dolma简介
OLMo的成功离不开其背后的数据基石——Dolma。Dolma主要由两部分构成:
Dolma数据集:一个包含3万亿tokens的海量数据集,涵盖网页内容、学术出版物、代码、书籍、百科全书等,总大小约5.4TB。
Dolma工具包:一个专为整理语言建模数据设计的高性能工具包,让数据预处理变得高效且便捷。
Dolma数据集
以下是数据集v1.6版本(发布于2024年1月31日)的统计结果:
| 数据来源 | 数据类型 | 大小(GB) | 文档数量(百万) | Llama tokens(十亿) |
| Common Crawl | 网页 | 9,022 | 3,370 | 2,281 |
| The Stack | 代码 | 1,043 | 210 | 411 |
| C4 | 网页 | 790 | 364 | 198 |
| 社媒 | 339 | 377 | 89 | |
| PeS2o | 学术 | 268 | 38.8 | 70 |
| Project Gutenberg | 书籍 | 20.4 | 0.056 | 6.0 |
| Wikipedia, Wikibooks | 百科 | 16.2 | 6.2 | 4.3 |
| 总计 | 11,519 | 4,367 | 3,059 |
可以看出,数据来源极为多元,网页内容占比最大,但代码、学术论文、书籍等也占据了合理的比例。
Dolma工具包
Dolma Toolkit 的设计亮点突出:
高性能:内置并行处理能力,可同时处理数十亿个文档。
可移植:无论是单机、集群还是云环境,都能无缝运行。
快速去重:采用 Rust Bloom 过滤器,文档去重效率极高。
可扩展:支持自定义标记器及 AWS S3 兼容存储。
内置标记器:提供现成的标记器,开箱即用。
安装过程极为简洁,一行命令即可完成:
pip install dolmaOLMo
安装
git clone https://github.com/allenai/OLMo.gitpip install ai2-olmo
推理
借助 Hugging Face 的 pipeline 即可快速启动推理:
from transformers import pipelineolmo_pipe = pipeline("text-generation", model="allenai/OLMo-7B") # 这里可以直接指定自己的目录print(olmo_pipe("Language modeling is"))## 输出## Language modeling is a process of training a machine learning model to learn from data...
量化
若需节省显存,可使用 bitsandbytes 进行 8bit 量化:
from transformers import AutoModelForCausalLM, AutoTokenizerolmo = AutoModelForCausalLM.from_pretrained("allenai/OLMo-7B", torch_dtype=torch.float16, load_in_8bit=True)
训练
想从头训练模型?直接使用 torchrun 启动即可:
torchrun --nproc_per_node=8 scripts/train.py configs/official/OLMo-1B.yaml微调
微调时需指定数据路径和检查点路径:
torchrun --nproc_per_node=8 scripts/train.py {path_to_train_config} --data.paths=[{path_to_data}/input_ids.npy] --data.label_mask_paths=[{path_to_data}/label_mask.npy] --load_path={path_to_checkpoint} --reset_trainer_state评估
OLMo 还附带了一个评估仓库 OLMo-Eval,支持在多个任务集上评估多个模型,可计算聚合指标,并能集成报告。对于需要进行对比实验的研究人员来说,这一功能极为便利。
小结
尽管 OLMo 在效果上目前尚未达到惊艳的水平(毕竟开源模型要赶超闭源头部产品仍需时日),但它为 AI 研究提供了极其宝贵的资源——完整的数据、代码和检查点,大幅降低了研究与开发的门槛。OLMo 的发布,标志着 AI 开源模型进入了一个全新阶段:不再仅仅是模型权重的开放,而是整个生态的开放。随着越来越多的研究机构和企业加入开源行列,未来的 AI 技术将更加开放、透明、可复现,这才是真正意义上的创新催化剂。
