Nous avons commencé un nouveau projet Eole disponible sur github
C'est un spin-off de Opennmt-Py en termes de fonctionnalités, mais nous avons réorganisé beaucoup de choses.
Eole gère NMT, LLM, les encodeurs ainsi qu'un nouveau concept d'estimateur dans un modèle NMT voir ce post et cette nouvelle
Si vous êtes un développeur, changez maintenant. Si vous êtes uniquement un utilisateur, nous publierons sous peu les premières versions PY-PI.
OpenNMT-PY est la version Pytorch du projet OpenNMT, un cadre de traduction de machine neuronale de l'ouverture (MIT) (et au-delà!). Il est conçu pour être convivial pour essayer de nouvelles idées en traduction, modélisation du langage, résumé et de nombreuses autres tâches PNL. Certaines entreprises ont prouvé que le code était prêt à la production.
Nous aimons les contributions! Veuillez consulter les problèmes marqués par la balise de bienvenue des contributions.
Avant de résoudre un problème, assurez-vous de lire les exigences et les exemples de documentation complets.
À moins qu'il y ait un bogue, veuillez utiliser le forum ou Gitter pour poser des questions.
Il y a un pas par étape et expliqué Tuto (grâce à Yasmin Moslem): Tutoriel
Veuillez essayer de lire et / ou de suivre avant de soulever des problèmes de débutants.
Sinon, vous pouvez simplement jeter un œil aux étapes de Quickstart
scaled_dot_product_attentionPour toutes les USECases, y compris le NMT, vous pouvez désormais utiliser le multi-éléments au lieu de l'attention multi-tête (plus rapidement à l'entraînement et à l'inférence) et supprimer les biais de tous les modules linéaires (QKV ainsi que les modules de restauration).
Si vous avez utilisé des versions précédentes d'OpenNMT-PY, vous pouvez vérifier le modificateur ou les changements de rupture
Pour faciliter la configuration et la reproductibilité, certaines images de Docker sont mises à disposition via le registre des conteneurs GitHub: https://github.com/opennmt/opennmt-py/pkgs/continer/opennmt-py
Vous pouvez adapter le flux de travail et créer vos propres images en fonction des besoins spécifiques en utilisant build.sh et Dockerfile dans le répertoire docker du repo.
docker pull ghcr.io/opennmt/opennmt-py:3.4.3-ubuntu22.04-cuda12.1
Exemple Oneliner pour exécuter un conteneur et ouvrir une coque bash à l'intérieur
docker run --rm -it --runtime=nvidia ghcr.io/opennmt/opennmt-py:test-ubuntu22.04-cuda12.1
Remarque: vous devez que la boîte à outils Nvidia Container (anciennement Nvidia-Docker) soit installée pour profiter correctement des fonctionnalités CUDA / GPU.
Selon vos besoins, vous pouvez ajouter divers drapeaux:
-p 5000:5000 pour transmettre un port exposé de votre conteneur à votre hôte;-v /some/local/directory:/some/container/directory Pour monter un répertoire local dans un répertoire de conteneurs;--entrypoint some_command pour exécuter directement une commande spécifique comme point d'entrée de conteneur (au lieu du shell bash par défaut);Opennmt-Py exige:
Installez OpenNMT-py depuis pip :
pip install OpenNMT-pyou de la source:
git clone https://github.com/OpenNMT/OpenNMT-py.git
cd OpenNMT-py
pip install -e . Remarque: Si vous rencontrez une MemoryError lors de l'installation, essayez d'utiliser pip avec --no-cache-dir .
(Facultatif) Certaines fonctionnalités avancées (par exemple, les modèles de travail ou les transformations spécifiques) nécessitent des packages supplémentaires, vous pouvez les installer avec:
pip install -r requirements.opt.txtApex est fortement recommandé d'avoir des performances rapides (en particulier l'optimiseur Fusedadam hérité et 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 ..Attention au flash:
En octobre 2023, l'attention du flash 1 a été amont à Pytorch V2, mais il est recommandé d'utiliser l'attention du flash 2 avec v2.3.1 pour la prise en charge de l'attention des fenêtres coulissantes.
Lorsque vous utilisez régulièrement position_encoding=True ou Rotary avec max_relative_positions=-1 OpenNMT-PY essaiera d'utiliser un chemin de produit de point optimisé.
Si vous souhaitez utiliser l'attention du flash, vous devez d'abord l'installer manuellement:
pip install flash-attn --no-build-isolation Si l'attention du flash 2 n'est pas installée, nous utiliserons F.scaled_dot_product_attention de pytorch 2.x
Lorsque vous utilisez max_relative_positions > 0 ou Alibi max_relative_positions=-2 opennmt-py utilisera son code hérité pour les multiplications matricielles.
L'attention du Flash et F.scaled_dot_product_attention sont un peu plus rapides et enregistrent une mémoire GPU.
AWQ:
Si vous souhaitez exécuter l'inférence ou quantifier un modèle AWQ, vous aurez besoin d'autoAWQ.
Pour AutoAWQ: PIP Installez AutoAWQ
Documentation complète de HTML
FAQ
OpenNMT-PY est géré en tant que projet collaboratif open-source. Le projet a été incubé par Systran et Harvard NLP en 2016 à Lua et porté à Pytorch en 2017.
RETENUSEURS COURANTS (depuis 2018):
François Hernandez Vincent Nguyen (semis)
Si vous utilisez OpenNMT-PY pour les travaux académiques, veuillez citer le document de démonstration du système initial publié dans 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}
}