license: apple-amlr
license_name: apple-sample-code-license
license_link: LICENSE
OpenELM 开源高效语言模型
作者:Sachin Mehta, Mohammad Hossein Sekhavat, Qingqing Cao, Maxwell Horton, Yanzi Jin, Chenfan Sun, Iman Mirzadeh, Mahyar Najibi, Dmitry Belenko, Peter Zatloukal, Mohammad Rastegari
我们推出OpenELM系列模型,这是一组开源高效语言模型。OpenELM采用分层缩放策略,在Transformer模型的每一层中高效分配参数,从而提升模型精度。我们使用CoreNet库对OpenELM模型进行了预训练,发布了包含2.7亿、4.5亿、11亿和30亿参数的预训练模型及指令调优模型。我们开源了完整框架,涵盖数据准备、训练、微调和评估流程,同时提供多个预训练检查点和训练日志,以促进开放研究。
我们的预训练数据集包含RefinedWeb、去重PILE、RedPajama子集和Dolma v1.6子集,总计约1.8万亿token。使用前请查阅相关数据集许可协议。
使用指南
我们提供了示例脚本generate_openelm.py
,展示如何通过HuggingFace Hub加载OpenELM模型生成文本。
运行以下命令体验模型:
python generate_openelm.py --model apple/OpenELM-450M-Instruct --hf_access_token [HF访问令牌] --prompt '从前有座山' --generate_kwargs repetition_penalty=1.2
获取HuggingFace访问令牌请参考此链接。
可通过generate_kwargs
传递额外生成参数。例如使用前瞻token推测生成加速推理:
python generate_openelm.py --model apple/OpenELM-450M-Instruct --hf_access_token [HF访问令牌] --prompt '从前有座山' --generate_kwargs repetition_penalty=1.2 prompt_lookup_num_tokens=10
或通过assistant_model
参数使用辅助模型进行模型级联推测生成:
python generate_openelm.py --model apple/OpenELM-450M-Instruct --hf_access_token [HF访问令牌] --prompt '从前有座山' --generate_kwargs repetition_penalty=1.2 --assistant_model [较小模型]
核心结果
零样本评估
(表格数据保持原格式不变)
LLM360评估
(表格数据保持原格式不变)
OpenLLM排行榜
(表格数据保持原格式不变)
更多结果对比详见技术报告。
评估流程
环境配置
安装依赖项:
harness_repo="public-lm-eval-harness"
git clone https://github.com/EleutherAI/lm-evaluation-harness ${harness_repo}
cd ${harness_repo}
git checkout dc90fec
pip install -e .
cd ..
pip install datasets@git+https://github.com/huggingface/datasets.git@66d6242
pip install tokenizers>=0.15.2 transformers>=4.38.2 sentencepiece>=0.2.0
执行评估
hf_model=apple/OpenELM-450M-Instruct
tokenizer=meta-llama/Llama-2-7b-hf
add_bos_token=True
batch_size=1
mkdir lm_eval_output
偏差、风险与限制
OpenELM模型的发布旨在通过提供先进语言模型促进开放研究。这些基于公开数据集训练的模型未设置安全防护,可能产生不准确、有害、偏见或不当内容。用户需根据自身需求进行安全测试并部署过滤机制。
引用
若使用我们的工作,请引用:
(保持原引用格式不变)