Wir haben ein neues Projekt Eole gestartet, das auf GitHub verfügbar ist
Es ist eine Ausgründung von OpenNMT-Py in Bezug auf Funktionen, aber wir haben viele Sachen überarbeitet.
Eole behandelt NMT, LLM, Encoder sowie ein neues Konzept des Schätzers innerhalb eines NMT -Modells. Siehe diesen Beitrag und diese Nachrichten
Wenn Sie Entwickler sind, wechseln Sie jetzt. Wenn Sie nur Benutzer sind, veröffentlichen wir in Kürze die ersten PY-PI-Versionen.
OpenNMT-Py ist die Pytorch-Version des OpenNMT-Projekts, ein Open-Source-Rahmen für neuronale Maschine (und darüber hinaus!). Es ist entwickelt, um forschungsfreundlich zu sein, um neue Ideen in Übersetzung, Sprachmodellierung, Zusammenfassung und vielen anderen NLP -Aufgaben auszuprobieren. Einige Unternehmen haben bewiesen, dass der Code die Produktion bereit ist.
Wir lieben Beiträge! Bitte sehen Sie sich Probleme an, die mit dem Beiträge des Beiträge des Beiträge gekennzeichnet sind.
Stellen Sie vor der Anregung eines Problems sicher, dass Sie die Anforderungen und die vollständigen Dokumentationsbeispiele lesen.
Wenn es keinen Fehler gibt, verwenden Sie bitte das Forum oder Gitter, um Fragen zu stellen.
Es gibt einen Schritt für Schritt und erklärt Tuto (dank Yasmin-Moslem): Tutorial
Bitte versuchen Sie zu lesen und/oder zu folgen, bevor Sie Neulinge Probleme anregen.
Andernfalls können Sie sich nur die QuickStart -Schritte ansehen
scaled_dot_product_attention behebtFür alle Usecases, einschließlich NMT, können Sie jetzt Multiquery anstelle von Multihead -Aufmerksamkeit (schneller bei Training und Inferenz) verwenden und Verzerrungen von allen linearen (qKV- und Feedforward -Modulen) entfernen.
Wenn Sie frühere Versionen von OpenNMT-Py verwendet haben, können Sie den Changelog oder die Breaking-Änderungen überprüfen
Um das Setup und die Reproduzierbarkeit zu erleichtern, werden einige Docker-Bilder über die GitHub-Containerregistrierung verfügbar gemacht: https://github.com/opennmt/opennmt-py/pkgs/container/opennmt-py
Sie können den Workflow anpassen und Ihre eigenen Image (en) je nach bestimmten Anforderungen erstellen, indem Sie build.sh und Dockerfile im docker -Verzeichnis des Repo verwenden.
docker pull ghcr.io/opennmt/opennmt-py:3.4.3-ubuntu22.04-cuda12.1
Beispiel Oneliner, um einen Behälter auszuführen und eine Bash -Shell darin zu öffnen
docker run --rm -it --runtime=nvidia ghcr.io/opennmt/opennmt-py:test-ubuntu22.04-cuda12.1
Hinweis: Sie müssen das NVIDIA-Container-Toolkit (ehemals NVIDIA-Docker) installiert, um die CUDA/GPU-Funktionen ordnungsgemäß zu nutzen.
Abhängig von Ihren Anforderungen können Sie verschiedene Flags hinzufügen:
-p 5000:5000 , um einen exponierten Port aus Ihrem Container an Ihren Host weiterzuleiten;-v /some/local/directory:/some/container/directory um ein lokales Verzeichnis in ein Containerverzeichnis zu montieren;--entrypoint some_command , um einen bestimmten Befehl direkt als Container-Einstiegspunkt auszuführen (anstelle der Standard-Bash-Shell);OpenNMT-Py erfordert:
Installieren Sie OpenNMT-py von pip :
pip install OpenNMT-pyoder aus der Quelle:
git clone https://github.com/OpenNMT/OpenNMT-py.git
cd OpenNMT-py
pip install -e . HINWEIS: Wenn Sie während der Installation auf einen MemoryError stoßen, versuchen Sie, pip mit --no-cache-dir zu verwenden.
(Optional) Einige erweiterte Funktionen (z. B. arbeitende Modelle oder bestimmte Transformationen) erfordern zusätzliche Pakete. Sie können sie mit:
pip install -r requirements.opt.txtAPEX wird sehr empfohlen, eine schnelle Leistung zu erzielen (insbesondere das Legacy Fusedadam Optimizer und 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 ..Flash -Aufmerksamkeit:
Ab Oktober 2023 wurde die Flash -Aufmerksamkeit 1 auf Pytorch V2 vorgelöst. Es wird jedoch empfohlen, die Flash -Aufmerksamkeit 2 mit V2.3.1 für die Aufmerksamkeitsunterstützung der Schiebefenster zu verwenden.
Wenn Sie regelmäßig position_encoding=True oder Rotary mit max_relative_positions=-1 OpenNMT-Py verwenden, versuchen Sie, einen optimierten DOT-Produktpfad zu verwenden.
Wenn Sie die Aufmerksamkeit von Flash verwenden möchten, müssen Sie es zuerst manuell installieren:
pip install flash-attn --no-build-isolation Wenn die Flash -Aufmerksamkeit 2 nicht installiert ist, verwenden wir F.scaled_dot_product_attention von Pytorch 2.x
Wenn Sie max_relative_positions > 0 oder alibi max_relative_positions=-2 OpenNMT-PY verwenden, verwendet der Legacy-Code für Matrix-Multiplikationen.
Flash Achtung und F.scaled_dot_product_attention sind etwas schneller und speichern einige GPU -Speicher.
AWQ:
Wenn Sie Inferenz ausführen oder ein AWQ -Modell quantisieren möchten, benötigen Sie autoawq.
Für AutoAWQ: PIP Installation AutoAWQ
Vollständige HTML -Dokumentation
FAQs
OpenNMT-Py wird als kollaboratives Open-Source-Projekt ausgeführt. Das Projekt wurde 2016 von Systran und Harvard NLP in LUA inkubiert und 2017 auf Pytorch portiert.
Aktuelle Betreuer (seit 2018):
François Hernandez Vincent Nguyen (Saatfall)
Wenn Sie OpenNMT-Py für akademische Arbeiten verwenden, zitieren Sie bitte das in ACL 2017 veröffentlichte erste Systemdemonstrationspapier:
@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}
}