我們在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}
}