OpenNMT-py简介
OpenNMT-py是OpenNMT项目的PyTorch实现版本,是一个开源的神经机器翻译和大型语言模型框架。它由Harvard NLP小组和SYSTRAN公司于2016年在Lua上孵化,并于2017年移植到PyTorch上。OpenNMT-py专为研究人员设计,可以方便地尝试翻译、语言建模、摘要等自然语言处理任务中的新想法。同时,一些公司已经证明该代码可以用于生产环境。
OpenNMT-py具有以下主要特点:
- 支持多种神经网络架构,如Transformer、LSTM等
- 支持多种NLP任务,包括机器翻译、语言建模、文本摘要等
- 提供灵活的配置选项,可以方便地调整模型结构和训练参数
- 支持多GPU训练
- 提供预训练模型,可以直接用于推理或进行微调
- 支持量化和模型压缩技术
- 提供REST API和Web界面,方便部署和使用
最新功能
OpenNMT-py最近新增了一些重要功能:
- 支持大型语言模型(LLM),提供Llama、OpenLlama、Redpajama、MPT-7B、Falcon等模型的转换器
- 支持8位和4位量化,以及LoRA适配器,可以有或没有检查点
- 可以在单个RTX 24GB GPU上使用4位量化微调7B和13B模型
- 支持张量并行,当模型不适合单个GPU内存时可用于训练和推理
- 提供MMLU评估脚本
对于所有用例(包括神经机器翻译),现在可以使用Multiquery代替Multihead注意力(在训练和推理时更快),并从所有Linear层(QKV和FeedForward模块)中移除偏置。
安装和使用
OpenNMT-py可以通过pip安装,也可以从源代码安装。它需要Python 3.8+和PyTorch 2.0+。
基本的安装步骤如下:
pip install OpenNMT-py
或者从源代码安装:
git clone https://github.com/OpenNMT/OpenNMT-py.git
cd OpenNMT-py
pip install -e .
OpenNMT-py提供了详细的文档和教程,帮助用户快速上手。例如:
- 如何使用7B或13B llama(或Open llama、MPT-7B、Redpajama)语言模型复制Vicuna
- 如何使用自己的数据集微调NLLB-200
- 如何创建简单的OpenNMT-py REST服务器
- 如何创建简单的Web界面
社区和贡献
OpenNMT-py是一个协作开源项目,欢迎社区贡献。贡献者可以查看标记为"contributions welcome"的issues。在提出问题之前,请确保阅读了要求和完整文档示例。
如果您在学术工作中使用OpenNMT-py,请引用2017年ACL发表的系统演示论文:
@misc{klein2018opennmt,
title={OpenNMT: Neural Machine Translation Toolkit},
author={Guillaume Klein and Yoon Kim and Yuntian Deng and Vincent Nguyen and Jean Senellart and Alexander M. Rush},
year={2018},
eprint={1805.11462},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
结语
OpenNMT-py作为一个功能强大、灵活易用的开源神经机器翻译和大型语言模型框架,为NLP研究和应用提供了重要工具。它不断更新的功能和活跃的社区支持,使其成为探索和实现最新NLP技术的理想平台。无论是学术研究还是工业应用,OpenNMT-py都是一个值得考虑的选择。