NVIDIA NeMo Framework es un marco de IA generativo escalable y nativo de la nube creado para investigadores y desarrolladores de PyTorch que trabajan en modelos de lenguajes grandes (LLM), modelos multimodales (MM), reconocimiento automático de voz (ASR), texto a voz (TTS) y computadoras. Dominios de visión (CV). Está diseñado para ayudarlo a crear, personalizar e implementar de manera eficiente nuevos modelos de IA generativa aprovechando el código existente y los puntos de control de modelos previamente entrenados.
Para obtener documentación técnica, consulte la Guía del usuario de NeMo Framework.
NVIDIA NeMo 2.0 introduce varias mejoras significativas con respecto a su predecesor, NeMo 1.0, mejorando la flexibilidad, el rendimiento y la escalabilidad.
Configuración basada en Python : NeMo 2.0 realiza la transición de archivos YAML a una configuración basada en Python, lo que proporciona más flexibilidad y control. Este cambio facilita la ampliación y personalización de configuraciones mediante programación.
Abstracciones modulares : al adoptar las abstracciones modulares de PyTorch Lightning, NeMo 2.0 simplifica la adaptación y la experimentación. Este enfoque modular permite a los desarrolladores modificar y experimentar más fácilmente con diferentes componentes de sus modelos.
Escalabilidad : NeMo 2.0 escala sin problemas experimentos a gran escala en miles de GPU utilizando NeMo-Run, una potente herramienta diseñada para optimizar la configuración, ejecución y gestión de experimentos de aprendizaje automático en entornos informáticos.
En general, estas mejoras hacen de NeMo 2.0 un marco potente, escalable y fácil de usar para el desarrollo de modelos de IA.
Importante
Actualmente, NeMo 2.0 es compatible con las colecciones LLM (modelo de lenguaje grande) y VLM (modelo de lenguaje de visión).
Todos los modelos NeMo están entrenados con Lightning. La capacitación se puede escalar automáticamente a miles de GPU.
Cuando corresponde, los modelos NeMo aprovechan técnicas de capacitación distribuida de vanguardia, incorporando estrategias de paralelismo para permitir una capacitación eficiente de modelos muy grandes. Estas técnicas incluyen paralelismo tensorial (TP), paralelismo de canalización (PP), paralelismo de datos completamente fragmentados (FSDP), mezcla de expertos (MoE) y entrenamiento de precisión mixto con BFloat16 y FP8, entre otros.
Los LLM y MM basados en NeMo Transformer utilizan NVIDIA Transformer Engine para el entrenamiento del FP8 en las GPU NVIDIA Hopper, al tiempo que aprovechan NVIDIA Megatron Core para escalar el entrenamiento del modelo Transformer.
Los LLM de NeMo se pueden alinear con métodos de última generación como SteerLM, optimización de preferencias directas (DPO) y aprendizaje por refuerzo a partir de la retroalimentación humana (RLHF). Consulte NVIDIA NeMo Aligner para obtener más información.
Además del ajuste fino supervisado (SFT), NeMo también admite las últimas técnicas de ajuste fino eficiente de parámetros (PEFT), como LoRA, P-Tuning, Adaptadores e IA3. Consulte la Guía del usuario de NeMo Framework para obtener la lista completa de modelos y técnicas compatibles.
Los LLM y MM de NeMo se pueden implementar y optimizar con los microservicios de NVIDIA NeMo.
Los modelos NeMo ASR y TTS se pueden optimizar para inferencia e implementarse para casos de uso de producción con NVIDIA Riva.
Importante
NeMo Framework Launcher es compatible únicamente con la versión 1.0 de NeMo. Se recomienda NeMo-Run para iniciar experimentos con NeMo 2.0.
NeMo Framework Launcher es una herramienta nativa de la nube que optimiza la experiencia de NeMo Framework. Se utiliza para lanzar trabajos de capacitación de NeMo Framework de un extremo a otro en CSP y clústeres de Slurm.
NeMo Framework Launcher incluye recetas, scripts, utilidades y documentación extensas para capacitar a los LLM de NeMo. También incluye el configurador automático de NeMo Framework, que está diseñado para encontrar la configuración paralela del modelo óptimo para el entrenamiento en un clúster específico.
Para comenzar rápidamente con NeMo Framework Launcher, consulte los manuales de NeMo Framework. Actualmente, NeMo Framework Launcher no admite la capacitación ASR y TTS, pero pronto lo hará.
Comenzar a utilizar NeMo Framework es fácil. Los modelos NeMo previamente entrenados de última generación están disponibles gratuitamente en Hugging Face Hub y NVIDIA NGC. Estos modelos se pueden utilizar para generar texto o imágenes, transcribir audio y sintetizar voz en tan solo unas pocas líneas de código.
Contamos con extensos tutoriales que se pueden ejecutar en Google Colab o con nuestro NGC NeMo Framework Container. También tenemos manuales para usuarios que quieran entrenar modelos NeMo con NeMo Framework Launcher.
Para los usuarios avanzados que desean entrenar modelos NeMo desde cero o ajustar los modelos NeMo existentes, tenemos un conjunto completo de scripts de ejemplo que admiten el entrenamiento con múltiples GPU y múltiples nodos.
Versión | Estado | Descripción |
---|---|---|
El último | Documentación de la sucursal más reciente (es decir, principal). | |
Estable | Documentación del establo (es decir, la versión más reciente) |
NeMo Framework se puede instalar de diversas formas, según sus necesidades. Dependiendo del dominio, es posible que uno de los siguientes métodos de instalación le resulte más adecuado.
Importante: Le recomendamos encarecidamente que comience con un contenedor NVIDIA PyTorch básico: nvcr.io/nvidia/pytorch:24.02-py3.
Instale NeMo en un entorno Conda nuevo:
conda create --name nemo python==3.10.12
conda activate nemo
Instale PyTorch usando su configurador:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
El comando para instalar PyTorch puede depender de su sistema. Utilice el configurador vinculado anteriormente para encontrar el comando correcto para su sistema.
Luego, instale NeMo a través de Pip o desde Source. No proporcionamos NeMo en conda-forge ni en ningún otro canal de Conda.
Para instalar nemo_toolkit, utilice el siguiente método de instalación:
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
pip install nemo_toolkit[ ' all ' ]
Dependiendo del shell utilizado, es posible que necesites utilizar el especificador "nemo_toolkit[all]"
en el comando anterior.
Para instalar un dominio específico de NeMo, primero debe instalar nemo_toolkit siguiendo las instrucciones enumeradas anteriormente. Luego, ejecuta los siguientes comandos específicos del dominio:
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 desea trabajar con una versión específica de NeMo desde una rama particular de GitHub (por ejemplo, principal), utilice el siguiente método de instalación:
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 desea clonar el repositorio NeMo GitHub y contribuir al trabajo de desarrollo de código abierto de NeMo, utilice el siguiente método de instalación:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Si solo desea el kit de herramientas sin las dependencias adicionales basadas en Conda, puede reemplazar reinstall.sh
con pip install -e .
cuando su PWD es la raíz del repositorio de NeMo.
Para instalar NeMo en computadoras Mac con la GPU Apple M-Series, debe crear un nuevo entorno Conda, instalar PyTorch 2.0 o superior y luego instalar nemo_toolkit.
Importante: este método solo es aplicable al dominio ASR.
Ejecute el siguiente código:
# [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]'
Para instalar el Subsistema de Windows para Linux (WSL), ejecute el siguiente código en PowerShell:
wsl --install
# [note] If you run wsl --install and see the WSL help text, it means WSL is already installed.
Para obtener más información sobre la instalación de WSL, consulte la documentación oficial de Microsoft.
Después de instalar su distribución de Linux con WSL, hay dos opciones disponibles:
Opción 1: Abra la distribución (Ubuntu por defecto) desde el menú Inicio y siga las instrucciones.
Opción 2: inicie la aplicación Terminal. Descárguelo desde la página Terminal de Windows de Microsoft si no está instalado.
A continuación, siga las instrucciones para sistemas Linux, como se indica arriba. Por ejemplo:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Para un rendimiento óptimo de un transductor de red neuronal recurrente (RNNT), instale el paquete Numba de Conda.
Ejecute el siguiente código:
conda remove numba
pip uninstall numba
conda install -c conda-forge numba
Si trabaja con los dominios LLM y MM, se requieren tres dependencias adicionales: NVIDIA Apex, NVIDIA Transformer Engine y NVIDIA Megatron Core. Cuando se trabaja con la rama [main]{.title-ref}, estas dependencias pueden requerir una confirmación reciente.
Las versiones funcionales más recientes de estas dependencias están aquí:
export apex_commit=810ffae374a2b9cb4b5c5e28eaeca7d7998fca0c
export te_commit=bfe21c3d68b0a9951e5716fb520045db53419c5e
export mcore_commit=02871b4df8c69fac687ab6676c4246e936ce92d0
export nv_pytorch_tag=24.02-py3
Cuando utilice una versión publicada de NeMo, consulte las Versiones de los componentes del software para conocer las versiones correctas.
Le recomendamos que comience con un contenedor básico de NVIDIA PyTorch: nvcr.io/nvidia/pytorch:24.02-py3.
Si comienza con un contenedor NVIDIA PyTorch básico, primero debe iniciar el contenedor:
docker run
--gpus all
-it
--rm
--shm-size=16g
--ulimit memlock=-1
--ulimit stack=67108864
nvcr.io/nvidia/pytorch: $nv_pytorch_tag
A continuación, debe instalar las dependencias.
Se requiere NVIDIA Apex para los dominios LLM y MM. Aunque Apex está preinstalado en el contenedor NVIDIA PyTorch, es posible que deba actualizarlo a una versión más reciente.
Para instalar Apex, ejecute el siguiente código:
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 "
Al intentar instalar Apex por separado del contenedor NVIDIA PyTorch, es posible que encuentre un error si la versión CUDA en su sistema es diferente de la utilizada para compilar PyTorch. Para evitar este error, puede comentar la línea correspondiente en el archivo de configuración ubicado en el repositorio de Apex en GitHub aquí: https://github.com/NVIDIA/apex/blob/master/setup.py#L32.
Se necesita cuda-nvprof para instalar Apex. La versión debe coincidir con la versión CUDA que está utilizando.
Para instalar cuda-nvprof, ejecute el siguiente código:
conda install -c nvidia cuda-nvprof=11.8
Finalmente, instale el embalaje:
pip install packaging
Para instalar las versiones más recientes de Apex localmente, puede que sea necesario eliminar el archivo [pyproject.toml]{.title-ref} del directorio de Apex.
Se requiere NVIDIA Transformer Engine para los dominios LLM y MM. Aunque Transformer Engine está preinstalado en el contenedor NVIDIA PyTorch, es posible que deba actualizarlo a una versión más reciente.
Transformer Engine facilita el entrenamiento con precisión FP8 en las GPU NVIDIA Hopper e introduce muchas mejoras para el entrenamiento de modelos basados en Transformer. Consulte Transformer Engine para obtener información.
Para instalar Transformer Engine, ejecute el siguiente código:
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 requiere que PyTorch esté construido con al menos CUDA 11.8.
Se requiere Megatron Core para los dominios LLM y MM. Megatron Core es una biblioteca para escalar grandes modelos basados en Transformer. Los LLM y MM de NeMo aprovechan Megatron Core para el paralelismo de modelos, arquitecturas de transformadores y conjuntos de datos optimizados de PyTorch.
Para instalar Megatron Core, ejecute el siguiente código:
git clone https://github.com/NVIDIA/Megatron-LM.git &&
cd Megatron-LM &&
git checkout $mcore_commit &&
pip install . &&
cd megatron/core/datasets &&
make
El procesamiento de texto NeMo, específicamente la normalización de texto inverso, es ahora un repositorio separado. Se encuentra aquí: https://github.com/NVIDIA/NeMo-text-processing.
Los contenedores NeMo se lanzan simultáneamente con las actualizaciones de la versión NeMo. NeMo Framework ahora admite LLM, MM, ASR y TTS en un único contenedor Docker consolidado. Puede encontrar información adicional sobre los contenedores liberados en la página de lanzamientos de NeMo.
Para utilizar un contenedor prediseñado, ejecute el siguiente código:
docker pull nvcr.io/nvidia/nemo:24.05
Para construir un contenedor nemo con Dockerfile desde una rama, ejecute el siguiente código:
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest
Si elige trabajar con la rama principal, le recomendamos utilizar el contenedor PyTorch de NVIDIA versión 23.10-py3 y luego instalarlo desde 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
Actualmente, NeMo Framework Launcher no admite la capacitación ASR y TTS, pero pronto lo hará.
Las preguntas frecuentes se pueden encontrar en el foro de debates de NeMo. Le invitamos a hacer preguntas o iniciar debates en el foro.
¡Agradecemos las contribuciones de la comunidad! Consulte CONTRIBUTING.md para conocer el proceso.
Proporcionamos una lista cada vez mayor de publicaciones que utilizan NeMo Framework.
Para contribuir con un artículo a la colección, envíe una solicitud de extracción a la rama gh-pages-src
de este repositorio. Para obtener información detallada, consulte el archivo README ubicado en la sucursal de gh-pages-src.