NVIDIA NeMo Framework é uma estrutura de IA generativa escalável e nativa da nuvem desenvolvida para pesquisadores e desenvolvedores PyTorch que trabalham em modelos de linguagem grande (LLMs), modelos multimodais (MMs), reconhecimento automático de fala (ASR), texto em fala (TTS) e computador Domínios de visão (CV). Ele foi projetado para ajudá-lo a criar, personalizar e implantar com eficiência novos modelos generativos de IA, aproveitando o código existente e os pontos de verificação de modelo pré-treinados.
Para documentação técnica, consulte o Guia do usuário do NeMo Framework.
NVIDIA NeMo 2.0 apresenta diversas melhorias significativas em relação ao seu antecessor, NeMo 1.0, melhorando a flexibilidade, o desempenho e a escalabilidade.
Configuração baseada em Python - O NeMo 2.0 faz a transição de arquivos YAML para uma configuração baseada em Python, proporcionando mais flexibilidade e controle. Essa mudança torna mais fácil estender e personalizar configurações de forma programática.
Abstrações Modulares - Ao adotar as abstrações modulares do PyTorch Lightning, o NeMo 2.0 simplifica a adaptação e a experimentação. Essa abordagem modular permite que os desenvolvedores modifiquem e experimentem com mais facilidade diferentes componentes de seus modelos.
Escalabilidade - O NeMo 2.0 dimensiona perfeitamente experimentos em larga escala em milhares de GPUs usando o NeMo-Run, uma ferramenta poderosa projetada para agilizar a configuração, a execução e o gerenciamento de experimentos de aprendizado de máquina em ambientes de computação.
No geral, essas melhorias tornam o NeMo 2.0 uma estrutura poderosa, escalável e fácil de usar para o desenvolvimento de modelos de IA.
Importante
NeMo 2.0 é atualmente suportado pelas coleções LLM (modelo de linguagem grande) e VLM (modelo de linguagem de visão).
Todos os modelos NeMo são treinados com Lightning. O treinamento é automaticamente escalonável para milhares de GPUs.
Quando aplicável, os modelos NeMo aproveitam técnicas de treinamento distribuídas de ponta, incorporando estratégias de paralelismo para permitir o treinamento eficiente de modelos muito grandes. Essas técnicas incluem paralelismo de tensor (TP), paralelismo de pipeline (PP), paralelismo de dados totalmente fragmentados (FSDP), mistura de especialistas (MoE) e treinamento de precisão mista com BFloat16 e FP8, entre outras.
LLMs e MMs baseados em NeMo Transformer utilizam NVIDIA Transformer Engine para treinamento FP8 em GPUs NVIDIA Hopper, enquanto aproveitam NVIDIA Megatron Core para dimensionar o treinamento de modelo Transformer.
NeMo LLMs podem ser alinhados com métodos de última geração, como SteerLM, Direct Preference Optimization (DPO) e Reinforcement Learning from Human Feedback (RLHF). Consulte Alinhador NVIDIA NeMo para obter mais informações.
Além do ajuste fino supervisionado (SFT), o NeMo também suporta as mais recentes técnicas de ajuste fino com eficiência de parâmetros (PEFT), como LoRA, P-Tuning, Adaptadores e IA3. Consulte o Guia do usuário do NeMo Framework para obter a lista completa de modelos e técnicas suportadas.
NeMo LLMs e MMs podem ser implantados e otimizados com microsserviços NVIDIA NeMo.
Os modelos NeMo ASR e TTS podem ser otimizados para inferência e implantados para casos de uso de produção com NVIDIA Riva.
Importante
O NeMo Framework Launcher é compatível apenas com o NeMo versão 1.0. NeMo-Run é recomendado para lançar experimentos usando NeMo 2.0.
NeMo Framework Launcher é uma ferramenta nativa da nuvem que agiliza a experiência do NeMo Framework. Ele é usado para lançar trabalhos de treinamento completos do NeMo Framework em CSPs e clusters Slurm.
O NeMo Framework Launcher inclui extensas receitas, scripts, utilitários e documentação para treinar NeMo LLMs. Ele também inclui o NeMo Framework Autoconfigurator, que foi projetado para encontrar a configuração paralela do modelo ideal para treinamento em um cluster específico.
Para começar rapidamente com o NeMo Framework Launcher, consulte os Playbooks do NeMo Framework. O NeMo Framework Launcher atualmente não oferece suporte ao treinamento ASR e TTS, mas o fará em breve.
Começar a usar o NeMo Framework é fácil. Modelos NeMo pré-treinados de última geração estão disponíveis gratuitamente no Hugging Face Hub e no NVIDIA NGC. Esses modelos podem ser usados para gerar texto ou imagens, transcrever áudio e sintetizar fala em apenas algumas linhas de código.
Temos tutoriais extensos que podem ser executados no Google Colab ou com nosso NGC NeMo Framework Container. Também temos manuais para usuários que desejam treinar modelos NeMo com o NeMo Framework Launcher.
Para usuários avançados que desejam treinar modelos NeMo do zero ou ajustar modelos NeMo existentes, temos um conjunto completo de scripts de exemplo que suportam treinamento multi-GPU/multi-nós.
Versão | Status | Descrição |
---|---|---|
Mais recente | Documentação da filial mais recente (ou seja, principal). | |
Estável | Documentação do estável (ou seja, versão mais recente) |
O NeMo Framework pode ser instalado de diversas maneiras, dependendo de suas necessidades. Dependendo do domínio, você pode achar um dos seguintes métodos de instalação mais adequados.
Importante: Recomendamos fortemente que você comece com um contêiner NVIDIA PyTorch básico: nvcr.io/nvidia/pytorch:24.02-py3.
Instale o NeMo em um novo ambiente Conda:
conda create --name nemo python==3.10.12
conda activate nemo
Instale o PyTorch usando seu configurador:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
O comando para instalar o PyTorch pode depender do seu sistema. Use o configurador vinculado acima para encontrar o comando certo para o seu sistema.
Em seguida, instale o NeMo via Pip ou da fonte. Não fornecemos NeMo no conda-forge ou em qualquer outro canal Conda.
Para instalar o nemo_toolkit, use o seguinte método de instalação:
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
pip install nemo_toolkit[ ' all ' ]
Dependendo do shell usado, pode ser necessário usar o especificador "nemo_toolkit[all]"
no comando acima.
Para instalar um domínio específico do NeMo, você deve primeiro instalar o nemo_toolkit usando as instruções listadas acima. Em seguida, você executa os seguintes comandos específicos do domínio:
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 ' ]
Se você deseja trabalhar com uma versão específica do NeMo de uma ramificação específica do GitHub (por exemplo, principal), use o seguinte método de instalação:
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]
Se você deseja clonar o repositório NeMo GitHub e contribuir para o trabalho de desenvolvimento de código aberto do NeMo, use o seguinte método de instalação:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Se você quiser apenas o kit de ferramentas sem as dependências adicionais baseadas em Conda, poderá substituir reinstall.sh
por pip install -e .
quando seu PWD é a raiz do repositório NeMo.
Para instalar o NeMo em computadores Mac com GPU Apple M-Series, você precisa criar um novo ambiente Conda, instalar o PyTorch 2.0 ou superior e, em seguida, instalar o nemo_toolkit.
Importante: Este método só é aplicável ao domínio ASR.
Execute o seguinte 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 o Windows Subsystem for Linux (WSL), execute o seguinte código no PowerShell:
wsl --install
# [note] If you run wsl --install and see the WSL help text, it means WSL is already installed.
Para saber mais sobre como instalar o WSL, consulte a documentação oficial da Microsoft.
Depois de instalar sua distribuição Linux com WSL, duas opções estarão disponíveis:
Opção 1: Abra a distribuição (Ubuntu por padrão) no menu Iniciar e siga as instruções.
Opção 2: inicie o aplicativo Terminal. Baixe-o na página do Terminal do Windows da Microsoft, se não estiver instalado.
A seguir, siga as instruções para sistemas Linux, conforme fornecido acima. Por exemplo:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
Para obter desempenho ideal de um Transdutor de Rede Neural Recorrente (RNNT), instale o pacote Numba do Conda.
Execute o seguinte código:
conda remove numba
pip uninstall numba
conda install -c conda-forge numba
Se você trabalha com os domínios LLM e MM, são necessárias três dependências adicionais: NVIDIA Apex, NVIDIA Transformer Engine e NVIDIA Megatron Core. Ao trabalhar com o branch [main]{.title-ref}, essas dependências podem exigir um commit recente.
As versões funcionais mais recentes dessas dependências estão aqui:
export apex_commit=810ffae374a2b9cb4b5c5e28eaeca7d7998fca0c
export te_commit=bfe21c3d68b0a9951e5716fb520045db53419c5e
export mcore_commit=02871b4df8c69fac687ab6676c4246e936ce92d0
export nv_pytorch_tag=24.02-py3
Ao usar uma versão lançada do NeMo, consulte as Versões dos Componentes de Software para obter as versões corretas.
Recomendamos que você comece com um contêiner NVIDIA PyTorch básico: nvcr.io/nvidia/pytorch:24.02-py3.
Se estiver começando com um contêiner NVIDIA PyTorch básico, você deverá primeiro iniciar o contêiner:
docker run
--gpus all
-it
--rm
--shm-size=16g
--ulimit memlock=-1
--ulimit stack=67108864
nvcr.io/nvidia/pytorch: $nv_pytorch_tag
Em seguida, você precisa instalar as dependências.
NVIDIA Apex é necessário para domínios LLM e MM. Embora o Apex esteja pré-instalado no contêiner NVIDIA PyTorch, pode ser necessário atualizá-lo para uma versão mais recente.
Para instalar o Apex, execute o seguinte 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 "
Ao tentar instalar o Apex separadamente do contêiner NVIDIA PyTorch, você poderá encontrar um erro se a versão CUDA em seu sistema for diferente daquela usada para compilar o PyTorch. Para contornar esse erro, você pode comentar a linha relevante no arquivo de configuração localizado no repositório Apex no GitHub aqui: https://github.com/NVIDIA/apex/blob/master/setup.py#L32.
cuda-nvprof é necessário para instalar o Apex. A versão deve corresponder à versão CUDA que você está usando.
Para instalar o cuda-nvprof, execute o seguinte código:
conda install -c nvidia cuda-nvprof=11.8
Por fim, instale a embalagem:
pip install packaging
Para instalar as versões mais recentes do Apex localmente, pode ser necessário remover o arquivo [pyproject.toml]{.title-ref} do diretório Apex.
NVIDIA Transformer Engine é necessário para domínios LLM e MM. Embora o Transformer Engine esteja pré-instalado no contêiner NVIDIA PyTorch, pode ser necessário atualizá-lo para uma versão mais recente.
O Transformer Engine facilita o treinamento com precisão FP8 em GPUs NVIDIA Hopper e introduz muitas melhorias para o treinamento de modelos baseados em Transformer. Consulte Transformer Engine para obter informações.
Para instalar o Transformer Engine, execute o seguinte 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 .
O Transformer Engine requer que o PyTorch seja construído com pelo menos CUDA 11.8.
Megatron Core é necessário para domínios LLM e MM. Megatron Core é uma biblioteca para dimensionar grandes modelos baseados em Transformer. NeMo LLMs e MMs aproveitam o Megatron Core para paralelismo de modelos, arquiteturas de transformadores e conjuntos de dados PyTorch otimizados.
Para instalar o Megatron Core, execute o seguinte 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
O Processamento de Texto NeMo, especificamente a Normalização de Texto Inversa, agora é um repositório separado. Ele está localizado aqui: https://github.com/NVIDIA/NeMo-text-processing.
Os contêineres NeMo são lançados simultaneamente com as atualizações de versão do NeMo. NeMo Framework agora oferece suporte a LLMs, MMs, ASR e TTS em um único contêiner Docker consolidado. Você pode encontrar informações adicionais sobre contêineres lançados na página de lançamentos do NeMo.
Para usar um contêiner pré-construído, execute o seguinte código:
docker pull nvcr.io/nvidia/nemo:24.05
Para construir um contêiner nemo com Dockerfile a partir de uma ramificação, execute o seguinte código:
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest
Se você optar por trabalhar com o branch principal, recomendamos usar o contêiner PyTorch da NVIDIA versão 23.10-py3 e depois instalar a partir do 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
O NeMo Framework Launcher atualmente não oferece suporte ao treinamento ASR e TTS, mas o fará em breve.
As perguntas frequentes podem ser encontradas no quadro de discussões do NeMo. Você está convidado a fazer perguntas ou iniciar discussões no quadro.
Aceitamos contribuições da comunidade! Consulte CONTRIBUTING.md para o processo.
Fornecemos uma lista cada vez maior de publicações que utilizam o NeMo Framework.
Para contribuir com um artigo para a coleção, envie uma solicitação pull para o branch gh-pages-src
deste repositório. Para informações detalhadas, consulte o README localizado na filial gh-pages-src.