重要提示
您正在查看 NeMo 2.0 文档。此版本为 API 和新库 NeMo Run 引入了重大更改。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚未提供的功能的文档,请参阅 NeMo 24.07 文档。
NeMo-Aligner#
简介#
NeMo-Aligner 是一个可扩展的工具包,用于高效的模型对齐。该工具包支持最先进的模型对齐算法,例如 SteerLM、直接偏好优化 (DPO) 和来自人类反馈的强化学习 (RLHF)。这些算法使用户能够对齐语言模型,使其更安全、更无害和更有帮助。用户可以在各种模型尺寸上执行端到端模型对齐,并利用所有并行技术来确保其模型对齐以高性能和资源高效的方式完成。有关更多技术细节,请参阅我们的论文。
NeMo-Aligner 工具包是使用 NeMo 工具包构建的,该工具包允许将训练扩展到数千个 GPU,对对齐的所有组件使用张量、数据和流水线并行。我们所有的检查点都与 NeMo 生态系统交叉兼容,从而可以进行推理部署和进一步自定义。
该工具包目前处于早期阶段。我们致力于改进该工具包,使其更易于开发人员选择不同的对齐算法来构建安全、有帮助且可靠的模型。
开始使用#
NeMo-Aligner 预安装在 NVIDIA NeMo 容器中。NeMo 容器与 NeMo 版本更新同时启动。
要访问容器,请登录 NVIDIA GPU Cloud (NGC) 平台或在此处创建一个免费 NGC 帐户:NVIDIA NGC。登录后,您可以在此处获取容器:NVIDIA NGC NeMo 框架。
要使用预构建容器以交互方式运行,请运行以下代码
docker run --rm -it \ --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 --shm-size=8g \ --workdir /opt/NeMo-Aligner \ nvcr.io/nvidia/nemo:24.09请使用 yy.mm.(patch) 形式的最新标签。
构建 NeMo-Aligner Dockerfile#
如果您想自定义环境,NeMo-Aligner 还提供了自己的 dockerfile。运行以下命令来构建镜像
git clone https://github.com/NVIDIA/NeMo-Aligner.git cd NeMo-Aligner # Replace with branch to build from ALIGNER_COMMIT=main TARGET_IMAGE=aligner-custom docker buildx build \ -t $TARGET_IMAGE \ --build-arg=ALIGNER_COMMIT=$ALIGNER_COMMIT \ . # Run the image using the above command in "Get Started" and swap out "nvcr.io/nvidia/nemo:24.09" with "aligner-custom".
- 先决条件:获取预训练模型
本节提供有关如何下载 .nemo 格式的预训练 LLM 的说明。以下部分将使用这些基础 LLM 进行进一步的微调和对齐。
- 通过监督微调 (SFT) 进行模型对齐
在本节中,我们将引导您完成最直接的对齐方法。我们使用提示-响应对格式的监督数据集来根据所需的行为微调基础模型。
- 使用知识蒸馏的监督微调 (SFT)
在本节中,我们将介绍使用知识蒸馏的 SFT 的变体,其中我们使用较大的“教师”模型来训练较小的“学生”模型。
- 通过 REINFORCE 进行模型对齐
在本教程中,我们将指导您完成使用 REINFORCE 对齐 NeMo 框架模型的过程。此方法可以应用于各种模型,包括 LLaMa2 和 Mistral,我们的脚本在不同的模型中功能一致。
- 通过 DPO、RPO 和 IPO 进行模型对齐
与 RLHF 相比,DPO、RPO 和 IPO 是更简单的对齐方法。DPO 引入了 RLHF 中奖励模型的新颖参数化,这使我们能够提取相应的最优策略。类似地,RPO 和 IPO 提供了替代的参数化或优化策略,每种策略都为改进模型对齐贡献了独特的方法。
- 通过 RLHF 进行模型对齐
RLHF 是对齐的下一个阶段,并且仍然是大多数最先进的聊天模型的基础。在本节中,我们将引导您完成 RLHF 对齐的过程,包括训练奖励模型和使用 PPO 算法进行 RLHF 训练。
- 通过 SteerLM 方法进行模型对齐
SteerLM 是 NVIDIA 开发的一种新颖方法。与 RLHF 相比,SteerLM 简化了对齐。它基于 SFT,但允许用户可控的 AI,使您可以在推理时调整属性。
- 通过 SteerLM 2.0 方法进行模型对齐
SteerLM 2.0 是 SteerLM 方法的扩展,它引入了迭代训练程序,以显式地强制生成的响应遵循所需的属性分布。
- 通过拒绝采样 (RS) 进行模型对齐
RS 是一种简单的在线对齐算法。在 RS 中,策略模型生成多个响应。这些响应由奖励模型分配分数,并且最高分数的响应用于 SFT。
- 使用 DRaFT+ 微调 Stable Diffusion
DRaFT+ 是一种用于微调文本到图像生成扩散模型的算法。它通过直接通过奖励模型反向传播来实现此目的。这种方法解决了原始 DRaFT 算法中的模式崩溃问题,并通过正则化提高了多样性。
- 宪法 AI:来自 AI 反馈的无害性
CAI 是 Anthropic 开发的一种对齐方法,它使 AI 反馈能够用于对齐 LLM。此反馈基于一小组原则(称为“宪法”),这些原则指导模型朝着期望的行为发展,强调有益性、诚实性和无害性。
算法 |
TRTLLM 加速 |
GPT 2B |
LLaMA2 |
LLaMA3 |
Mistral |
Nemotron-4 |
Mixtral |
---|---|---|---|---|---|---|---|
是 (✓) |
是 |
是 |
是 |
是 (✓) |
|||
是 (✓) |
是 |
是 |
是 |
是 |
|||
是 |
是 |
是 |
是 (✓) |
是 |
是 |
||
是 (✓) |
是 |
是 |
是 |
是 (✓) |
正在积极开发中 |
||
是 |
是 |
是 |
是 (✓) |
是 |
是 (✓) |
||
是 |
是 (✓) |
是 |
是 |
是 |
|||
是 |
是 |
是 |
是 |
是 |
|||
是 |
是 |
是 |
是 |
是 |
|||
是 |
是 |
是 |
是 (✓) |
是 |
算法 |
Stable Diffusion |
---|---|
Draft+ |
是 (✓) |
注意
(✓):表示该模型经过验证可以与该算法一起使用。没有此标记的模型预计可以工作,但尚未经过正式验证。
硬件要求#
NeMo-Aligner 由其他支持多个 NVIDIA GPU 的 NVIDIA 库提供支持。NeMo-Aligner 在 H100 上进行了测试,但也适用于 A100。一些教程假设 80GB VRAM,因此如果您使用的是 40GB GPU,请相应地调整您的配置。
配置调整的示例包括增加节点计数、引入更多张量/流水线并行、降低批大小和增加梯度累积。