NVIDIA NeMo Framework 是一个可扩展的云原生生成式 AI 框架,专为从事大型语言模型 (LLM)、多模态模型 (MM)、自动语音识别 (ASR)、文本到语音 (TTS) 和计算机工作的研究人员和 PyTorch 开发人员而构建视觉 (CV) 领域。它旨在帮助您利用现有代码和预先训练的模型检查点,高效地创建、定制和部署新的生成式 AI 模型。
有关技术文档,请参阅 NeMo 框架用户指南。
NVIDIA NeMo 2.0 相对于其前身 NeMo 1.0 进行了多项重大改进,增强了灵活性、性能和可扩展性。
基于 Python 的配置- NeMo 2.0 从 YAML 文件转换为基于 Python 的配置,提供了更大的灵活性和控制力。这种转变使得以编程方式扩展和自定义配置变得更加容易。
模块化抽象- 通过采用 PyTorch Lightning 的模块化抽象,NeMo 2.0 简化了适应和实验。这种模块化方法使开发人员能够更轻松地修改和试验模型的不同组件。
可扩展性- NeMo 2.0 使用 NeMo-Run 无缝扩展跨数千个 GPU 的大规模实验,NeMo-Run 是一款强大的工具,旨在简化跨计算环境的机器学习实验的配置、执行和管理。
总体而言,这些增强功能使 NeMo 2.0 成为强大、可扩展且用户友好的 AI 模型开发框架。
重要的
NeMo 2.0 目前由 LLM(大型语言模型)和 VLM(视觉语言模型)集合支持。
所有 NeMo 模型均使用 Lightning 进行训练。训练可自动扩展到数千个 GPU。
在适用时,NeMo 模型利用尖端的分布式训练技术,结合并行策略来实现大型模型的高效训练。这些技术包括张量并行 (TP)、管道并行 (PP)、完全分片数据并行 (FSDP)、专家混合 (MoE) 以及使用 BFloat16 和 FP8 的混合精度训练等。
基于 NeMo Transformer 的法学硕士和硕士利用 NVIDIA Transformer 引擎在 NVIDIA Hopper GPU 上进行 FP8 训练,同时利用 NVIDIA Megatron Core 扩展 Transformer 模型训练。
NeMo LLM 可以与 SteerLM、直接偏好优化 (DPO) 和人类反馈强化学习 (RLHF) 等最先进的方法结合起来。请参阅 NVIDIA NeMo Aligner 了解更多信息。
除了监督微调(SFT)之外,NeMo 还支持最新的参数高效微调(PEFT)技术,例如 LoRA、P-Tuning、Adapters 和 IA3。请参阅 NeMo 框架用户指南,了解支持的模型和技术的完整列表。
NeMo LLM 和 MM 可以使用 NVIDIA NeMo 微服务进行部署和优化。
NeMo ASR 和 TTS 模型可针对推理进行优化,并可通过 NVIDIA Riva 部署用于生产用例。
重要的
NeMo Framework Launcher 仅与 NeMo 1.0 版本兼容。建议使用 NeMo-Run 使用 NeMo 2.0 启动实验。
NeMo Framework Launcher 是一款云原生工具,可简化 NeMo Framework 体验。它用于在 CSP 和 Slurm 集群上启动端到端 NeMo Framework 训练作业。
NeMo Framework Launcher 包括用于培训 NeMo LLM 的大量配方、脚本、实用程序和文档。它还包括 NeMo 框架自动配置器,旨在找到在特定集群上进行训练的最佳模型并行配置。
要快速开始使用 NeMo Framework Launcher,请参阅 NeMo Framework Playbooks。 NeMo Framework Launcher 目前不支持 ASR 和 TTS 训练,但很快就会支持。
NeMo 框架的入门非常简单。 Hugging Face Hub 和 NVIDIA NGC 上免费提供最先进的预训练 NeMo 模型。这些模型可用于生成文本或图像、转录音频以及仅用几行代码即可合成语音。
我们有丰富的教程,可以在 Google Colab 或我们的 NGC NeMo 框架容器上运行。我们还为想要使用 NeMo Framework Launcher 训练 NeMo 模型的用户提供了剧本。
对于想要从头开始训练 NeMo 模型或微调现有 NeMo 模型的高级用户,我们提供了一整套支持多 GPU/多节点训练的示例脚本。
版本 | 地位 | 描述 |
---|---|---|
最新的 | 最新(即主)分支的文档。 | |
稳定的 | 稳定版本的文档(即最新版本) |
NeMo 框架可以根据您的需要以多种方式安装。根据域的不同,您可能会发现以下安装方法之一更合适。
重要提示:我们强烈建议您从基本 NVIDIA PyTorch 容器开始:nvcr.io/nvidia/pytorch:24.02-py3。
在全新的 Conda 环境中安装 NeMo:
conda create --name nemo python==3.10.12
conda activate nemo
使用其配置器安装 PyTorch:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
安装 PyTorch 的命令可能取决于您的系统。使用上面链接的配置器找到适合您的系统的命令。
然后,通过 Pip 或从源安装 NeMo。我们不在 conda-forge 或任何其他 Conda 渠道上提供 NeMo。
要安装nemo_toolkit,请使用以下安装方法:
apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython packaging
pip install nemo_toolkit[ ' all ' ]
根据所使用的 shell,您可能需要在上述命令中使用"nemo_toolkit[all]"
说明符。
要安装 NeMo 的特定域,您必须首先使用上面列出的说明安装 nemo_toolkit。然后,运行以下特定于域的命令:
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 ' ]
如果您想使用特定 GitHub 分支(例如 main)中的特定版本的 NeMo,请使用以下安装方法:
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]
如果您想克隆 NeMo GitHub 存储库并为 NeMo 开源开发工作做出贡献,请使用以下安装方法:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
如果您只想要该工具包而不需要额外的基于 Conda 的依赖项,则可以将reinstall.sh
替换为pip install -e .
当您的 PWD 是 NeMo 存储库的根时。
要在配备 Apple M 系列 GPU 的 Mac 计算机上安装 NeMo,您需要创建新的 Conda 环境,安装 PyTorch 2.0 或更高版本,然后安装 nemo_toolkit。
重要提示:此方法仅适用于ASR域。
运行以下代码:
# [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]'
要安装适用于 Linux 的 Windows 子系统 (WSL),请在 PowerShell 中运行以下代码:
wsl --install
# [note] If you run wsl --install and see the WSL help text, it means WSL is already installed.
要了解有关安装 WSL 的更多信息,请参阅 Microsoft 官方文档。
使用 WSL 安装 Linux 发行版后,有两个选项可用:
选项 1:从“开始”菜单打开发行版(默认为 Ubuntu)并按照说明进行操作。
选项 2:启动终端应用程序。如果未安装,请从 Microsoft 的 Windows Terminal 页面下载。
接下来,按照上面提供的 Linux 系统说明进行操作。例如:
apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh
为了获得循环神经网络传感器 (RNNT) 的最佳性能,请安装 Conda 的 Numba 软件包。
运行以下代码:
conda remove numba
pip uninstall numba
conda install -c conda-forge numba
如果您使用 LLM 和 MM 领域,则需要三个额外的依赖项:NVIDIA Apex、NVIDIA Transformer Engine 和 NVIDIA Megatron Core。使用 [main]{.title-ref} 分支时,这些依赖项可能需要最近提交。
这些依赖项的最新工作版本在这里:
export apex_commit=810ffae374a2b9cb4b5c5e28eaeca7d7998fca0c
export te_commit=bfe21c3d68b0a9951e5716fb520045db53419c5e
export mcore_commit=02871b4df8c69fac687ab6676c4246e936ce92d0
export nv_pytorch_tag=24.02-py3
使用 NeMo 的发布版本时,请参阅软件组件版本以获取正确的版本。
我们建议您从基本 NVIDIA PyTorch 容器开始:nvcr.io/nvidia/pytorch:24.02-py3。
如果从基本 NVIDIA PyTorch 容器开始,您必须首先启动该容器:
docker run
--gpus all
-it
--rm
--shm-size=16g
--ulimit memlock=-1
--ulimit stack=67108864
nvcr.io/nvidia/pytorch: $nv_pytorch_tag
接下来,您需要安装依赖项。
LLM 和 MM 领域需要 NVIDIA Apex。尽管 Apex 已预安装在 NVIDIA PyTorch 容器中,但您可能需要将其更新到较新的版本。
要安装 Apex,请运行以下代码:
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 "
当尝试与 NVIDIA PyTorch 容器分开安装 Apex 时,如果系统上的 CUDA 版本与用于编译 PyTorch 的版本不同,您可能会遇到错误。要绕过此错误,您可以在 GitHub 上的 Apex 存储库中注释掉安装文件中的相关行:https://github.com/NVIDIA/apex/blob/master/setup.py#L32。
安装 Apex 需要 cuda-nvprof。该版本应与您正在使用的 CUDA 版本匹配。
要安装 cuda-nvprof,请运行以下代码:
conda install -c nvidia cuda-nvprof=11.8
最后,安装包装:
pip install packaging
要在本地安装最新版本的 Apex,可能需要从 Apex 目录中删除 [pyproject.toml]{.title-ref} 文件。
LLM 和 MM 领域需要 NVIDIA Transformer Engine。尽管 Transformer Engine 已预安装在 NVIDIA PyTorch 容器中,但您可能需要将其更新到较新的版本。
Transformer 引擎有助于在 NVIDIA Hopper GPU 上进行 FP8 精度的训练,并为基于 Transformer 的模型的训练引入了许多增强功能。有关信息,请参阅变压器引擎。
要安装 Transformer Engine,请运行以下代码:
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 要求 PyTorch 至少使用 CUDA 11.8 构建。
LLM 和 MM 领域需要威震天核心。 Megatron Core 是一个用于扩展基于 Transformer 的大型模型的库。 NeMo LLM 和 MM 利用 Megatron Core 实现模型并行性、变压器架构和优化的 PyTorch 数据集。
要安装威震天核心,请运行以下代码:
git clone https://github.com/NVIDIA/Megatron-LM.git &&
cd Megatron-LM &&
git checkout $mcore_commit &&
pip install . &&
cd megatron/core/datasets &&
make
NeMo 文本处理,特别是逆文本标准化,现在是一个单独的存储库。它位于此处:https://github.com/NVIDIA/NeMo-text-processing。
NeMo 容器与 NeMo 版本更新同时启动。 NeMo Framework 现在在单个整合的 Docker 容器中支持 LLM、MM、ASR 和 TTS。您可以在 NeMo 版本页面上找到有关已发布容器的更多信息。
要使用预构建的容器,请运行以下代码:
docker pull nvcr.io/nvidia/nemo:24.05
要使用分支中的 Dockerfile 构建 nemo 容器,请运行以下代码:
DOCKER_BUILDKIT=1 docker build -f Dockerfile -t nemo:latest
如果您选择使用主分支,我们建议使用 NVIDIA 的 PyTorch 容器版本 23.10-py3,然后从 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
NeMo Framework Launcher 目前不支持 ASR 和 TTS 训练,但很快就会支持。
常见问题解答可以在 NeMo 讨论板上找到。欢迎您在论坛上提问或开始讨论。
我们欢迎社区贡献!流程请参考CONTRIBUTING.md。
我们提供了一个不断增长的利用 NeMo 框架的出版物列表。
要向该集合贡献文章,请向此存储库的gh-pages-src
分支提交拉取请求。有关详细信息,请参阅位于 gh-pages-src 分支的自述文件。