NVIDIA NeMo Framework ist ein skalierbares und cloudnatives generatives KI-Framework, das für Forscher und PyTorch-Entwickler entwickelt wurde, die an Large Language Models (LLMs), Multimodal Models (MMs), Automatic Speech Recognition (ASR), Text to Speech (TTS) und Computer arbeiten Vision-Domänen (CV). Es soll Ihnen dabei helfen, neue generative KI-Modelle effizient zu erstellen, anzupassen und bereitzustellen, indem es vorhandenen Code und vorab trainierte Modellprüfpunkte nutzt.
Technische Dokumentation finden Sie im NeMo Framework-Benutzerhandbuch.
NVIDIA NeMo 2.0 führt gegenüber seinem Vorgänger NeMo 1.0 mehrere bedeutende Verbesserungen ein und verbessert die Flexibilität, Leistung und Skalierbarkeit.
Python-basierte Konfiguration – NeMo 2.0 wechselt von YAML-Dateien zu einer Python-basierten Konfiguration und bietet so mehr Flexibilität und Kontrolle. Diese Verschiebung erleichtert das programmgesteuerte Erweitern und Anpassen von Konfigurationen.
Modulare Abstraktionen – Durch die Übernahme der modularen Abstraktionen von PyTorch Lightning vereinfacht NeMo 2.0 die Anpassung und das Experimentieren. Dieser modulare Ansatz ermöglicht es Entwicklern, verschiedene Komponenten ihrer Modelle einfacher zu modifizieren und damit zu experimentieren.
Skalierbarkeit – NeMo 2.0 skaliert nahtlos groß angelegte Experimente auf Tausenden von GPUs mit NeMo-Run, einem leistungsstarken Tool, das zur Optimierung der Konfiguration, Ausführung und Verwaltung von Experimenten zum maschinellen Lernen in verschiedenen Computerumgebungen entwickelt wurde.
Insgesamt machen diese Verbesserungen NeMo 2.0 zu einem leistungsstarken, skalierbaren und benutzerfreundlichen Framework für die KI-Modellentwicklung.
Wichtig
NeMo 2.0 wird derzeit von den Sammlungen LLM (Large Language Model) und VLM (Vision Language Model) unterstützt.
Alle NeMo-Modelle werden mit Lightning trainiert. Das Training ist automatisch auf Tausende von GPUs skalierbar.
Gegebenenfalls nutzen NeMo-Modelle modernste verteilte Trainingstechniken und integrieren Parallelitätsstrategien, um ein effizientes Training sehr großer Modelle zu ermöglichen. Zu diesen Techniken gehören Tensor-Parallelität (TP), Pipeline-Parallelität (PP), Fully Sharded Data Parallelism (FSDP), Mixture-of-Experts (MoE) und Mixed Precision Training mit BFloat16 und FP8 sowie andere.
NeMo Transformer-basierte LLMs und MMs nutzen die NVIDIA Transformer Engine für das FP8-Training auf NVIDIA Hopper-GPUs und nutzen gleichzeitig NVIDIA Megatron Core für die Skalierung des Transformer-Modelltrainings.
NeMo LLMs können mit modernsten Methoden wie SteerLM, Direct Preference Optimization (DPO) und Reinforcement Learning from Human Feedback (RLHF) abgeglichen werden. Weitere Informationen finden Sie unter NVIDIA NeMo Aligner.
Zusätzlich zur überwachten Feinabstimmung (SFT) unterstützt NeMo auch die neuesten Techniken zur Parametereffizienten Feinabstimmung (PEFT) wie LoRA, P-Tuning, Adapter und IA3. Die vollständige Liste der unterstützten Modelle und Techniken finden Sie im NeMo Framework-Benutzerhandbuch.
NeMo LLMs und MMs können mit NVIDIA NeMo Microservices bereitgestellt und optimiert werden.
NeMo ASR- und TTS-Modelle können für Inferenz optimiert und mit NVIDIA Riva für Produktionsanwendungsfälle bereitgestellt werden.
Wichtig
NeMo Framework Launcher ist nur mit NeMo Version 1.0 kompatibel. NeMo-Run wird zum Starten von Experimenten mit NeMo 2.0 empfohlen.
NeMo Framework Launcher ist ein Cloud-natives Tool, das das NeMo Framework-Erlebnis optimiert. Es wird zum Starten von End-to-End-Trainingsjobs für das NeMo Framework auf CSPs und Slurm-Clustern verwendet.
Der NeMo Framework Launcher enthält umfangreiche Rezepte, Skripte, Dienstprogramme und Dokumentation zum Training von NeMo LLMs. Es enthält auch den NeMo Framework Autoconfigurator, der darauf ausgelegt ist, die optimale modellparallele Konfiguration für das Training auf einem bestimmten Cluster zu finden.
Um schnell mit dem NeMo Framework Launcher zu beginnen, lesen Sie bitte die NeMo Framework Playbooks. Der NeMo Framework Launcher unterstützt derzeit kein ASR- und TTS-Training, wird dies aber bald tun.
Der Einstieg in das NeMo Framework ist einfach. Hochmoderne vortrainierte NeMo-Modelle sind auf Hugging Face Hub und NVIDIA NGC kostenlos verfügbar. Diese Modelle können verwendet werden, um Text oder Bilder zu generieren, Audio zu transkribieren und Sprache in nur wenigen Codezeilen zu synthetisieren.
Wir verfügen über umfangreiche Tutorials, die auf Google Colab oder mit unserem NGC NeMo Framework Container ausgeführt werden können. Wir haben auch Playbooks für Benutzer, die NeMo-Modelle mit dem NeMo Framework Launcher trainieren möchten.
Für fortgeschrittene Benutzer, die NeMo-Modelle von Grund auf trainieren oder vorhandene NeMo-Modelle verfeinern möchten, bieten wir eine vollständige Suite von Beispielskripten an, die das Multi-GPU-/Multi-Node-Training unterstützen.
Version | Status | Beschreibung |
---|---|---|
Letzte | Dokumentation des neuesten (dh Haupt-)Zweigs. | |
Stabil | Dokumentation der stabilen Version (d. h. der neuesten Version) |
Das NeMo Framework kann je nach Bedarf auf verschiedene Arten installiert werden. Abhängig von der Domäne finden Sie möglicherweise eine der folgenden Installationsmethoden geeigneter.
Wichtig: Wir empfehlen dringend, mit einem Basis-NVIDIA-PyTorch-Container zu beginnen: nvcr.io/nvidia/pytorch:24.02-py3.
Installieren Sie NeMo in einer neuen Conda-Umgebung:
conda create --name nemo python==3.10.12
conda activate nemo
Installieren Sie PyTorch mit ihrem Konfigurator:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
Der Befehl zum Installieren von PyTorch kann von Ihrem System abhängen. Nutzen Sie den oben verlinkten Konfigurator, um den passenden Befehl für Ihr System zu finden.
Installieren Sie dann NeMo über Pip oder von Source. Wir bieten NeMo nicht auf Conda-Forge oder einem anderen Conda-Kanal an.
Um das nemo_toolkit zu installieren, verwenden Sie die folgende Installationsmethode:
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
pip install nemo_toolkit[ ' all ' ]
Abhängig von der verwendeten Shell müssen Sie möglicherweise stattdessen den Spezifizierer "nemo_toolkit[all]"
im obigen Befehl verwenden.
Um eine bestimmte Domäne von NeMo zu installieren, müssen Sie zunächst das nemo_toolkit mithilfe der oben aufgeführten Anweisungen installieren. Anschließend führen Sie die folgenden domänenspezifischen Befehle aus:
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 ' ]
Wenn Sie mit einer bestimmten Version von NeMo aus einem bestimmten GitHub-Zweig (z. B. Main) arbeiten möchten, verwenden Sie die folgende Installationsmethode:
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]
Wenn Sie das NeMo-GitHub-Repository klonen und zur Open-Source-Entwicklungsarbeit von NeMo beitragen möchten, verwenden Sie die folgende Installationsmethode:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Wenn Sie nur das Toolkit ohne die zusätzlichen Conda-basierten Abhängigkeiten möchten, können Sie reinstall.sh
durch pip install -e .
wenn Ihr PWD das Stammverzeichnis des NeMo-Repositorys ist.
Um NeMo auf Mac-Computern mit der Apple M-Series-GPU zu installieren, müssen Sie eine neue Conda-Umgebung erstellen, PyTorch 2.0 oder höher installieren und dann das nemo_toolkit installieren.
Wichtig: Diese Methode ist nur auf die ASR-Domäne anwendbar.
Führen Sie den folgenden Code aus:
# [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]'
Um das Windows-Subsystem für Linux (WSL) zu installieren, führen Sie den folgenden Code in PowerShell aus:
wsl --install
# [note] If you run wsl --install and see the WSL help text, it means WSL is already installed.
Weitere Informationen zur Installation von WSL finden Sie in der offiziellen Dokumentation von Microsoft.
Nach der Installation Ihrer Linux-Distribution mit WSL stehen zwei Optionen zur Verfügung:
Option 1: Öffnen Sie die Distribution (standardmäßig Ubuntu) über das Startmenü und folgen Sie den Anweisungen.
Option 2: Starten Sie die Terminalanwendung. Laden Sie es von der Windows-Terminal-Seite von Microsoft herunter, falls es nicht installiert ist.
Befolgen Sie anschließend die oben aufgeführten Anweisungen für Linux-Systeme. Zum Beispiel:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Für eine optimale Leistung eines Recurrent Neural Network Transducer (RNNT) installieren Sie das Numba-Paket von Conda.
Führen Sie den folgenden Code aus:
conda remove numba
pip uninstall numba
conda install -c conda-forge numba
Wenn Sie mit den LLM- und MM-Domänen arbeiten, sind drei zusätzliche Abhängigkeiten erforderlich: NVIDIA Apex, NVIDIA Transformer Engine und NVIDIA Megatron Core. Wenn Sie mit dem Zweig [main]{.title-ref} arbeiten, erfordern diese Abhängigkeiten möglicherweise ein aktuelles Commit.
Die aktuellsten Arbeitsversionen dieser Abhängigkeiten finden Sie hier:
export apex_commit=810ffae374a2b9cb4b5c5e28eaeca7d7998fca0c
export te_commit=bfe21c3d68b0a9951e5716fb520045db53419c5e
export mcore_commit=02871b4df8c69fac687ab6676c4246e936ce92d0
export nv_pytorch_tag=24.02-py3
Wenn Sie eine veröffentlichte Version von NeMo verwenden, sehen Sie sich bitte die korrekten Versionen in den Softwarekomponentenversionen an.
Wir empfehlen, mit einem Basis-NVIDIA-PyTorch-Container zu beginnen: nvcr.io/nvidia/pytorch:24.02-py3.
Wenn Sie mit einem Basis-NVIDIA-PyTorch-Container beginnen, müssen Sie zuerst den Container starten:
docker run
--gpus all
-it
--rm
--shm-size=16g
--ulimit memlock=-1
--ulimit stack=67108864
nvcr.io/nvidia/pytorch: $nv_pytorch_tag
Als nächstes müssen Sie die Abhängigkeiten installieren.
NVIDIA Apex ist für LLM- und MM-Domänen erforderlich. Obwohl Apex im NVIDIA PyTorch-Container vorinstalliert ist, müssen Sie es möglicherweise auf eine neuere Version aktualisieren.
Führen Sie den folgenden Code aus, um Apex zu installieren:
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 "
Wenn Sie versuchen, Apex getrennt vom NVIDIA PyTorch-Container zu installieren, tritt möglicherweise ein Fehler auf, wenn die CUDA-Version auf Ihrem System von der zum Kompilieren von PyTorch verwendeten Version abweicht. Um diesen Fehler zu umgehen, können Sie die entsprechende Zeile in der Setup-Datei im Apex-Repository auf GitHub hier auskommentieren: https://github.com/NVIDIA/apex/blob/master/setup.py#L32.
Für die Installation von Apex wird cuda-nvprof benötigt. Die Version sollte mit der von Ihnen verwendeten CUDA-Version übereinstimmen.
Um cuda-nvprof zu installieren, führen Sie den folgenden Code aus:
conda install -c nvidia cuda-nvprof=11.8
Installieren Sie abschließend die Verpackung:
pip install packaging
Um die neuesten Versionen von Apex lokal zu installieren, muss möglicherweise die Datei [pyproject.toml]{.title-ref} aus dem Apex-Verzeichnis entfernt werden.
Für LLM- und MM-Domänen ist die NVIDIA Transformer Engine erforderlich. Obwohl die Transformer Engine im NVIDIA PyTorch-Container vorinstalliert ist, müssen Sie sie möglicherweise auf eine neuere Version aktualisieren.
Die Transformer Engine erleichtert das Training mit FP8-Präzision auf NVIDIA Hopper-GPUs und führt viele Verbesserungen für das Training von Transformer-basierten Modellen ein. Weitere Informationen finden Sie unter Transformer Engine.
Führen Sie den folgenden Code aus, um Transformer Engine zu installieren:
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 erfordert, dass PyTorch mit mindestens CUDA 11.8 erstellt wurde.
Megatron Core ist für LLM- und MM-Domänen erforderlich. Megatron Core ist eine Bibliothek zur Skalierung großer Transformer-basierter Modelle. NeMo LLMs und MMs nutzen Megatron Core für Modellparallelität, Transformatorarchitekturen und optimierte PyTorch-Datensätze.
Führen Sie den folgenden Code aus, um Megatron Core zu installieren:
git clone https://github.com/NVIDIA/Megatron-LM.git &&
cd Megatron-LM &&
git checkout $mcore_commit &&
pip install . &&
cd megatron/core/datasets &&
make
NeMo Text Processing, insbesondere Inverse Text Normalization, ist jetzt ein separates Repository. Es befindet sich hier: https://github.com/NVIDIA/NeMo-text-processing.
NeMo-Container werden gleichzeitig mit NeMo-Versionsaktualisierungen gestartet. NeMo Framework unterstützt jetzt LLMs, MMs, ASR und TTS in einem einzigen konsolidierten Docker-Container. Weitere Informationen zu freigegebenen Containern finden Sie auf der NeMo-Releases-Seite.
Um einen vorgefertigten Container zu verwenden, führen Sie den folgenden Code aus:
docker pull nvcr.io/nvidia/nemo:24.05
Um einen Nemo-Container mit Dockerfile aus einem Zweig zu erstellen, führen Sie den folgenden Code aus:
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest
Wenn Sie sich für die Arbeit mit dem Hauptzweig entscheiden, empfehlen wir die Verwendung des PyTorch-Containers von NVIDIA, Version 23.10-py3, und die anschließende Installation über 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
Der NeMo Framework Launcher unterstützt derzeit kein ASR- und TTS-Training, wird dies aber bald tun.
Häufig gestellte Fragen finden Sie im NeMo-Diskussionsforum. Gerne können Sie im Forum Fragen stellen oder Diskussionen starten.
Wir freuen uns über Community-Beiträge! Den Vorgang finden Sie unter CONTRIBUTING.md.
Wir bieten eine ständig wachsende Liste von Veröffentlichungen, die das NeMo Framework nutzen.
Um einen Artikel zur Sammlung beizutragen, senden Sie bitte eine Pull-Anfrage an den gh-pages-src
Zweig dieses Repositorys. Ausführliche Informationen finden Sie in der README-Datei im Zweig gh-pages-src.