NVIDIA NeMo Framework est un framework d'IA générative évolutif et cloud-natif conçu pour les chercheurs et les développeurs PyTorch travaillant sur les grands modèles linguistiques (LLM), les modèles multimodaux (MM), la reconnaissance automatique de la parole (ASR), la synthèse vocale (TTS) et l'ordinateur. Domaines de vision (CV). Il est conçu pour vous aider à créer, personnaliser et déployer efficacement de nouveaux modèles d'IA génératifs en exploitant le code existant et les points de contrôle de modèles pré-entraînés.
Pour la documentation technique, veuillez consulter le Guide de l'utilisateur de NeMo Framework.
NVIDIA NeMo 2.0 introduit plusieurs améliorations significatives par rapport à son prédécesseur, NeMo 1.0, améliorant ainsi la flexibilité, les performances et l'évolutivité.
Configuration basée sur Python - NeMo 2.0 passe des fichiers YAML à une configuration basée sur Python, offrant plus de flexibilité et de contrôle. Ce changement facilite l'extension et la personnalisation des configurations par programmation.
Abstractions modulaires - En adoptant les abstractions modulaires de PyTorch Lightning, NeMo 2.0 simplifie l'adaptation et l'expérimentation. Cette approche modulaire permet aux développeurs de modifier et d'expérimenter plus facilement différents composants de leurs modèles.
Évolutivité - NeMo 2.0 fait évoluer de manière transparente des expériences à grande échelle sur des milliers de GPU à l'aide de NeMo-Run, un outil puissant conçu pour rationaliser la configuration, l'exécution et la gestion des expériences d'apprentissage automatique dans les environnements informatiques.
Dans l’ensemble, ces améliorations font de NeMo 2.0 un cadre puissant, évolutif et convivial pour le développement de modèles d’IA.
Important
NeMo 2.0 est actuellement pris en charge par les collections LLM (large Language Model) et VLM (Vision Language Model).
Tous les modèles NeMo sont formés avec Lightning. La formation est automatiquement évolutive sur des milliers de GPU.
Le cas échéant, les modèles NeMo exploitent des techniques de formation distribuées de pointe, intégrant des stratégies de parallélisme pour permettre une formation efficace de très grands modèles. Ces techniques incluent le parallélisme tensoriel (TP), le parallélisme de pipeline (PP), le parallélisme de données entièrement partagées (FSDP), le mélange d'experts (MoE) et la formation de précision mixte avec BFloat16 et FP8, ainsi que d'autres.
Les LLM et MM basés sur NeMo Transformer utilisent NVIDIA Transformer Engine pour la formation FP8 sur les GPU NVIDIA Hopper, tout en tirant parti de NVIDIA Megatron Core pour faire évoluer la formation du modèle Transformer.
Les LLM NeMo peuvent être alignés sur des méthodes de pointe telles que SteerLM, Direct Preference Optimization (DPO) et Reinforcement Learning from Human Feedback (RLHF). Voir NVIDIA NeMo Aligner pour plus d'informations.
En plus du réglage fin supervisé (SFT), NeMo prend également en charge les dernières techniques de réglage fin efficace des paramètres (PEFT) telles que LoRA, P-Tuning, Adapters et IA3. Reportez-vous au Guide de l'utilisateur de NeMo Framework pour la liste complète des modèles et techniques pris en charge.
Les LLM et MM NeMo peuvent être déployés et optimisés avec les microservices NVIDIA NeMo.
Les modèles NeMo ASR et TTS peuvent être optimisés pour l'inférence et déployés pour des cas d'utilisation en production avec NVIDIA Riva.
Important
NeMo Framework Launcher est compatible uniquement avec NeMo version 1.0. NeMo-Run est recommandé pour lancer des expériences avec NeMo 2.0.
NeMo Framework Launcher est un outil cloud natif qui rationalise l'expérience NeMo Framework. Il est utilisé pour lancer des tâches de formation NeMo Framework de bout en bout sur les CSP et les clusters Slurm.
Le NeMo Framework Launcher comprend des recettes complètes, des scripts, des utilitaires et de la documentation pour la formation des NeMo LLM. Il comprend également le NeMo Framework Autoconfigurator, conçu pour trouver la configuration parallèle de modèle optimale pour la formation sur un cluster spécifique.
Pour démarrer rapidement avec le NeMo Framework Launcher, veuillez consulter les Playbooks NeMo Framework. Le NeMo Framework Launcher ne prend actuellement pas en charge les formations ASR et TTS, mais il le fera bientôt.
Démarrer avec NeMo Framework est simple. Les modèles NeMo pré-entraînés de pointe sont disponibles gratuitement sur Hugging Face Hub et NVIDIA NGC. Ces modèles peuvent être utilisés pour générer du texte ou des images, transcrire de l'audio et synthétiser la parole en quelques lignes de code seulement.
Nous proposons des didacticiels complets qui peuvent être exécutés sur Google Colab ou avec notre conteneur NGC NeMo Framework. Nous proposons également des playbooks pour les utilisateurs qui souhaitent entraîner des modèles NeMo avec le NeMo Framework Launcher.
Pour les utilisateurs avancés qui souhaitent entraîner des modèles NeMo à partir de zéro ou affiner les modèles NeMo existants, nous disposons d'une suite complète d'exemples de scripts prenant en charge la formation multi-GPU/multi-nœuds.
Version | Statut | Description |
---|---|---|
Dernier | Documentation de la dernière branche (c'est-à-dire principale). | |
Écurie | Documentation de la stable (c'est-à-dire la version la plus récente) |
Le NeMo Framework peut être installé de différentes manières, en fonction de vos besoins. Selon le domaine, l'une des méthodes d'installation suivantes peut être plus adaptée.
Important : Nous vous recommandons fortement de commencer avec un conteneur NVIDIA PyTorch de base : nvcr.io/nvidia/pytorch:24.02-py3.
Installez NeMo dans un nouvel environnement Conda :
conda create --name nemo python==3.10.12
conda activate nemo
Installez PyTorch à l'aide de leur configurateur :
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
La commande pour installer PyTorch peut dépendre de votre système. Utilisez le configurateur lié ci-dessus pour trouver la bonne commande pour votre système.
Ensuite, installez NeMo via Pip ou depuis Source. Nous ne fournissons pas NeMo sur conda-forge ou sur tout autre canal Conda.
Pour installer nemo_toolkit, utilisez la méthode d'installation suivante :
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
pip install nemo_toolkit[ ' all ' ]
Selon le shell utilisé, vous devrez peut-être utiliser le spécificateur "nemo_toolkit[all]"
dans la commande ci-dessus.
Pour installer un domaine spécifique de NeMo, vous devez d'abord installer le nemo_toolkit en suivant les instructions répertoriées ci-dessus. Ensuite, vous exécutez les commandes spécifiques au domaine suivantes :
pip install nemo_toolkit[ ' asr ' ]
pip install nemo_toolkit[ ' nlp ' ]
pip install nemo_toolkit[ ' tts ' ]
pip install nemo_toolkit[ ' vision ' ]
pip install nemo_toolkit[ ' multimodal ' ]
Si vous souhaitez travailler avec une version spécifique de NeMo à partir d'une branche GitHub particulière (par exemple principale), utilisez la méthode d'installation suivante :
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
python -m pip install git+https://github.com/NVIDIA/NeMo.git@{BRANCH} # egg=nemo_toolkit[all]
Si vous souhaitez cloner le référentiel NeMo GitHub et contribuer au travail de développement open source de NeMo, utilisez la méthode d'installation suivante :
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Si vous souhaitez uniquement la boîte à outils sans les dépendances supplémentaires basées sur Conda, vous pouvez remplacer reinstall.sh
par pip install -e .
lorsque votre PWD est la racine du référentiel NeMo.
Pour installer NeMo sur des ordinateurs Mac équipés du GPU Apple M-Series, vous devez créer un nouvel environnement Conda, installer PyTorch 2.0 ou supérieur, puis installer nemo_toolkit.
Important : Cette méthode s'applique uniquement au domaine ASR.
Exécutez le code suivant :
# [optional] install mecab using Homebrew, to use sacrebleu for NLP collection
# you can install Homebrew here: https://brew.sh
brew install mecab
# [optional] install pynini using Conda, to use text normalization
conda install -c conda-forge pynini
# install Cython manually
pip install cython packaging
# clone the repo and install in development mode
git clone https://github.com/NVIDIA/NeMo
cd NeMo
pip install ' nemo_toolkit[all] '
# Note that only the ASR toolkit is guaranteed to work on MacBook - so for MacBook use pip install 'nemo_toolkit[asr]'
Pour installer le sous-système Windows pour Linux (WSL), exécutez le code suivant dans PowerShell :
wsl --install
# [note] If you run wsl --install and see the WSL help text, it means WSL is already installed.
Pour en savoir plus sur l'installation de WSL, reportez-vous à la documentation officielle de Microsoft.
Après avoir installé votre distribution Linux avec WSL, deux options s'offrent à vous :
Option 1 : Ouvrez la distribution (Ubuntu par défaut) depuis le menu Démarrer et suivez les instructions.
Option 2 : Lancez l'application Terminal. Téléchargez-le depuis la page du terminal Windows de Microsoft s'il n'est pas installé.
Ensuite, suivez les instructions pour les systèmes Linux, comme indiqué ci-dessus. Par exemple:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Pour des performances optimales d'un transducteur de réseau neuronal récurrent (RNNT), installez le package Numba de Conda.
Exécutez le code suivant :
conda remove numba
pip uninstall numba
conda install -c conda-forge numba
Si vous travaillez avec les domaines LLM et MM, trois dépendances supplémentaires sont requises : NVIDIA Apex, NVIDIA Transformer Engine et NVIDIA Megatron Core. Lorsque vous travaillez avec la branche [main]{.title-ref}, ces dépendances peuvent nécessiter une validation récente.
Les versions fonctionnelles les plus récentes de ces dépendances sont ici :
export apex_commit=810ffae374a2b9cb4b5c5e28eaeca7d7998fca0c
export te_commit=bfe21c3d68b0a9951e5716fb520045db53419c5e
export mcore_commit=02871b4df8c69fac687ab6676c4246e936ce92d0
export nv_pytorch_tag=24.02-py3
Lorsque vous utilisez une version publiée de NeMo, veuillez vous référer aux versions des composants logiciels pour connaître les versions correctes.
Nous vous recommandons de commencer avec un conteneur NVIDIA PyTorch de base : nvcr.io/nvidia/pytorch:24.02-py3.
Si vous démarrez avec un conteneur NVIDIA PyTorch de base, vous devez d'abord lancer le conteneur :
docker run
--gpus all
-it
--rm
--shm-size=16g
--ulimit memlock=-1
--ulimit stack=67108864
nvcr.io/nvidia/pytorch: $nv_pytorch_tag
Ensuite, vous devez installer les dépendances.
NVIDIA Apex est requis pour les domaines LLM et MM. Bien qu'Apex soit préinstallé dans le conteneur NVIDIA PyTorch, vous devrez peut-être le mettre à jour vers une version plus récente.
Pour installer Apex, exécutez le code suivant :
git clone https://github.com/NVIDIA/apex.git
cd apex
git checkout $apex_commit
pip install . -v --no-build-isolation --disable-pip-version-check --no-cache-dir --config-settings " --build-option=--cpp_ext --cuda_ext --fast_layer_norm --distributed_adam --deprecated_fused_adam --group_norm "
Lorsque vous tentez d'installer Apex séparément du conteneur NVIDIA PyTorch, vous pouvez rencontrer une erreur si la version CUDA sur votre système est différente de celle utilisée pour compiler PyTorch. Pour contourner cette erreur, vous pouvez commenter la ligne correspondante dans le fichier d'installation situé dans le référentiel Apex sur GitHub ici : https://github.com/NVIDIA/apex/blob/master/setup.py#L32.
cuda-nvprof est nécessaire pour installer Apex. La version doit correspondre à la version CUDA que vous utilisez.
Pour installer cuda-nvprof, exécutez le code suivant :
conda install -c nvidia cuda-nvprof=11.8
Enfin, installez le packaging :
pip install packaging
Pour installer localement les versions les plus récentes d'Apex, il peut être nécessaire de supprimer le fichier [pyproject.toml]{.title-ref} du répertoire Apex.
NVIDIA Transformer Engine est requis pour les domaines LLM et MM. Bien que Transformer Engine soit préinstallé dans le conteneur NVIDIA PyTorch, vous devrez peut-être le mettre à jour vers une version plus récente.
Le Transformer Engine facilite la formation avec la précision FP8 sur les GPU NVIDIA Hopper et introduit de nombreuses améliorations pour la formation des modèles basés sur Transformer. Reportez-vous à Transformer Engine pour plus d’informations.
Pour installer Transformer Engine, exécutez le code suivant :
git clone https://github.com/NVIDIA/TransformerEngine.git &&
cd TransformerEngine &&
git checkout $te_commit &&
git submodule init && git submodule update &&
NVTE_FRAMEWORK=pytorch NVTE_WITH_USERBUFFERS=1 MPI_HOME=/usr/local/mpi pip install .
Transformer Engine nécessite que PyTorch soit construit avec au moins CUDA 11.8.
Megatron Core est requis pour les domaines LLM et MM. Megatron Core est une bibliothèque permettant de mettre à l'échelle de grands modèles basés sur Transformer. Les LLM et MM NeMo exploitent Megatron Core pour le parallélisme des modèles, les architectures de transformateurs et les ensembles de données PyTorch optimisés.
Pour installer Megatron Core, exécutez le code suivant :
git clone https://github.com/NVIDIA/Megatron-LM.git &&
cd Megatron-LM &&
git checkout $mcore_commit &&
pip install . &&
cd megatron/core/datasets &&
make
Le traitement de texte NeMo, en particulier la normalisation de texte inverse, est désormais un référentiel distinct. Il se trouve ici : https://github.com/NVIDIA/NeMo-text-processing.
Les conteneurs NeMo sont lancés en même temps que les mises à jour de version NeMo. NeMo Framework prend désormais en charge les LLM, MM, ASR et TTS dans un seul conteneur Docker consolidé. Vous pouvez trouver des informations supplémentaires sur les conteneurs publiés sur la page des versions de NeMo.
Pour utiliser un conteneur prédéfini, exécutez le code suivant :
docker pull nvcr.io/nvidia/nemo:24.05
Pour créer un conteneur Nemo avec Dockerfile à partir d'une branche, exécutez le code suivant :
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest
Si vous choisissez de travailler avec la branche principale, nous vous recommandons d'utiliser la version 23.10-py3 du conteneur PyTorch de NVIDIA, puis de l'installer à partir de GitHub.
docker run --gpus all -it --rm -v < nemo_github_folder > :/NeMo --shm-size=8g
-p 8888:8888 -p 6006:6006 --ulimit memlock=-1 --ulimit
stack=67108864 --device=/dev/snd nvcr.io/nvidia/pytorch:23.10-py3
Le NeMo Framework Launcher ne prend actuellement pas en charge les formations ASR et TTS, mais il le fera bientôt.
La FAQ peut être trouvée sur le forum de discussion NeMo. Vous êtes invités à poser des questions ou à lancer des discussions au sein du tableau.
Nous apprécions les contributions de la communauté ! Veuillez vous référer à CONTRIBUTING.md pour le processus.
Nous fournissons une liste toujours croissante de publications qui utilisent le framework NeMo.
Pour contribuer un article à la collection, veuillez soumettre une pull request à la branche gh-pages-src
de ce référentiel. Pour des informations détaillées, veuillez consulter le README situé dans la branche gh-pages-src.