我们在GitHub上启动了一个新项目Eole
就功能而言,它是OpenNMT-PY的衍生产品,但我们对很多东西进行了改造。
Eole处理NMT,LLM,编码器以及NMT模型中的估算器的新概念,请参阅此帖子和此新闻
如果您是开发人员,请立即切换。如果您仅是用户,那么我们将很快发布第一个PY-PI版本。
OpenNMT-PY是OpenNMT Project的Pytorch版本,OpenNMT Project是一个开源(MIT)神经机器翻译(及以后!)框架。它旨在研究友好,以尝试翻译,语言建模,摘要以及许多其他NLP任务中的新想法。一些公司证明了该代码已准备就绪。
我们喜欢贡献!请查看带有贡献欢迎标签的问题。
在提出问题之前,请确保您阅读要求和完整的文档示例。
除非有错误,否则请使用论坛或吉特来提出问题。
有一个分步,并解释了Tuto(感谢Yasmin Moslem):教程
在提出新手问题之前,请尝试阅读和/或关注。
否则,您只能查看快速步骤
scaled_dot_product_attention问题对于包括NMT在内的所有用途酶,您现在可以使用多样性而不是多头注意(在训练和推理时更快),并从所有线性(QKV和Feelforward模块)中删除偏见。
如果您使用了OpenNMT-PY的先前版本,则可以检查ChangElog或破坏更改
为了促进设置和可重复性,可以通过GitHub容器注册表提供一些Docker图像:https://github.com/opennmt/opennmt-py/pkgs/pkgs/container/container/opennmt-py
您可以通过使用build.sh和dockerfile在存储docker目录中使用build.sh和Dockerfile来调整工作流程并构建自己的图像。
docker pull ghcr.io/opennmt/opennmt-py:3.4.3-ubuntu22.04-cuda12.1
示例Oneliner运行容器并在其中打开bash壳
docker run --rm -it --runtime=nvidia ghcr.io/opennmt/opennmt-py:test-ubuntu22.04-cuda12.1
注意:您需要安装NVIDIA容器工具包(以前是NVIDIA-DOCKER),以正确利用CUDA/GPU功能。
根据您的需求,您可以添加各种标志:
-p 5000:5000将某些暴露的端口从您的容器转发到主机;-v /some/local/directory:/some/container/directory以将某些本地目录安装到某些容器目录;--entrypoint some_command直接将某些特定命令作为容器入口点(而不是默认的bash shell);OpenNMT-PY需要:
从pip安装OpenNMT-py :
pip install OpenNMT-py或来自来源:
git clone https://github.com/OpenNMT/OpenNMT-py.git
cd OpenNMT-py
pip install -e .注意:如果在安装过程中遇到MemoryError ,请尝试将pip与--no-cache-dir一起使用。
(可选)一些高级功能(例如工作预处理的模型或特定的转换)需要额外的包装,您可以安装它们:
pip install -r requirements.opt.txt强烈建议APEX具有快速的性能(尤其是传统的Fusedadam Optimizer和Fusedrmsnorm)
git clone https://github.com/NVIDIA/apex
cd apex
pip3 install -v --no-build-isolation --config-settings --build-option= " --cpp_ext --cuda_ext --deprecated_fused_adam --xentropy --fast_multihead_attn " ./
cd ..闪光注意力:
截至2023年10月,Flash注意力1已上游到Pytorch V2上,但建议将Flash Pastion 2与v2.3.1一起使用,以进行滑动窗口注意力。
使用常规position_encoding=True = true或max_relative_positions=-1 OpenNMT-PY将尝试使用优化的点产生路径。
如果您想使用闪光注意力,则需要先手动安装它:
pip install flash-attn --no-build-isolation如果未安装Flash注意力2,那么我们将使用F.scaled_dot_product_attention from Pytorch 2.x
当使用max_relative_positions > 0或alibi max_relative_positions=-2 OpenNMT-PY将使用其遗留代码用于矩阵乘法。
Flash注意力和F.scaled_dot_product_attention速度更快,并节省了一些GPU内存。
AWQ:
如果要运行推理或量化AWQ模型,则需要AutoAWQ。
对于自动启动:PIP安装自动auawq
完整的HTML文档
常见问题解答
OpenNMT-PY是一个协作开源项目。 Systran和Harvard NLP于2016年在LUA中孵育项目,并于2017年移植到Pytorch。
当前的维护者(自2018年以来):
FrançoisHernandezVincent Nguyen(种子降落)
如果您正在使用OpenNMT-PY进行学术工作,请引用在ACL 2017上发表的初始系统演示文件:
@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}
}