模型概述
模型特點
模型能力
使用案例
🚀 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或任何大語言模型的許多陳述往往不準確,因此應核實事實。



