OpenLM: 推动语言模型技术的开放创新
OpenLM是一个致力于中等规模语言模型研究的开源项目,由来自华盛顿大学RAIVN实验室、UWNLP、丰田研究院等机构的研究人员联合开发。该项目提供了一个简洁而强大的语言模型实现框架,并发布了多个预训练模型,旨在促进语言模型技术的开放创新与发展。
项目特点
OpenLM具有以下几个突出特点:
-
专注中等规模模型: OpenLM验证了从11M到7B参数的模型性能,填补了小型和超大型模型之间的研究空白。
-
高效实现: 核心模型代码仅依赖PyTorch、XFormers或Triton库,实现简洁高效。
-
分布式训练: 支持多达256个GPU的分布式训练,具备良好的扩展性。
-
丰富预训练模型: 提供从11M到7B参数的多个预训练模型供研究使用。
-
灵活评估: 提供方便的评估脚本,支持多种常见NLP任务的评估。
快速上手
要开始使用OpenLM,您可以按照以下步骤操作:
-
环境配置:
pip install -r requirements.txt pip install --editable .
-
数据预处理:
python open_lm/datapreprocess/wiki_download.py --output-dir path/to/raw_data python open_lm/datapreprocess/make_2048.py --input-files path_to_raw_data/*.jsonl --output-dir preproc_data
-
模型训练:
torchrun --nproc-per-node 4 -m open_lm.main \ --model open_lm_3b \ --train-data /preproc_data/shard-{0000000..0000099}.tar \ --train-num-samples 1000000000 \ --batch-size 8 \ --grad-checkpointing \ --precision amp_bfloat16 \ --lr 3e-4 \ --epochs 100 \ --logs path/to/logging/dir/
-
模型评估:
python eval/eval_openlm_ckpt.py \ --eval-yaml in_memory_hf_eval.yaml \ --model open_lm_1b \ --checkpoint /path/to/openlm_checkpoint.pt
-
文本生成:
python scripts/generate.py \ --model open_lm_1b \ --checkpoint /path/to/openlm_checkpoint.pt \ --input-text "请给我一个巧克力曲奇饼的食谱"
预训练模型
OpenLM目前提供了两个主要的预训练模型:
-
OpenLM 1B: 这是一个约10亿参数的模型,在1.6T token的多样化数据集上训练而成。模型checkpoint可以从HuggingFace下载。
-
OpenLM 7B: 这是一个约70亿参数的模型,目前已完成1.25T token的训练。
这些模型在多项NLP任务上展现了不错的性能,为中等规模语言模型的研究提供了有力的基线。
开源贡献
OpenLM是一个开放的社区项目,欢迎各种形式的贡献。您可以通过以下方式参与:
- 提交bug报告或功能请求
- 贡献代码改进
- 改进文档
- 分享使用经验和案例研究
项目遵循MIT开源许可证,鼓励学术和商业使用。
未来展望
OpenLM团队计划继续改进模型架构、扩大训练规模,并探索更多下游应用。我们希望OpenLM能成为语言模型研究的重要开源工具,推动这一领域的技术创新与进步。
如果您对OpenLM项目感兴趣,欢迎访问GitHub仓库了解更多信息,并加入我们的开源社区!