NVIDIA NeMo 框架

最新消息

大型语言模型和多模式

NVIDIA 发布了 340B 个基础、指导和奖励模型,这些模型已在总共 9T 代币上进行了预训练。 (2024-06-18)
 

NVIDIA 在 MLPerf Training v4.0 中创下新的生成式 AI 性能和规模记录 (2024/06/12)
 

使用 GKE 上的 NVIDIA NeMo 框架加速您的生成式 AI 之旅 (2024/03/16)
 

Bria 利用 NVIDIA NeMo、Picasso 为企业构建负责任的生成式 AI (2024/03/06)
 

NVIDIA NeMo 框架的新功能和 NVIDIA H200 (2023/12/06)

 

H200-NeMo-性能


 

NVIDIA 现为 Amazon Titan Foundation 模型提供训练支持 (2023/11/28)
 

语音识别

NVIDIA NeMo Canary 模型助力语音识别和翻译新标准 (2024/04/18)
 

利用 NVIDIA NeMo Parakeet ASR 模型突破语音识别的界限 (2024/04/18)
 

使用 NVIDIA NeMo Parakeet-TDT 提高 ASR 准确度和速度 (2024/04/18)
 

介绍

NVIDIA NeMo 框架是一个可扩展的云原生生成式 AI 框架,专为从事大型语言模型 (LLM)、多模态模型 (MM)、自动语音识别 (ASR)、文本转语音 (TTS) 和计算机视觉 (CV) 领域的研究人员和 PyTorch 开发人员构建。它旨在通过利用现有代码和预训练的模型检查点来帮助您高效地创建、自定义和部署新的生成式 AI 模型。

有关技术文档,请参阅NeMo 框架用户指南

法学硕士 (LLM) 和硕士 (MM) 培训、协调和定制

 

所有 NeMo 模型均使用 Lightning进行训练。训练可自动扩展到数千个 GPU。

在适用的情况下,NeMo 模型会利用尖端的分布式训练技术,并结合并行策略 来高效训练超大型模型。这些技术包括张量并行 (TP)、流水线并行 (PP)、完全分片数据并行 (FSDP)、混合专家 (MoE) 以及使用 BFloat16 和 FP8 的混合精度训练等。

基于 NeMo Transformer 的 LLM 和 MM 利用NVIDIA Transformer Engine在 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 框架用户指南 ,了解受支持的模型和技术的完整列表。

LLM 和 MM 部署和优化

NeMo LLM 和 MM 可以使用NVIDIA NeMo 微服务进行部署和优化。

语音人工智能

NeMo ASR 和 TTS 模型可以针对推理进行优化,并借助NVIDIA Riva部署用于生产用例。

NeMo 框架启动器

NeMo Framework Launcher是一款云原生工具,可简化 NeMo Framework 体验。它用于在 CSP 和 Slurm 集群上启动端到端 NeMo Framework 训练作业。

NeMo Framework Launcher 包含用于训练 NeMo LLM 的大量配方、脚本、实用程序和文档。它还包括 NeMo Framework Autoconfigurator,旨在找到在特定集群上进行训练的最佳模型并行配置。

要快速开始使用 NeMo Framework Launcher,请参阅 NeMo Framework Playbooks。NeMo Framework Launcher 目前不支持 ASR 和 TTS 训练,但很快就会支持。

开始使用 NeMo 框架

NeMo 框架入门非常简单。最先进的预训练 NeMo 模型可在Hugging Face Hub 和NVIDIA NGC上免费获取。这些模型可用于生成文本或图像、转录音频和合成语音,只需几行代码即可。

我们有大量 可在Google Colab或我们的NGC NeMo 框架容器 上运行的教程。我们还 为想要使用 NeMo 框架启动器训练 NeMo 模型的用户提供了剧本。

对于想要从头开始训练 NeMo 模型或微调现有 NeMo 模型的高级用户,我们有一整套支持多 GPU/多节点训练的示例脚本。

主要特征

要求

  • Python 3.10 或更高版本
  • Pytorch 1.13.1 或更高版本
  • NVIDIA GPU(如果您打算进行模型训练)

开发人员文档

版本地位描述
最新的

文档状态

最新(即主要)分支的文档。
稳定的

文档状态

稳定版本(即最新版本)的文档

安装 NeMo 框架

NeMo 框架可以通过多种方式安装,具体取决于您的需求。根据域的不同,您可能会发现以下安装方法之一更合适。

  • Conda / Pip — 请参阅CondaPip了解安装说明。
    • 这是 ASR 和 TTS 域的推荐方法。
    • 当使用 Nvidia PyTorch 容器作为基础时,这是所有域的推荐方法。
  • Docker 容器 - 请参阅Docker 容器 以获取安装说明。
    • NeMo 框架容器 - [nvcr.io/nvidia/nemo:24.05]{.title-ref}
  • LLM 和 MM 依赖项 - 请参阅LLM 和 MM 依赖项以获取安装说明。

重要提示:我们强烈建议您从基础 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]"在上面的命令中使用说明符。

来自特定域的 Pip

要安装 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']

来自源分支的 Pip

如果要使用来自特定 GitHub 分支(例如主分支)的特定版本的 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 的依赖项,那么 当您的 PWD 是 NeMo 存储库的根目录时,您可以将reinstall.sh其替换。pip install -e .

搭载 Apple Silicon 的 Mac 电脑

要在配备 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]'

Windows 电脑

要安装适用于 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 的更多信息,请参考微软的官方文档

使用 WSL 安装 Linux 发行版后,有两个选项可用:

选项 1:从开始菜单打开发行版(默认为 Ubuntu)并按照说明进行操作。

选项 2:启动终端应用程序。 如果尚未安装,请从Microsoft 的 Windows 终端页面下载。

接下来,按照上面提供的 Linux 系统说明进行操作。例如:

apt-get update && apt-get install -y libsndfile1 ffmpeg
git clone https://github.com/NVIDIA/NeMo
cd NeMo
./reinstall.sh

RNNT

为了实现循环神经网络传感器 (RNNT) 的最佳性能,请从 Conda 安装 Numba 包。

运行以下代码:

conda remove numba
pip uninstall numba
conda install -c conda-forge numba

安装 LLM 和 MM 依赖项

如果您使用 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 的发布版本时,请参阅软件组件版本 以了解正确的版本。

PyTorch 容器

我们建议您从基础 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 存储库中的安装文件中注释掉相关行: apex/setup.py at master · NVIDIA/apex · GitHub

安装 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 Engine 有助于在 NVIDIA Hopper GPU 上以 FP8 精度进行训练,并为基于 Transformer 的模型的训练引入了许多增强功能。 有关信息,请参阅Transformer Engine 。

要安装 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。Megatron Core 是一个用于扩展大型基于 Transformer 的模型的库。NeMo LLM 和 MM 利用 Megatron Core 实现模型并行、Transformer 架构和优化的 PyTorch 数据集。

要安装 Megatron Core,请运行以下代码:

git clone https://github.com/NVIDIA/Megatron-LM.git && \
cd Megatron-LM && \
git checkout $mcore_commit && \
pip install . && \
cd megatron/core/datasets && \
make

NeMo 文本处理

NeMo 文本处理(特别是逆文本规范化)现在是一个单独的存储库。它位于此处: GitHub - NVIDIA/NeMo-text-processing: NeMo text processing for ASR and TTS

Docker 容器

NeMo 容器与 NeMo 版本更新同时发布。NeMo 框架现在在单个整合的 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讨论区找到。欢迎您在此提问或展开讨论。

为 NeMo 做出贡献

欢迎社区贡献力量!请参考 CONTRIBUTING.md 了解流程。

出版物

我们提供了不断增长的 使用 NeMo 框架的出版物列表。

要向该合集贡献文章,请向gh-pages-src此存储库的分支提交拉取请求。有关详细信息,请参阅位于gh-pages-src 分支的README 。

许可证

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐