模型简介
模型特点
模型能力
使用案例
🚀 OLMo 2 1B模型
OLMo 2 1B是OLMo 2系列中最小的模型,它基于Transformer架构,在自然语言处理领域具有强大的能力。该模型在特定数据集上进行预训练和中间训练,能够为用户提供高效、准确的语言处理服务。
🚀 快速开始
安装
OLMo 2 1B支持transformers
v4.48及以上版本,可使用以下命令进行安装:
pip install transformers>=4.48
如果使用vLLM
,在v0.7.4版本发布之前,需要从主分支进行安装。
推理
可以使用标准的HuggingFace transformers
库来使用OLMo:
from transformers import AutoModelForCausalLM, AutoTokenizer
olmo = AutoModelForCausalLM.from_pretrained("allenai/OLMo-2-0425-1B")
tokenizer = AutoTokenizer.from_pretrained("allenai/OLMo-2-0425-1B")
message = ["Language modeling is "]
inputs = tokenizer(message, return_tensors='pt', return_token_type_ids=False)
# 可选:验证cuda
# inputs = {k: v.to('cuda') for k,v in inputs.items()}
# olmo = olmo.to('cuda')
response = olmo.generate(**inputs, max_new_tokens=100, do_sample=True, top_k=50, top_p=0.95)
print(tokenizer.batch_decode(response, skip_special_tokens=True)[0])
>> 'Language modeling is a key component of any text-based application, but its effectiveness...'
为了获得更快的性能,可以使用以下方法对模型进行量化:
import torch
AutoModelForCausalLM.from_pretrained("allenai/OLMo-2-0425-1B",
torch_dtype=torch.float16,
load_in_8bit=True) # 需要bitsandbytes库
量化后的模型对数据类型和CUDA操作更为敏感。为避免潜在问题,建议直接将输入传递给CUDA:
inputs.input_ids.to('cuda')
我们已经发布了这些模型的检查点。对于预训练,命名约定为stage1-stepXXX-tokensYYYB
。对于包含混合成分的检查点,命名约定为stage2-ingredientN-stepXXX-tokensYYYB
。
要使用HuggingFace加载特定的模型版本,只需添加revision
参数:
from transformers import AutoModelForCausalLM
olmo = AutoModelForCausalLM.from_pretrained("allenai/OLMo-2-0425-1B", revision="stage1-step140000-tokens294B")
或者,你可以通过以下代码片段访问模型的所有版本:
from huggingface_hub import list_repo_refs
out = list_repo_refs("allenai/OLMo-2-0425-1B")
branches = [b.name for b in out.branches]
微调
模型微调可以从最终检查点(此模型的main
版本)或许多中间检查点开始。有两种微调方法可供选择:
- 使用OLMo仓库进行微调:
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
更多文档请参阅GitHub README。 2. AI2的Open Instruct仓库正在开发进一步的微调支持。详细信息请见此处。
✨ 主要特性
- 多版本模型:提供了不同规模的模型,包括1B、7B、13B和32B,满足不同场景的需求。
- 高效训练:在特定数据集上进行预训练和中间训练,提高了模型的性能和泛化能力。
- 灵活使用:支持标准的HuggingFace
transformers
库,方便用户进行推理和微调。 - 模型量化:提供了模型量化方法,可提高推理速度。
📦 安装指南
OLMo 2 1B支持transformers
v4.48及以上版本,可使用以下命令进行安装:
pip install transformers>=4.48
如果使用vLLM
,在v0.7.4版本发布之前,需要从主分支进行安装。
💻 使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoTokenizer
olmo = AutoModelForCausalLM.from_pretrained("allenai/OLMo-2-0425-1B")
tokenizer = AutoTokenizer.from_pretrained("allenai/OLMo-2-0425-1B")
message = ["Language modeling is "]
inputs = tokenizer(message, return_tensors='pt', return_token_type_ids=False)
# 可选:验证cuda
# inputs = {k: v.to('cuda') for k,v in inputs.items()}
# olmo = olmo.to('cuda')
response = olmo.generate(**inputs, max_new_tokens=100, do_sample=True, top_k=50, top_p=0.95)
print(tokenizer.batch_decode(response, skip_special_tokens=True)[0])
高级用法
import torch
# 量化模型
model = AutoModelForCausalLM.from_pretrained("allenai/OLMo-2-0425-1B",
torch_dtype=torch.float16,
load_in_8bit=True) # 需要bitsandbytes库
tokenizer = AutoTokenizer.from_pretrained("allenai/OLMo-2-0425-1B")
message = ["Language modeling is "]
inputs = tokenizer(message, return_tensors='pt', return_token_type_ids=False)
# 将输入传递给CUDA
inputs.input_ids.to('cuda')
model = model.to('cuda')
response = model.generate(**inputs, max_new_tokens=100, do_sample=True, top_k=50, top_p=0.95)
print(tokenizer.batch_decode(response, skip_special_tokens=True)[0])
📚 详细文档
模型详情
属性 | 详情 |
---|---|
模型类型 | 一个Transformer风格的自回归语言模型 |
训练数据 | 预训练阶段1使用OLMo-mix-1124 (3.9T tokens),阶段2使用Dolmino-Mix-1124 |
语言 | 英语 |
许可证 | 代码和模型根据Apache 2.0许可证发布 |
联系方式 | 技术咨询:olmo@allenai.org ;媒体:press@allenai.org |
数据截止日期 | 2023年12月 |
模型来源
- 项目页面:https://allenai.org/olmo
- 仓库:
- 核心仓库(训练、推理、微调等):https://github.com/allenai/OLMo
- 评估代码:https://github.com/allenai/OLMo-Eval
- 进一步微调代码:https://github.com/allenai/open-instruct
- 论文:https://arxiv.org/abs/2501.00656
评估
OLMo 2 1B的核心模型结果如下:
指令模型 | 平均得分 | FLOP×10²³ | AE2 | BBH | DROP | GSM8K | IFE | MATH | MMLU | 安全性 | PQA | TQA |
---|---|---|---|---|---|---|---|---|---|---|---|---|
封闭API模型 | ||||||||||||
GPT-3.5 Turbo 0125 | 60.5 | n/a | 38.7 | 66.6 | 70.2 | 74.3 | 66.9 | 41.2 | 70.2 | 69.1 | 45.0 | 62.9 |
GPT 4o Mini 0724 | 65.7 | n/a | 49.7 | 65.9 | 36.3 | 83.0 | 83.5 | 67.9 | 82.2 | 84.9 | 39.0 | 64.8 |
开放权重模型(1 - 1.7B参数) | ||||||||||||
SmolLM2 1.7B | 34.2 | 1.1 | 5.8 | 39.8 | 30.9 | 45.3 | 51.6 | 20.3 | 34.3 | 52.4 | 16.4 | 45.3 |
Gemma 3 1B | 38.3 | 1.2 | 20.4 | 39.4 | 25.1 | 35.0 | 60.6 | 40.3 | 38.9 | 70.2 | 9.6 | 43.8 |
Llama 3.1 1B | 39.3 | 6.7 | 10.1 | 40.2 | 32.2 | 45.4 | 54.0 | 21.6 | 46.7 | 87.2 | 13.8 | 41.5 |
Qwen 2.5 1.5B | 41.7 | 1.7 | 7.4 | 45.8 | 13.4 | 66.2 | 44.2 | 40.6 | 59.7 | 77.6 | 15.5 | 46.5 |
完全开放模型 | ||||||||||||
OLMo 1B 0724 | 24.4 | 0.22 | 2.4 | 29.9 | 27.9 | 10.8 | 25.3 | 2.2 | 36.6 | 52.0 | 12.1 | 44.3 |
OLMo 2 1B | 42.7 | 0.35 | 9.1 | 35.0 | 34.6 | 68.3 | 70.1 | 20.7 | 40.0 | 87.6 | 12.9 | 48.7 |
训练详情
OLMo 2 1B | OLMo 2 7B | OLMo 2 13B | OLMo 2 32B | |
---|---|---|---|---|
预训练阶段1 | 4万亿个token (1个epoch) |
4万亿个token (1个epoch) |
5万亿个token (1.2个epoch) |
6万亿个token (1.5个epoch) |
预训练阶段2 | 500亿个token | 500亿个token (3次运行) 合并 |
1000亿个token (3次运行) 3000亿个token (1次运行) 合并 |
1000亿个token (3次运行) 3000亿个token (1次运行) 合并 |
训练后 | SFT+DPO+GRPO (偏好混合) |
SFT + DPO + PPO (偏好混合) |
SFT + DPO + PPO (偏好混合) |
SFT + DPO + GRPO (偏好混合) |
阶段1:初始预训练
- 数据集:OLMo-mix-1124 (3.9T tokens)
- 覆盖率:超过总预训练预算的95%
- 1B模型:约1个epoch
阶段2:中间训练
- 数据集:Dolmino-Mix-1124
- 一次训练混合:
- 500亿个token
- 混合组成:50%高质量网络数据 + 学术/问答/指令/数学内容
模型合并
- 1B模型:仅在500亿个混合数据上训练了1个版本,未进行合并。
🔧 技术细节
OLMo 2 1B是一个Transformer风格的自回归语言模型,基于Transformer架构,在自然语言处理领域具有强大的能力。该模型在特定数据集上进行预训练和中间训练,提高了模型的性能和泛化能力。模型的训练过程分为两个阶段,初始预训练阶段使用了OLMo-mix-1124数据集,中间训练阶段使用了Dolmino-Mix-1124数据集。模型的量化方法可以提高推理速度,但量化后的模型对数据类型和CUDA操作更为敏感。
📄 许可证
代码和模型根据Apache 2.0许可证发布。
🔖 引用
@misc{olmo20242olmo2furious,
title={{2 OLMo 2 Furious}},
author={Team OLMo and Pete Walsh and Luca Soldaini and Dirk Groeneveld and Kyle Lo and Shane Arora and Akshita Bhagia and Yuling Gu and Shengyi Huang and Matt Jordan and Nathan Lambert and Dustin Schwenk and Oyvind Tafjord and Taira Anderson and David Atkinson and Faeze Brahman and Christopher Clark and Pradeep Dasigi and Nouha Dziri and Michal Guerquin and Hamish Ivison and Pang Wei Koh and Jiacheng Liu and Saumya Malik and William Merrill and Lester James V. Miranda and Jacob Morrison and Tyler Murray and Crystal Nam and Valentina Pyatkin and Aman Rangapur and Michael Schmitz and Sam Skjonsberg and David Wadden and Christopher Wilhelm and Michael Wilson and Luke Zettlemoyer and Ali Farhadi and Noah A. Smith and Hannaneh Hajishirzi},
year={2024},
eprint={2501.00656},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2501.00656},
}
📞 模型卡片联系
如果此模型卡片存在错误,请联系olmo@allenai.org
。
⚠️ 重要提示
像任何基础或微调后的语言模型一样,用户可以通过提示AI生成有害和敏感内容。此类内容也可能无意中产生,特别是在涉及偏差的情况下,因此我们建议用户在应用此技术时考虑风险。此外,OLMo或任何大语言模型的许多陈述往往不准确,因此应核实事实。



