OLMo 是一个用于训练和使用 AI2 最先进的开放语言模型的存储库。它是由科学家建造的,为科学家服务的。
安装
首先根据您的操作系统的具体说明安装PyTorch 。
要从源安装(建议用于培训/微调)运行:
git clone https://github.com/allenai/OLMo.git
cd OLMo
pip install -e .[all]
否则,您可以直接从 PyPI 安装模型代码:
pip install ai2-olmo
型号概览
目前发布的OLMo家族中的核心模型有(全部在Dolma数据集上训练):
模型 | 培训代币 | 上下文长度 |
---|---|---|
OLMo 1B | 3万亿 | 2048 |
OLMo 7B | 2.5万亿 | 2048 |
OLMo 7B 双 2T | 2万亿 | 2048 |
微调
要使用我们的训练器微调 OLMo 模型,您首先需要通过标记数据集并将标记 ID 保存到平面 numpy 内存映射数组来准备数据集。请参阅scripts/prepare_tulu_data.py
Tulu V2 数据集的示例,该数据集可以轻松修改为其他数据集。
接下来,准备您的训练配置。该目录中有许多示例configs/
可以用作起点。最重要的是确保模型参数(model
配置中的字段)与您开始的检查点匹配。为了安全起见,您始终可以从模型检查点附带的配置开始。您至少需要对配置进行以下更改或从命令行提供相应的覆盖:
- 更新
load_path
以指向您想要开始的检查点。 - 设置。
reset_trainer_state
_true
- 更新
data.paths
以指向token_ids.npy
您生成的文件。 - 可以选择更新
data.label_mask_paths
以指向label_mask.npy
您生成的文件,除非您不需要针对丢失进行特殊屏蔽。 - 更新
evaluators
以添加/删除循环内评估。
一旦您对训练配置感到满意,您就可以通过 启动训练作业torchrun
。例如:
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
--reset_trainer_state
注意:仅当您没有更新配置中的这些字段时才需要传递 CLI 覆盖。
推理
您可以利用我们的 HuggingFace 集成在 olmo 检查点上运行推理:
from hf_olmo import * # registers the Auto* classesfrom transformers import AutoModelForCausalLM, AutoTokenizer
olmo = AutoModelForCausalLM.from_pretrained("allenai/OLMo-7B") tokenizer = AutoTokenizer.from_pretrained("allenai/OLMo-7B")
message = ["Language modeling is "] inputs = tokenizer(message, return_tensors='pt', return_token_type_ids=False) 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])
微调检查点的推断
如果您使用上面的代码对模型进行微调,则可以使用转换脚本将本机 OLMo 检查点转换为 HuggingFace 兼容检查点
python hf_olmo/convert_olmo_to_hf.py --checkpoint-dir /path/to/checkpoint
量化
olmo = AutoModelForCausalLM.from_pretrained("allenai/OLMo-7B", torch_dtype=torch.float16, load_in_8bit=True) # requires bitsandbytes
量化模型对输入/cuda 更敏感,因此建议将输入作为inputs.input_ids.to('cuda') 传递,以避免潜在问题。
评估
OLMo Eval存储库提供了用于评估 OLMo 模型的其他工具。