AI:DeepSpeed Chat(一款帮用户训练自己模型的工具且简单/低成本/快 RLHF 训练类ChatGPT高质量大模型)的简介、安装、使用方法之详细攻略
目录
DeepSpeed Chat的简介
DeepSpeed-Chat的产生背景
DeepSpeed-Chat的简介
DeepSpeed-Chat的三大功能
DeepSpeed-RLHF 系统三大优势
DeepSpeed Chat的安装和使用方法
1、简单易用的ChatGPT训练和推理体验
使用 DeepSpeed-Chat 的 RLHF 示例可以轻松训练您的第一个 ChatGPT 样式模型
a) 一个脚本完成 RLHF 训练的所有三个阶段并生成您的第一个 ChatGPT 模型!
b) 使用 DeepSpeed-Chat 的推理 API 测试您的最终模型
DeepSpeed Chat的使用方法
1、成熟的 RLHF 培训管道
2、DeepSpeed 混合引擎——统一的基础设施来支持和优化 RLHF 训练
DeepSpeed Chat的简介
DeepSpeed-Chat的产生背景
ChatGPT 之类的模型席卷了 AI 世界,可以毫不夸张地说它对数字世界的影响是革命性的。这些模型用途广泛,能够执行摘要、编码和翻译等任务,其结果与人类专家相当,甚至超过人类专家的能力。鉴于这些模型的强大功能,AI 开源社区正在进行多项努力,以使 ChatGPT 样式的模型更易于访问(例如 ChatLLaMa、Alpaca、Vicuna、Databricks-Dolly 等)。
尽管付出了这些令人难以置信的努力,但仍然缺乏端到端的 RLHF 管道,能够训练强大的 ChatGPT 类模型,AI 社区可以轻松访问这些模型。例如,使用现有系统训练适度的 6.7B ChatGPT 模型通常需要昂贵的多 GPU 设置,这超出了许多数据科学家的能力范围。即使可以访问此类计算资源,训练效率通常也低于这些机器能力的 5%(如下图所示)。最后,现有的解决方案根本无法支持简单、快速和负担得起的培训具有数千亿参数的最先进的 ChatGPT 模型,即使可以访问多 GPU 集群。
这些限制源于缺乏能够有效支持复杂 InstructGPT 的 RLHF 训练管道的稳健系统设计,这与现有 DL 系统设计的标准预训练和微调管道截然不同。
DeepSpeed-Chat的简介
DeepSpeed是一个由微软开发的深度学习框架优化工具,旨在为大规模分布式训练提供更好的支持。它提供了多种性能优化技术,包括模型并行、梯度累积、动态精度缩放等,使得在使用大规模GPU集群进行训练时能够更高效地利用计算资源。同时,DeepSpeed还提供了一套易用的API,可以方便地将这些优化技术应用到不同的深度学习框架中,如PyTorch、TensorFlow等。
4月12日(美国时间),DeepSpeed在社交论坛,发表了DeepSpeed-Chat,想在单个GPU上训练10B+ chatgpt风格的模型,在多GPU系统上训练100B+ ?引入DeepSpeed-Chat,一种简单(单脚本)、快速和低成本的解决方案,用于用RLHF训练高质量的chatgpt风格模型,比SoTA快15倍。
综上可知,微软开源的 DeepSpeed-Chat是一款让我们能够以更低的成本、更快的速度训练类似于ChatGPT的高质量大模型,目的是帮用户训练自己的模型。
GitHub:DeepSpeed/blogs/deepspeed-chat at master · microsoft/DeepSpeed · GitHub
官方介绍:DeepSpeed/README.md at master · microsoft/DeepSpeed · GitHub
DeepSpeed-Chat的三大功能
本着使类似 ChatGPT 的模型民主化并使 RLHF 训练真正为 AI 社区所用的精神,今天我们发布了具有以下三种特点的 DeepSpeed-Chat:
(i)易于使用的 ChatGPT 类模型训练和推理体验:一个脚本能够采用预训练的 Huggingface 模型,使用 DeepSpeed-RLHF 系统运行它完成 InstructGPT 训练的所有三个步骤,并生成您自己的 ChatGPT像模型。此外,我们还提供了一个推理 API,用于在训练模型后测试对话式交互。
(ii) DeepSpeed-RLHF 流水线:DeepSpeed-RLHF 流水线主要复制 InstructGPT 论文中的训练流水线,并仔细注意以确保完整性和与包括 a) 监督微调 (SFT) 在内的三个步骤的一一对应, b) 奖励模型微调和 c) 人类反馈强化学习 (RLHF)。此外,我们还提供数据抽象和混合功能,以支持使用多个数据源进行训练。
(iii) DeepSpeed-RLHF 系统:一个强大而复杂的 RLHF 系统,它将 DeepSpeed 的训练和推理能力结合到 RLHF 的单一统一混合引擎 (DeepSpeed-HE) 中。混合引擎能够在 RLHF 内的推理和训练模式之间无缝转换,使其能够利用 DeepSpeed-Inference 的各种优化,例如用于生成的张量并行和高性能变压器内核,同时还受益于众多 ZeRO-以及用于 RL 训练的基于 LoRA 的内存优化策略。DeepSpeed-HE 还了解整个 RLHF 管道,使其能够在 RLHF 不同阶段的内存管理和数据移动方面做出最佳决策。
DeepSpeed-RLHF 系统三大优势
DeepSpeed-RLHF 系统能够大规模实现无与伦比的效率,使复杂的 RLHF 训练变得快速、经济且易于为 AI 社区所接受:
效率和可负担性:在效率方面, DeepSpeed-HE 比现有系统快 15 倍以上,使 RLHF 训练既快速又经济。例如,DeepSpeed-HE 可以在 Azure Cloud 上仅用 9 小时训练 OPT-13B,在 18 小时内训练 OPT-30B,价格分别低于 300 美元和 600 美元。
显卡 | OPT-6.7B | OPT-13B | OPT-30B | OPT-66B |
---|---|---|---|---|
8 个 A100-40GB | 5.7小时 | 10.8小时 | 1.85天 | 北美 |
8 个 A100-80GB | 4.1 小时(132 美元) | 9 小时(290 美元) | 18 小时(580 美元) | 2.1 天 ($1620) |
表 1. 单节点 8x A100:Azure 上的训练时间和相应的近似成本。
出色的可扩展性:DeepSpeed-HE支持千亿级参数的模型,在多节点多GPU系统上可以实现出色的可扩展性。因此,即使是 13B 模型也可以在 1.25 小时内完成训练,而使用 DeepSpeed-HE 可以在不到一天的时间内训练出大型 175B 模型。
显卡 | OPT-13B | OPT-30B | OPT-66B | OPT-175B |
---|---|---|---|---|
64x A100-80G | 1.25 小时(320 美元) | 4 小时(1024 美元) | 7.5 小时(1920 美元) | 20 小时 ($5120) |
表 2. 多节点 64x A100-80GB:Azure 上的训练时间和相应的近似成本。
非常重要的细节:上面两个表中的数字都是针对训练的第 3 步,并且基于在 DeepSpeed-RLHF 精选数据集和训练方法上实际测量的训练吞吐量,该方法在总共 1.35 亿个token上训练一个时期。我们总共有 6750 万个查询标记(131900 个查询,序列长度为 256)和 6750 万个生成的标记(131900 个答案,序列长度为 256),以及每步 0.5M 标记(1024 个查询-答案对)的最大全局批量大小). 我们敦促读者在与 DeepSpeed-RLHF 进行任何成本和 e2e 时间比较之前注意这些规范。有关详细信息,请参阅我们的基准设置页面。
民主化 RLHF 训练:DeepSpeed-HE 仅需一个 GPU,即可支持具有超过 130 亿个参数的训练模型,使无法访问多 GPU 系统的数据科学家不仅可以创建玩具 RLHF 模型,还可以创建可在实际中使用的大型强大模型-世界场景。
V100 32G | A6000 48G | A100 40G | A100 80G | |
---|---|---|---|---|
型号尺寸 | OPT-2.7B | OPT-6.7B | OPT-6.7B | OPT-13B |
表 3. DeepSpeed-HE 在单个 GPU 上支持的最大模型大小
DeepSpeed Chat的安装和使用方法
1、简单易用的ChatGPT训练和推理体验
从易于使用的体验开始,展示如何使用 DeepSpeed-RLHF 系统训练 OPT-13B 和 OPT-66B 模型。如果时间不够,您甚至可以在两个小时内在单个消费级 GPU 上训练 OPT-1.3B 模型。我们还演示了如何使用我们的 DeepSpeed-chat RLHF API 来开发您自己的自定义管道。
使用 DeepSpeed-Chat 的 RLHF 示例可以轻松训练您的第一个 ChatGPT 样式模型
a) 一个脚本完成 RLHF 训练的所有三个阶段并生成您的第一个 ChatGPT 模型!
我们在以下单个脚本中使用预训练的 OPT-13B 作为演员模型和 OPT-350M 作为奖励模型的示例来生成最终的 13B ChatGPT 样式模型:
pip install deepspeed>=0.9.0
git clone https://github.com/microsoft/DeepSpeedExamples.git
cd DeepSpeedExamples/applications/DeepSpeed-Chat/
pip install -r requirements.txt
python train.py --actor-model facebook/opt-13b --reward-model facebook/opt-350m --deployment-type single_node
大约半天后,您的 13B 模型将完成全面训练,并准备好检查点。下表显示了三个步骤中每个步骤的训练时间明细:
型号尺寸 | 步骤1 | 第2步 | 步骤 3 | 全部的 |
---|---|---|---|---|
演员:OPT-13B,奖励:OPT-350M | 2.5小时 | 0.25小时 | 10.8小时 | 13.6小时 |
表 4. 在具有 8 个 NVIDIA A100-40G GPU 的单个 DGX 节点上通过 DeepSpeed-Chat 训练 130 亿参数 ChatGPT 模型的 E2E 时间分解。
b) 使用 DeepSpeed-Chat 的推理 API 测试您的最终模型
现在是时候插入并测试由 DeepSpeed-Chat 训练的最终模型了!您不仅可以玩问答环节,还可以玩对话式互动。
Human: Do you know Microsoft?
Assistant: Yes, I’m a big fan of Microsoft. What about them?
Human: Can you explain it to a 6-year old child? I wonder how I should describe it
Assistant: Sure, I can try. Microsoft is a company that makes computers, and they make a program called “Windows” which
is the operating system that runs on the computer. It’s like the “brain” of the computer. It’s where all the
programs and files are stored. It’s also where you’ll find the “start” button, which is where you’ll start to
use the computer.
DeepSpeed Chat的使用方法
1、成熟的 RLHF 培训管道
为了提供无缝的培训体验,我们遵循 InstructGPT 并在 DeepSpeed-Chat 中包含一个成熟的端到端培训管道,如图 1 所示。
图 1:DeepSpeed-Chat 的具有可选功能的 RLHF 训练管道的图示。
我们的管道包括三个主要步骤:
- 第 1 步:监督微调 (SFT),其中仔细选择人类对各种查询的响应以微调预训练语言模型。
- 第 2 步:奖励模型微调,其中使用一个数据集训练一个单独的(通常小于 SFT)模型 (RW),该数据集具有人类提供的对同一查询的多个答案的排名。
- 第 3 步:RLHF 训练,其中使用近端策略优化 (PPO) 算法使用来自 RW 模型的奖励反馈进一步微调 SFT 模型。
我们在步骤 3 中提供了两个附加功能来帮助提高模型质量:
- 指数移动平均线 (EMA) 集合,其中可以选择基于 EMA 的检查点进行最终评估。
- Mixture Training,它将预训练目标(即下一个词预测)与 PPO 目标混合在一起,以防止在 SQuAD2.0 等公共基准上的性能回归。
EMA 和混合训练这两个训练特征经常被其他最近的努力忽略,因为它们可以是可选的。然而,根据 InstructGPT 的说法,EMA 检查点通常提供比常规最终训练模型更好的响应质量,而 Mixture Training 可以帮助模型保留预训练基准解决能力。因此,我们为用户提供它们,以充分获得 InstructGPT 中描述的训练体验,并争取更高的模型质量。
除了与 InstructGPT 论文高度一致外,我们还提供了方便的功能来支持研究人员和从业者使用多种数据资源训练自己的 RLHF 模型:
- 数据抽象和混合功能: DeepSpeed-Chat 能够使用多个数据集训练模型以获得更好的模型质量。它配备了(1)一个抽象数据集层来统一不同数据集的格式;(2) 数据拆分/混合功能,以便正确混合多个数据集,然后将其拆分到 3 个训练阶段。
为了说明我们训练管道的有效性,我们通过多轮对话展示了模型质量,如体验部分所示。
2、DeepSpeed 混合引擎——统一的基础设施来支持和优化 RLHF 训练
instruct-guided RLHF 管道的第 1 步和第 2 步类似于大型模型的定期微调,它们由 DeepSpeed 训练中基于 ZeRO 的优化和并行策略的灵活组合提供支持,以实现规模和速度。另一方面,管道的第 3 步是处理性能影响方面最复杂的部分。每次迭代都需要高效处理两个阶段:a) 令牌/经验生成的推理阶段,为训练生成输入和 b) 训练阶段以更新参与者和奖励模型的权重,以及它们之间的交互和调度。它引入了两个主要成本:
(1) 内存成本,因为在整个第 3 阶段需要提供 SFT 和 RW 模型的多个副本;
(2) 主要发电阶段,如果没有适当加速,
为了应对这些挑战,我们将 DeepSpeed Training and Inference 的完整系统功能组合到一个统一的基础设施中,我们称之为混合引擎。它利用原始的 DeepSpeed 引擎进行快速训练模式,同时毫不费力地将 DeepSpeed 推理引擎应用于生成/评估模式,为第 3 阶段的 RLHF 训练提供明显更快的训练系统。如图 2 所示,DeepSpeed 训练和推理引擎之间的过渡是无缝的:通过为 actor 模型启用典型的评估和训练模式,在运行推理和训练管道时,DeepSpeed 选择不同的优化来更快地运行模型并提高整体系统吞吐量。
图 2. DeepSpeed 混合引擎设计用于加速 RLHF 流水线中最耗时的部分。
在 RLHF 训练的经验生成阶段的推理执行过程中,DeepSpeed 混合引擎使用轻量级内存管理系统来处理 KV 缓存和中间结果,以及高度优化的推理适配内核和张量并行实现,以实现显着提升与现有解决方案相比,吞吐量(每秒令牌数)。
在训练执行期间,Hybrid Engine 启用内存优化技术,例如 DeepSpeed 的 ZeRO 系列技术和低阶自适应 (LoRA)。我们设计并实施了这些系统优化,使它们彼此兼容,并且可以组合在一起,以在统一的混合引擎下提供最高的训练效率。
Hybrid Engine 可以跨训练和推理无缝更改模型分区,以支持基于张量并行的推理和基于 ZeRO 的训练分片机制。它还可以重新配置内存系统,以在这些模式中的每一个期间最大化内存可用性。这可以通过避免内存分配瓶颈和支持大批量大小来提高性能。Hybrid Engine 包含来自 DeepSpeed 训练和推理的一系列系统技术,突破了现代 RLHF 训练的界限,并为 RLHF 工作负载提供了无与伦比的规模和系统效率。