重要提示

您正在查看 NeMo 2.0 文档。此版本对 API 和新库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚未提供的功能的文档,请参阅 NeMo 24.07 文档

更新日志#

本节介绍了迄今为止发布的 NVIDIA NeMo™ 框架每个版本的主要更改。

NeMo 框架 24.12#

训练#

  • 容错

    • 掉队者检测

    • 自动重新启动

LLM & MM#

  • MM 模型

    • Llava-next

    • Llama 3.2

  • NeVa 的序列模型并行

  • 启用 Energon

  • SigLIP(仅限 NeMo 1.0)

  • LLM 2.0 迁移

    • Starcoder2

    • Gemma 2

    • T5

    • Baichuan

    • BERT

    • Mamba

    • ChatGLM

  • DoRA 支持

对齐器#

  • NeMo 2.0 模型支持

  • DPO 的序列打包

  • Reinforce/RLOO 支持

  • SFT 知识蒸馏

  • SFT 的上下文并行

导出#

  • NIM 的 Nemo 2.0 基础模型导出路径

  • Nemo 2.0 中的 PTQ

Curator#

  • 用于文本检索的合成数据生成

    • 基于 LLM 的过滤器

      • 易用性

      • 可回答性

    • 问答检索生成管道

  • 用于机器翻译的并行数据集整理

    • 加载/写入 Bitext 文件

    • 启发式过滤(直方图、长度比)

    • 分类器过滤(Comet、Cometoid)

ASR#

  • 带有 TDT 解码器的时间戳

  • 带有 .transcribe() 的时间戳选项

NeMo 框架 24.09#

LLM & MM#

  • 训练

    • 长上下文配方

    • PyTorch 原生 FSDP 1

    • 分布式检查点

      • Torch 原生格式

      • 异步

      • 并行读/写

    • NeMo Run OSS

  • 模型

    • Llama 3

    • Mixtral

    • Nemotron

    • 使用 RedPajama2 数据(约 2.4T tokens)进行 Llama3 的 E2E BF16 训练

      • 在 2.4T RP2 tokens 上训练的 NeMo2.0 llama3 8b

      • 在 <1T RP2 tokens 上训练的 NeMo2.0 llama3 70b

  • NeMo 1.0

    • SDXL(文本到图像)

    • 模型优化

      • 深度剪枝 [文档]

      • 基于 Logit 的知识蒸馏 [文档]

对齐器#

  • 拒绝采样 (SFT)

  • 对齐器中用于 SFT 的打包序列训练

导出#

  • TensorRT-LLM v0.12 集成

  • vLLM 的 LoRA 支持

  • FP8 检查点

Curator#

  • 图像语义去重

  • NSFW 分类器

  • 美学分类器

  • CLIP 嵌入创建

  • AEGIS 分类器

  • 质量分类器

ASR#

  • Parakeet large(带有 PnC 模型的 ASR)

  • 添加了 乌兹别克语 离线模型和 格鲁吉亚语 流式模型

  • 用于高效分桶的优化功能,以提高 GPU 上的 bs 消耗

NeMo 框架 24.07#

训练#

  • 特性和模型架构

    • PEFT:QLoRA 支持,用于专家混合 (MoE) 稠密层的 LoRA/QLora

    • 状态空间模型和混合架构支持(Mamba2 和 NV-Mamba2-hybrid)

    • 支持 Nemotron、Minitron、Gemma2、Qwen、RAG

  • 多模态

    • NeVA:添加 SOTA LLM 主干支持(Mixtral/LLaMA3)和模型并行支持套件(PP/EP)

    • 支持在视频 NeVA 之上的语言指导时间定位助手 (LITA)

  • NeMo 中的自定义分词器训练

  • 更新 EP、CP 和 FSDP 的自动配置器

ASR#

  • SpeechLM 和 SALM

  • Canary 自定义的适配器

  • PyTorch 2.2 中的 PyTorch 分配器将所有 ASR 模型的训练速度提高了高达 30%

  • 用于 Transducer 推理的 Cuda Graphs

  • 用 Lhotse 替换 webdataset - 速度提升高达 2 倍

  • 转录改进 - 速度提升和 QoL 更改

  • 用于多模态 Canary 的 ASR Prompt Formatter

对齐器#

  • 使用 TRT-LLM 将对齐器 RLHF 速度提高 7 倍

  • 奖励偏好优化 (RPO)

  • 身份偏好优化 (IPO)

  • SteerLM2

  • Llama 3 性能和收敛示例

  • 宪法 AI 算法 (RLAIF)

Curator#

  • 语义去重

  • 用于文本提取的 Resiliparse

  • 改进分布式数据分类 - 域分类器通过智能批处理速度提高 1.55 倍

  • 用于微调的合成数据生成

导出和部署#

  • 带有后端的框架内 PyTriton 部署

    • PyTorch

    • vLLM

    • TRT-LLM 更新至 0.10

  • TRT-LLM C++ 运行时

NeMo 框架 24.05#

NeMo 框架现在在单个整合容器中支持大型语言模型 (LLM)、多模态 (MM)、自动语音识别 (ASR) 和文本到语音 (TTS)。

LLM 和 MM#

模型#

  • Megatron Core RETRO

    • 预训练

    • 零样本评估

  • 以下模型的预训练、转换、评估、SFT 和 PEFT:

    • Mixtral 8X22B

    • Llama 3

    • SpaceGemma

  • 嵌入模型微调

    • Mistral

    • BERT

  • BERT 模型

    • 分布式检查点

  • 带有 NeVa 的视频功能

性能#

  • 分布式检查点

    • Torch 原生后端

    • 并行读/写

    • 异步写入

  • 多模态 LLM (LLAVA/NeVA)

    • 流水线并行支持

    • 序列打包支持

导出#

  • 将导出和部署模块集成到 NeMo 框架容器中

    • 升级到 TRT-LLM 0.9

Curator#

  • SFT/PEFT(LoRA 和 p-tuning)数据整理管道和示例

  • 数据集混合工具

  • 域分类器

对齐器#

  • LoRA 技术与

    • PPO Actor

    • PDO

    • SFT/SteerLM

  • Stable Diffusion 模型

语音(ASR 和 TTS)#

模型#

  • AED 多任务模型 (Canary) - 多任务多语言语音识别/语音翻译模型

  • 多模态域 - 支持 SALM 模型的语音 LLM

  • Parakeet-tdt_ctc-1.1b 模型 - RTFx > 1500(可以在 1 秒内转录 1500 秒的音频)

  • 音频编解码器 16kHz Small - NeMo 神经音频编解码器,用于离散化语音以在 LLM 中使用

    • mel_codec_22khz_medium

    • mel_codec_44khz_medium

性能改进#

  • Transcribe() 升级 - 支持使用文件、张量、数据加载器进行单行转录

  • 用于 RNNT 更快解码的帧循环算法 - 将实时因子 (RTF) 提高 2-3 倍

  • 用于 RNN-T 和 TDT 解码的 Cuda Graphs + 标签循环算法 - 转换器贪婪解码的 RTFx 超过 1500 倍,与 CTC 非自回归模型相当

  • 半排序批处理支持 - 外部用户贡献,将训练速度提高 15-30%。

自定义#

  • 用于 CTC 字词标记的上下文偏置 - 提高自定义词汇表和发音的准确性

长格式推理#

  • AED 模型的长格式推理支持

  • AED 模型的多通道音频转录

杂项#

  • 升级的 webdataset - 语音和 LLM/多模态统一容器

NeMo 框架 24.03.01#

已修复的问题

  • GPT 损失函数中的内存泄漏

  • Mixtral PEFT 的评估脚本问题

  • 使用 1TB 系统内存时 Llama 7B 内存不足问题

  • 启用 LoRA 合并的流水线并行支持

  • 在 Kubernetes 上保存检查点时进行多节点 Llama 训练

NeMo 框架 24.03#

  • 完全分片数据并行 (FSDP) 支持 GPT

  • 使用 AMMO 库 (0.7.4) 对 Llama 进行训练后量化 (PTQ)

  • 支持所有 MoE 模型(例如 Mixtral)上的专家并行

  • 用于 p-tuning 的流水线并行

  • 更新了所有流行的社区模型的 PEFT 指标。(支持矩阵临时内部链接

  • 升级了 PyTorch Lightning 至 2.2

  • 升级了基础容器至 PyTorch 24.02

  • 整合了 StarCoder2 和 Gemma 特定容器,以及之前的 Framework GA 容器

  • Curator 中可自定义的分布式数据分类工具

  • Curator 中 GPU 加速的质量分类模型代码

  • Curator 中 GPU 加速的域分类模型代码

NeMo 框架 24.01.01#

  • 为 MCore 添加了专家混合参数传递

  • PP/TP 支持专家混合

  • Gemma 模型的 SFT/PEFT 支持

  • 以下模型的训练/SFT/PEFT/评估支持 - Baichuan 模型 - CodeLlama 模型

  • 修复了 Mistral 和 Mixtral 的 nemo-launcher 配置的 SFT/PEFT 支持 - 使用正确的值编辑了配置

  • 文档重构和添加了着陆页

  • 添加了 NeMo 框架开发者文档

NeMo 框架 24.01#

  • 社区模型的新端到端支持(预训练、转换、评估、SFT、PEFT),包括

    • 支持社区模型 Falcon

    • 支持社区模型 Mixtral(专家并行将在未来版本中推出)

    • 支持社区模型 Mistral

    • 支持社区模型 Code Llama

  • NeMo 多模态的全面上市版本,包括

    • 支持视觉语言基础模型:CLIP

    • 支持文本到图像基础模型:Stable Diffusion 和 Imagen

    • 支持文本到图像自定义:SD-LoRA、SD-ControlNet、SD-instruct pix2pix

    • 支持多模态 LLM:NeVA 和 LLAVA

    • 支持文本到 NeRF:DreamFusion++

    • 支持 NSFW

  • 新的性能特性和关键优化

    • 支持带有张量并行的 PyTorch 完全分片数据并行训练 (FSDP)

    • 支持 CPU 卸载和预取激活和权重

    • 支持上下文并行,用于高性能长序列长度 LLM 训练

    • 支持框架级 FP8 精度,可减少内存使用和训练步长时间

    • Transformer 层粒度重计算,带有 FP8 LLM 训练

    • 支持流水线张量并行通信重叠,带有 GEMM,适用于所有 LLM

    • 支持使用打包序列进行 LLM 微调

    • 支持用于 LLAMA2 类模型的融合 RoPE 和 Swiglu

    • 设备内存错误修复;移除了 FP8 训练中的 FP8 强制转换/转置重复项

  • NeMo 对齐器的新特性

    • 支持 MultiEpoch

    • 添加了 PPO:自定义结束字符串 + 内存优化

    • 添加了 SFT:LoRa 和自定义验证指标

  • NeMo Curator 的新特性

    • 启动器内支持多节点多 GPU 模糊文档级去重。

    • 添加了新的个人身份信息 (PII) 移除模块

    • 启动器内支持用于 SFT 和 PEFT(例如 LoRA、p-tuning、适配器等)数据集的任务去污染

    • 来自 StarCoder 的代码数据过滤启发式方法

NeMo 框架 23.11#

  • 开源发布 NeMo-Aligner。NeMo-Aligner 是高效模型对齐算法的一站式商店,包括

    • 支持来自人类反馈的完整强化学习 (RLHF) 管道,包括 SFT、奖励模型训练和强化学习

    • 支持 SteerLM 技术

    • 支持直接偏好优化

    • 支持所有 Megatron Core GPT 模型,例如 LLAMA2 70B

    • 改进的用户体验

NeMo 框架 23.10#

  • NeMo 框架推理容器的总体公告,包括

    • NeMotron 8B 和 Llama 2(仅限 BF16)的分布式检查点(Megatron Core)的部署支持

    • 微调(SFT、RLHF、SteerLM)NeMotron 8B(仅限 BF16)的部署支持

    • 单 GPU 上 P-tuned Llama 2(仅限 BF16)的部署支持

    • 支持在 Triton 推理服务器上使用 PyTriton 为 GPT 和 Llama 2 模型提供服务

    • 支持在 Triton 推理服务器上使用 TensorRT-LLM C++ 后端为 GPT 和 Llama 2 模型提供服务

    • 支持 Triton 推理服务器上 TensorRT-LLM C++ 后端的飞行中批处理

NeMo 框架 23.08.03#

  • 启用 PEFT 以与 Llama-2 模型配合使用

  • 解决了一个在使用恒定学习率调度器恢复监督微调时出现的问题

  • 修复了 SFT 和 PEFT 中的模型并行错误

  • 包含用于分布式检查点的 P-tuning 状态字典处理

  • 修复了使用 save_best_model 标志时出现的错误

  • 修复了进度条显示错误步数的错误

NeMo 框架 23.08.02#

  • 修复了 Hydra 配置中的容器路径

NeMo 框架 23.08.01#

  • 修复了分布式检查点的检查点搜索

NeMo 框架 23.08#

  • 将分布式检查点格式添加到 NeMo 和 Megatron Core for GPT

  • 来自 Megatron Core 的新 GPT Transformer,可实现改进的 LLM 配置训练

  • 当使用 FP8 训练 175B GPT 时,使用张量并行 TP=8 和微批量大小 MBS = 2 以确保模型并行分区适合 GPU 内存

  • 来自 Megatron Core 的新 GPT Transformer,它为 LLAMA2 等模型启用了组查询和多查询注意力

  • 支持使用 Megatron Core 进行 Llama 1 和 Llama 2 预训练

  • 使用 SFT、PEFT(p-tuning、适配器、IA3)等技术自定义 Llama 1 和 Llama 2 模型的 LLM

  • 为 Kubernetes 训练添加了示例和文档

  • NeMo Data Curator:添加了下游任务去污染支持

NeMo 框架 23.07#

  • 为 T5 和 mT5 添加了低秩自适应 (LoRA) 支持

  • 为 GPT 添加了批量大小加速支持

NeMo 框架 23.05#

  • 低秩自适应 (LoRA) 支持 GPT

  • 用于 BERT 的 LDDL(语言数据集和数据加载器),在 100B 模型上实现了 30% 的性能提升

  • 为所有 PEFT(p-tuning、适配器、IA3)统一数据集和模型类,并以 SFT 模型类作为 GPT 的父类

  • 从交错 PP 到非交错 PP 的转换器

  • 用于 SFT 的对话数据集指南,以帮助创建更好的聊天模型

  • 支持带有 GPT SFT 的动态序列长度批次

  • 为 RLHF 服务器启用了数据并行,在大多数作业中提供了 2 倍的端到端加速

NeMo 框架 23.04.1 ——————–@@

  • 解决了 RLHF 中的问题,该问题阻止了一些作业在 Slurm 集群中运行

  • 与将 NeMo Megatron 重命名为 NeMo 框架相关的更正

  • 修改了 *_improved 配置文件中的 run.name 以匹配正确的参数计数

NeMo 框架 23.04#

  • 支持 NeMo Data Curator,这是一个可扩展的 Python 库,用于整理训练大型语言基础模型所需的大规模数据集

  • 启用 P-tuning 的持续训练

  • 切换到 Megatron Core 以实现模型并行

  • 扩展了数据验证工具,以提供 P-tuning GPU 运行时估计

  • 支持 GPT 和 T5 模型的张量和流水线并行转换

  • 支持 GPT 的监督微调

  • 为 GPT 模型添加了来自人类反馈的强化学习 (RLHF)

  • 基于新的和改进的模型配置,添加了四个 GPT 模型大小

    • 400M_improved

    • 1B_improved

    • 7B_improved

    • 40B_improved

以下是 GPT 模型配置更改列表

配置

之前

新的

激活

GeLU

Fast-SwiGLU

位置嵌入

学习的绝对位置

RoPE

Dropout

0.1

0

嵌入和输出层

绑定

解绑

偏差项

规范化

LayerNorm

LayerNorm1p

NeMo 框架 23.03#

  • 为 GPT 和 BERT 模型添加了每个微批量数据加载器

  • 支持 GPT 和 T5 模型的 SquaredReLUSwiGLU 激活函数

  • 支持 GPT 和 RETRO 的旋转位置嵌入 (RoPE)

  • P‑tuning 或提示调整 GPT、T5 和 mT5 模型时,支持提前停止

  • 实现了重构的适配器学习,以模仿 NLP 方法的参数高效迁移学习

  • 在 Transformer Engine 中为 GPT 模型添加了 Flash 注意力机制

NeMo 框架 23.01#

  • 支持带有张量并行的 BERT 模型(仅限训练)

  • 支持带有流水线并行的 BERT 模型(仅限训练)

  • 支持 BERT 的序列并行和选择性激活检查点(仅限训练)

  • 支持 BERT 模型的交错流水线调度

  • 为 BERT 模型添加了分布式 Adam 优化器

  • 支持 BERT 模型的自动配置器

  • 添加了 110M、4B、20B 和 100B BERT 训练配置

  • 支持 T5 模型的专家混合(无专家并行,仅限训练)

  • 提高了 GPT P‑tuning 的性能(加速 20%25%)

  • 为 T5 和 mT5 添加了 ALiBi 位置嵌入(仅限训练)

  • 记录 GPT、T5、mT5 和 BERT 模型的总模型大小(跨模态并行等级)

NeMo 框架 22.11#

  • 为 GPT 模型添加了交错流水线调度(仅限训练)

  • 使用 Transformer Engine 支持 FP8(仅限训练)

  • 为 T5 和 mT5 模型添加了分布式 Adam 优化器

  • 支持带有序列并行的 GPT 模型的 P‑tuning 和提示调整

  • 将训练配置吞吐量提高了 7.9%(5B GPT)、9.6%(3B T5)、4.3%(11B T5)、52.4%(23B T5)和 26.6%(41B T5)

NeMo 框架 22.09#

  • 支持 OCI 上的 NeMo 框架训练和推理容器;有关编排脚本的详细信息,请联系 oci_nm@nvidia.com

  • 支持带有流水线并行的 T5 和 mT5 模型的 P‑tuning 和提示调整(仅限训练)

  • 支持带有张量并行和流水线并行的 GPT 和 T5 的适配器学习(仅限训练)

  • 支持带有张量并行和流水线并行的 GPT 和 T5 的 IA3 学习(仅限训练)

  • 添加了自动配置器,以查找在 Base Command Platform 上训练的最高吞吐量配置

  • 添加了自动配置器,用于在 Base Command Manager 上为 GPT 进行并行推理超参数搜索

NeMo 框架 22.08.01#

  • 支持 Amazon Web Services 作为云服务提供商(性能验证高达 20 个 p4d.24xlarge 实例)

  • 为 Microsoft Azure 添加了从 Azure CycleCloud 到 NVIDIA Nephele 的云服务提供商的切换编排

NeMo 框架 22.08#

  • 为 GPT 模型添加了分布式 Adam 优化器

  • 为 T5 和 mT5 模型添加了非对称编码器-解码器配置

  • 支持从 T5 和 mT5 模型的分类器层解绑嵌入

  • 支持 T5 和 mT5 模型的相对位置嵌入(流水线并行 3)

  • 支持带有张量并行的 T5 和 mT5 模型的 P‑tuning 和提示调整(仅限训练)

  • 重构代码以提高配置和日志的一致性和可读性

  • 支持流水线并行 2 的 T5 模型的 SQuAD 微调和评估

  • 支持流水线并行 2 的 mT5 模型的 XQuAD 微调和评估

NeMo 框架 22.06-hotfix.01 —————————-@@

  • 修复了 T5 和 mT5 模型的自动配置器

  • 修复了 GPT 模型中的评估工具

  • 修复了 GPT 模型中的提示学习

  • 修复了使用序列并行预训练 GPT 模型时的“内存不足”情况

NeMo 框架 22.06#

  • 支持 GPT 的序列并行和选择性激活检查点

  • 支持 T5 的相对位置嵌入

    NVIDIA 使用 mC4 数据集(24 种语言)预训练 mT5 模型,并在 KNLI、KorQuAD、KLUE-STS 和 XNLI 任务上验证了结果。

  • 更新了自动配置器,以包含 GPT 模型的序列并行和选择性激活检查点

  • 为 GPT、T5 和 mT5 模型添加了 DGX A100 40GB 配置的自动配置器支持

  • 支持带有流水线并行的 GPT 的 P‑tuning 和提示调整(仅限训练)

  • 支持操作融合以获得更高的训练吞吐量(加速 2%-7%)

  • 更改了默认 GPT 配置以包含序列并行和选择性激活检查点:20B(加速:14%)、40B(加速:9%)和 175B(加速:15%)

NeMo 框架 22.05.01#

  • 为 Microsoft Azure 添加了云服务提供商支持(性能验证高达 36 个 Standard_ND96amsr_A100_v4 实例)

  • 添加了集群验证工具 (DGMI, NCCL)

  • 将 20B GPT 训练配置的性能提高了 2.7%

NeMo 框架 22.05#

  • 支持流水线并行大小等于 1 的 GPT、T5、mT5 模型的异步梯度 all-reduce

  • 支持带有张量并行的 GPT 的 P‑tuning 和提示调整(仅限训练)

  • 添加了自动配置器,以查找在 Base Command Manager 上训练和推理的最高吞吐量配置

  • 支持自定义分词器(仅限训练)

  • 支持 Base Command Manager 上带有流水线并行的 GPT 模型(推理)

  • 支持文本生成的新超参数:top-ptop-ktemperature

NeMo 框架 22.04#

  • 支持带有流水线并行的 T5 模型(仅限训练)

  • 将 T5 的激活函数从 GeLU 切换到 GeGLU

  • 支持带有张量并行和流水线并行的 mT5(仅限训练)

  • 添加了 11B、23B 和 41B T5 模型训练配置

  • 添加了 170M、390M 和 3B mT5 模型训练配置

  • 添加了自动和可配置的非统一内存访问 (NUMA) 映射

NeMo 框架 22.03#

  • 为 T5 模型添加了张量并行支持(针对 <20B 参数进行了优化,仅限训练)

  • 添加了 220M 和 3B T5 模型训练配置

  • 支持 T5 模型的 GLUE 微调和评估

NeMo 框架 22.02#

  • 支持带有流水线并行的 GPT 模型(仅限训练)

  • 添加了 40B 和 175B GPT 模型训练配置

NeMo 框架 22.01#

  • 支持 Base Command Platform 上带有张量并行的 GPT

  • 支持 O2 风格 AMP(加速更大模型的训练)

  • 包含使用您训练的 GPT 模型的聊天机器人示例应用程序

  • 支持使用 Weights & Biases 进行训练指标监控和可视化