昨日,微软开源的 DeepSpeed Chat 引起了AI社区的广泛关注。
它让咱们能够以更低的本钱、更快的速度练习类似于ChatGPT的高质量大模型。
链接:github.com/microsoft/D…
本文对开源的 DeepSpeed Chat 进行了具体的介绍。该博客由微软DeepSpeed组官方编撰并译制,并授权「开源社」首发于中文社区,机器之心转载。
概述
近日来,ChatGPT 及类似模型引发了人工智能(AI)范畴的一场风潮。这场风潮对数字国际产生了革命性影响。ChatGPT 类模型具有惊人的泛用性,能够履行概括、编程、翻译等任务,其结果与人类专家相当乃至更优。为了使 ChatGPT 等模型的练习和部署更轻松,AI 开源社区进行了各种测验(例如 ChatLLaMa、Alpaca、Vicuna、Databricks-Dolly 等)。
但是,虽然开源社区付出了巨大的尽力,现在仍缺乏一个支撑端到端的依据人工反应机制的强化学习(RLHF)的规划化体系,这使得练习强大的类 ChatGPT 模型十分困难。例如,运用现有的开源体系练习一个具有 67 亿参数的类 ChatGPT 模型一般需求贵重的多卡至多节点的 GPU 集群,但这些资源对大多数数据科学家或研究者而言难以获取。一起,即便有了这样的核算资源,现有的开源体系的练习功率一般还不到这些机器所能达到的最大功率的 5%。简而言之,即便有了贵重的多 GPU 集群,现有解决方案也无法轻松、快速、经济的练习具有数千亿参数的最先进的类 ChatGPT 模型。
ChatGPT 模型的练习是依据 InstructGPT 论文中的 RLHF 办法。这与常见的大语言模型的预练习和微调截然不同。这使得现有深度学习体系在练习类 ChatGPT 模型时存在种种局限。因而,为了让 ChatGPT 类型的模型更简单被普通数据科学家和研究者运用,并使 RLHF 练习真正普及到 AI 社区,咱们发布了 DeepSpeed-Chat。DeepSpeed-Chat 具有以下三大核心功用:
(i)简化 ChatGPT 类型模型的练习和强化推理体会:只需一个脚本即可完成多个练习进程,包含运用 Huggingface 预练习的模型、运用 DeepSpeed-RLHF 体系运转 InstructGPT 练习的一切三个进程、乃至生成你自己的类 ChatGPT 模型。此外,咱们还供给了一个易于运用的推理 API,用于用户在模型练习后测验对话式交互。
(ii)DeepSpeed-RLHF 模块:DeepSpeed-RLHF 复刻了 InstructGPT 论文中的练习形式,并确保包含 a) 监督微调(SFT),b) 奖赏模型微谐和 c) 依据人类反应的强化学习(RLHF)在内的三个进程与其一一对应。此外,咱们还供给了数据笼统和混合功用,以支撑用户运用多个不同来源的数据源进行练习。
(iii)DeepSpeed-RLHF 体系:咱们将 DeepSpeed 的练习(training engine)和推理才能(inference engine) 整合到一个一致的混合引擎(DeepSpeed Hybrid Engine or DeepSpeed-HE)中用于 RLHF 练习。DeepSpeed-HE 能够在 RLHF 中无缝地在推理和练习形式之间切换,使其能够运用来自 DeepSpeed-Inference 的各种优化,如张量并行核算和高功用 CUDA 算子进行语言生成,一起对练习部分还能从 ZeRO- 和 LoRA-based 内存优化战略中获益。DeepSpeed-HE 还能够主动在 RLHF 的不同阶段进行智能的内存办理和数据缓存。
DeepSpeed-RLHF 体系在大规划练习中具有无与伦比的功率,使杂乱的 RLHF 练习变得快速、经济而且易于大规划推行:
高效性和经济性:DeepSpeed-HE 比现有体系快 15 倍以上,使 RLHF 练习快速且经济实惠。例如,DeepSpeed-HE 在 Azure 云上只需 9 小时即可练习一个 OPT-13B 模型,只需 18 小时即可练习一个 OPT-30B 模型。这两种练习别离花费不到 300 美元和 600 美元。
表 1. 单节点 8x A100:练习时长及预估的 Azure 费用。
杰出的扩展性:DeepSpeed-HE 能够支撑练习具有数千亿参数的模型,并在多节点多 GPU 体系上展现出杰出的扩展性。因而,即便是一个具有 130 亿参数的模型,也只需 1.25 小时就能完结练习。而对于庞大的 具有 1750 亿参数的模型,运用 DeepSpeed-HE 进行练习也只需不到一天的时刻。
表 2. 多节点 64x A100-80GB:练习时长及预估的 Azure 费用。
非常重要的细节:上述两个表格(即表一和表二)中的数据均针对 RLHF 练习的第 3 步,依据实际数据集和 DeepSpeed-RLHF 练习吞吐量的测验。该练习在总共 1.35 亿(135M)个字符(token)上进行一个时期(epoch)的练习。咱们总共有 6750 万个查询(query)字符(131.9k 个 query,每个序列长度为 256)和 6750 万个生成 / 答复字符(131.9k 个答案,每个序列长度为 256),每步的最大大局字符批量巨细约为 500 万个字符(1024 个查询 – 答案对)。在与 DeepSpeed-RLHF 进行任何本钱和端到端时刻比较之前,咱们建议读者注意这些设定。想要了解更多具体信息,请参阅咱们的页面 benchmark setting。
完成 RLHF 练习的普及化:仅凭单个 GPU,DeepSpeed-HE 就能支撑练习超越 130 亿参数的模型。这使得那些无法运用多 GPU 体系的数据科学家和研究者不仅能够轻松创立轻量级的 RLHF 模型,还能创立大型且功用强大的模型,以应对不同的运用场景。
表 3. DeepSpeed-HE 在不同的 GPU 单卡上支撑的最大模型。
接下来,咱们将深入了解上面介绍的 DeepSpeed-Chat 的三个功用。
简练高效且经济的 ChatGPT练习与推理体会
接下来,咱们向你展现怎么运用一行命令即可运用 DeepSpeed-RLHF 体系练习 OPT-1,3B, OPT-13B 和 OPT-66B 模型。举例来说,即便时刻有限,你也能够在大约两小时内涵单个消费级 GPU 上练习一个 OPT-1.3B 模型。终究,咱们会演示怎么运用咱们的 DeepSpeed-chat RLHF API 来开发你自己的模型:
运用 DeepSpeed-Chat 的 RLHF 示例轻松练习你的第一个 类 ChatGPT 模型
a) 仅需一个脚本,完结 RLHF 练习的全部三个阶段,生成你的第一个 ChatGPT 模型!
以下示例展现了怎么运用一个脚本,以预练习的 OPT-13B 作为 actor 模型,OPT-350M 作为 reward 模型,生成一个终究的 130 亿参数的 ChatGPT 类型的模型:
git clone https://github.com/microsoft/DeepSpeed.gitcd DeepSpeedpip install .
git clone https://github.com/microsoft/DeepSpeedExamples.gitcd DeepSpeedExamples/applications/DeepSpeed-Chat/pip install -r requirements.txt
python train.py --actor-model facebook/opt-13b --reward-model facebook/opt-350m --num-gpus 8
大约半天时刻,你具有 130 亿参数的模型即可完结练习。下表展现了整个进程在三个进程中所需的时刻:
表 4. 在单个 DGX 节点上(8x A100-40G),针对不同的 RLHF 进程, 运用 DeepSpeed-Chat 练习 OPT-13b 所需的时刻。
b) 运用 DeepSpeed-Chat 的推理 API 测验练习好的模型
将练习好的模型导入供给的简易 API,你不仅能够与模型进行问答互动,还能够进行对话式沟通。
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,你能够轻松完成这些方针。例如,假如你想在 GPU 集群上练习一个更大、更高质量的模型,用于你的研究或业务,你能够运用相同的脚本,只需输入你期望的模型巨细(例如 660 亿参数)和 GPU 数量(例如 64 个 GPU):
python train.py --actor-model facebook/opt-66b --reward-model facebook/opt-350m --num-gpus 64
在接下来的 9 小时内,你将具有一个 660 亿参数的 ChatGPT 模型,并能够在你喜爱的前端 GUI 中运用:
表 5. 在 8 个 DGX 节点上(64x A100-80G),针对不同的 RLHF 进程, 运用 DeepSpeed-Chat 练习 OPT-66b 所需的时刻。
假如你只要大约 1-2 小时的咖啡或午餐歇息时刻,你也能够测验运用 DeepSpeed-Chat 练习一个小型模型。例如,咱们为单个数据集预备了一个 13 亿参数模型的练习示例,以便在你的消费级 GPU 上测验咱们的框架。当你从午餐歇息回来时,你的模型已经预备好供你运用!
python train.py --actor-model facebook/opt-1.3b --reward-model facebook/opt-350m --num-gpus 1
表 6. 在单个消费级 A6000-48G 上,针对不同的 RLHF 进程, 运用 DeepSpeed-Chat 练习 OPT-1.3b 所需的时刻。
运用 DeepSpeed-Chat 的 RLHF API 自定义你自己的 RLHF 练习流程
DeepSpeed-Chat 答应用户运用咱们灵敏的 API(如下所示)构建自己的 RLHF 练习流程,用户能够运用这些 API 重建自己的 RLHF 练习战略。咱们期望这些功用能够为研究探索中创立各种 RLHF 算法供给通用接口和后端。
engine = DeepSpeedRLHFEngine( actor_model_name_or_path=args.actor_model_name_or_path, critic_model_name_or_path=args.critic_model_name_or_path, tokenizer=tokenizer, num_total_iters=num_total_iters, args=args)
trainer = DeepSpeedPPOTrainer(engine=engine, args=args)
for prompt_batch in prompt_train_dataloader: out = trainer.generate_experience(prompt_batch) actor_loss, critic_loss = trainer.train_rlhf(out)
完好的 RLHF 练习流程概述
为了完成无缝的练习体会,咱们遵循 InstructGPT 论文的办法,并在 DeepSpeed-Chat 中整合了一个端到端的练习流程,如图 1 所示。
图 1: DeepSpeed-Chat 的 RLHF 练习流程图示,包含了一些可挑选的功用。
咱们的流程包含三个首要进程:
-
进程 1:监督微调(SFT) —— 运用精选的人类答复来微调预练习的语言模型以应对各种查询;
-
进程 2:奖赏模型微调 —— 运用一个包含人类对同一查询的多个答案打分的数据集来练习一个独立的(一般比 SFT 小的)奖赏模型(RW);
-
进程 3:RLHF 练习 —— 运用 Proximal Policy Optimization(PPO)算法,依据 RW 模型的奖赏反应进一步微调 SFT 模型。
在进程 3 中,咱们供给了两个额定的功用,以协助进步模型质量:
-
指数移动均匀(EMA) —— 能够挑选依据 EMA 的检查点进行终究评价
-
混合练习 —— 将预练习方针(即下一个单词猜测)与 PPO 方针混合,以避免在像 SQuAD2.0 这样的公开基准测验中的功用丢失
这两个练习功用,EMA 和混合练习,常常被其他的开源框架所忽略,由于它们并不会阻碍练习的进行。但是,依据 InstructGPT,EMA 一般比传统的终究练习模型供给更好的呼应质量,而混合练习能够协助模型坚持预练习基准解决才能。因而,咱们为用户供给这些功用,以便充沛取得 InstructGPT 中描述的练习体会,并争夺更高的模型质量。
除了与 InstructGPT 论文高度一致外,咱们还供给了一项便利的功用,以支撑研究人员和从业者运用多个数据资源练习他们自己的 RLHF 模型:
-
数据笼统和混合才能:DeepSpeed-Chat 能够运用多个不同来源的数据集练习模型以取得更好的模型质量。它装备了(1)一个笼统数据集层,以一致不同数据集的格式;以及(2)数据拆分 / 混合功用,以便多个数据集在 3 个练习阶段中被适当地混合然后拆分。
在咱们之前的章节中,你能够看到运用整个 DeepSpeed-Chat 练习模型在多轮对话中的表现。
DeepSpeed Hybrid Engine 一致的高效混合引擎 为 RLHF 练习供给动力并进行优化
DeepSpeed-Chat 流程的前两步与大型模型的惯例微调相似,得益于依据 ZeRO 的内存办理优化和 DeepSpeed 练习中的并行战略灵敏组合,完成了规划和速度的进步。但是,流程的第三步在功用方面是最具应战性的部分。每次迭代都需求高效处理两个阶段:a) 生成答复的推理阶段,为练习供给输入;b) 更新 actor 和 reward 模型权重的练习阶段,以及它们之间的交互和调度。这引入了两个首要困难:(1)内存本钱,由于在第三阶段的整个进程中需求运转多个 SFT 和 RW 模型;(2)生成答复阶段的速度较慢,假如没有正确加速,将显着拖慢整个第三阶段。此外,咱们在第三阶段中增加的两个重要可选功用,包含指数移动均匀(EMA)搜集和混合练习,将产生额定的内存和练习本钱。
为了应对这些应战,咱们将 DeepSpeed 练习和推理的体系功用整合为一个一致的基础设施,称为混合引擎(Hybrid Engine)。它运用原始 DeepSpeed 引擎进行高速练习形式,一起轻松应用 DeepSpeed 推理引擎进行生成 / 评价形式,为第三阶段的 RLHF 练习供给了一个显着更快的练习体系。如图 2 所示,DeepSpeed 练习和推理引擎之间的过渡是无缝的:经过为 actor 模型启用典型的 eval 和 train 形式,当运转推理和练习流程时,DeepSpeed 挑选其不同的优化来运转模型更快并进步整个体系吞吐量。
Figure 2. 规划图解:DeepSpeed Hybrid Engine,用于加速 RLHF 流程中最耗时的部分。
在 RLHF 练习的经验生成阶段的推理履行进程中,DeepSpeed 混合引擎运用轻量级内存办理体系来处理 KV 缓存和中心结果,一起运用高度优化的推理 CUDA 核和张量并行核算。与现有解决方案比较,DeepSpeed-HE 显着进步了吞吐量(每秒 token 数)。
在练习履行进程中,混合引擎运用了多种内存优化技能,如 DeepSpeed 的 ZeRO 系列技能和现在流行的 LoRA 办法。这些技能在混合引擎中能够彼此兼容,并能够组合在一起以供给最高练习功率。
DeepSpeed-HE 能够在练习和推理之间无缝更改模型分区,以支撑依据张量并行核算的推理和依据 ZeRO 的分片机制进行练习。它还会重新装备内存体系以在此期间最大化内存可用性。DeepSpeed-HE 还经过躲避内存分配瓶颈和支撑大批量巨细来进一步进步功用。混合引擎集成了 DeepSpeed 练习和推理的一系列体系技能,突破了现有 RLHF 练习的极限,并为 RLHF 作业负载供给了无与伦比的规划和体系功率。
DeepSpeed RLHF 经过 Hybrid Engine 完成无与伦比的规划和功率
回忆
如前所述,DeepSpeed-HE 是一个将强大的用于推理和练习的结合体系,旨在使 DeepSpeed-RLHF 在各种硬件上完成杰出的规划和功率,使 RLHF 练习快速、经济而且易于 AI 社区运用。
在功率和经济性方面,如表 1 所示,DeepSpeed-HE 在 Azure 云上只需 9 小时即可练习一个 OPT-13B 模型,只需 18 小时既可练习 OPT-30B 模型,别离花费不到 300 美元和 600 美元。在速度和可扩展性方面,如表 2 所示,即便是 13B 的模型也能够在 1.25 小时内练习,而庞大的 175B 模型能够在不到一天的时刻内运用 64 个 GPU 集群进行练习。在 RLHF 的可拜访性和普及化方面,DeepSpeed-HE 能够在单个 GPU 上练习超越 130 亿参数的模型,如表 3 所示。
与现有 RLHF 体系的吞吐量和模型巨细可扩展性比较
与其他 RLHF 体系(如 Colossal-AI 或由原生 PyTorch 供给支撑的 HuggingFace)比较,DeepSpeed-RLHF 在体系功用和模型可扩展性方面表现出色:
-
就吞吐量而言,DeepSpeed 在单个 GPU 上的 RLHF 练习中完成了 10 倍以上的改善(图 3)。在多 GPU 设置中,它比 Colossal-AI 快 6 – 19 倍,比 HuggingFace DDP 快 1.4 – 10.5 倍(图 4)。
-
就模型可扩展性而言,Colossal-AI 能够在单个 GPU 上运转最大 1.3B 的模型,在单个 A100 40G 节点上运转 6.7B 的模型,而 DeepSpeed-HE 能够在相同的硬件上别离运转 6.5B 和 50B 的模型,完成高达 7.5 倍的进步。
因而,凭借超越一个数量级的更高吞吐量,与现有的 RLHF 体系(如 Colossal-AI 或 HuggingFace DDP)比较,DeepSpeed-HE 具有在相一起间预算下练习更大的 actor 模型的才能,或许以十分之一的本钱练习类似巨细的模型的才能。
图 3. 在单个 NVIDIA A100-40G GPU 上,将 RLHF 练习的吞吐量与另外两个体系框架在进程 3 进行比较。没有图标表明 OOM(内存不足)的状况
图 4. 在单个 DGX 节点上,运用 8 个 NVIDIA A100-40G GPU,对练习流程第 3 步(耗时最长的部分)的不同模型巨细进行端到端练习吞吐量比较。没有图标表明 OOM(内存不足)的状况。
这种功率的进步是 DeepSpeed-HE 运用 DeepSpeed 推理优化在 RLHF 处理进程中加速 RLHF 生成的结果。图 5 显现了 RLHF 练习迭代中 1.3B 参数模型的时刻耗费细节:大部分时刻用于生成阶段。经过运用 DeepSpeed 的高功用推理内核,DeepSpeed-HE 在这个阶段能够完成比 HuggingFace 高达 9 倍的吞吐量改善,比 Colossal-AI 高 15 倍,从而完成无与伦比的端到端功率。
图 5. DeepSpeed Chat 的混合引擎在生成阶段的优胜加速:在单个 DGX 节点上运用 8 个 A100-40G GPU 练习 OPT-1.3B actor 模型 + OPT-350M reward 模型的时刻 / 序列分化
有用吞吐量和可扩展性剖析
(I) 有用吞吐量剖析。在 RLHF 练习的第 3 阶段,DeepSpeed-HE 的有用吞吐量取决于它在生成和 RL 练习阶段所完成的吞吐量。在咱们的 RLHF (详见 benchmarking setting)中,生成阶段占总核算的约 20%,而 RL 练习阶段占剩余的 80%。但是,虽然份额较小,前者可能会占用大部分的端到端时刻,由于它需求为每个生成的字符运转一次 actor 模型,使其遭到内存带宽约束,难以完成高吞吐量。比较之下,RL 练习阶段是核算密集型的,仅需运转参考 actor 模型进行几次前向和后向传递,每个样本都有来自提示和生成的全部 512 个字符,能够完成杰出的吞吐量。
图 6. 在最大功率的状况下,DeepSpeed-HE 针对不同模型巨细的 RLHF 生成、练习和有用吞吐量。
为了最大化有用吞吐量,DeepSpeed-HE 对两个阶段进行了优化。首先,它运用尽可能大的批量巨细以在两个阶段上取得更高的功率。其次,在生成阶段,它运用高功用 CUDA 内核在模型在单个 GPU 上最大化 GPU 内存带宽运用率,并在其他状况下运用张量并行(Tensor Parallelism, 简写作 TP)进行核算。DeepSpeed-HE 进一步在生成阶段运用 TP 而不是 ZeRO 以减少 GPU 之间的通信并坚持高 GPU 内存带宽运用率。
图 6 显现了 DeepSpeed-HE 在 1.3B 到 175B 的模型巨细规模内能够完成的最佳有用吞吐量(以 TFlops/GPU 表明)。它还别离显现了在生成和练习阶段完成的吞吐量。DeepSpeed-HE 对 6.7B-66B 规模内的模型最为高效。超出这个规模到 175B 时,由于内存有限,无法支撑更大的批量巨细,吞吐量下降,但仍比小型 1.3B 模型的功率高 1.2 倍。当咱们将这些巨大的模型扩展到更多具有更多内存的 GPU 时,这些模型的每个 GPU 吞吐量可能会进一步进步。
此外,咱们想指出,如图 2 所示,咱们体系的有用功用比现有体系高 19 倍,这表明它们的运转速度低于峰值的 5%。这说明了优化 RLHF 作业负载的应战以及咱们的体系在面临应战时的有用性。
图 7. 在不同数量的 DGX (A100-40/80G GPU) 节点上,进行 13B(左)和 66B(右)actor 模型 和 350M reward 模型的可扩展性练习。
(II) 可扩展性剖析。不同模型巨细的最佳有用吞吐量取决于不同的 GPU 数量。部分原因是由于一些较大的模型巨细需求更多的内存来运转。依据此,咱们接下来评论 DeepSpeed-HE 的可扩展性特性。
图 7 显现 DeepSeed-RLHF 在多达 64 个 GPU 的集群 上完成了杰出的整体扩展。但是,假如咱们仔细观察,能够发现 DeepSpeed-RLHF 练习在小规划时完成了超线性扩展,随后在较大规划时完成了挨近线性或次线性扩展。这是由于内存可用性和最大大局批量巨细之间的相互作用。
DeepSpeed-HE 的练习阶段核心依据 ZeRO。这意味着跟着 GPU 数量的增加,每个 GPU 的内存耗费会减少,使得 DeepSpeed-HE 能够在每个 GPU 上支撑更大的批量,从而完成超线性扩展。但是,在大规划状况下,虽然可用内存持续增加,但最大大局批量巨细依然约束了每个 GPU 的批量巨细,导致挨近线性或次线性扩展。因而,在给定的最大大局批量巨细(例如,咱们设置为 1024 个语句,每个语句长度为 512)下,DeepSpeed-HE 在超线性和次线性可扩展性之间完成了最佳的吞吐量和本钱效益。具体的平衡点首要取决于每个 GPU 上可运转的最大批量巨细,而这又遭到可用内存和大局批量巨细的函数所决议。
发布:现在就测验 DeepSpeed Chat 吧!
咱们非常高兴地宣布,DeepSpeed-Chat 现已开源并向 AI 社区敞开。
-
假如你发现咱们的效果对你有用或许喜爱咱们的开源效果,请在 DeepSpeed(github.com/microsoft/D… 和 DeepSpeedExamples(github.com/microsoft/D…
-
请拜访咱们的 DeepSpeed-Chat GitHub 页面以开始运用:GitHub 登陆页面(github.com/microsoft/D…
-
咱们将持续依据你的反应和支撑改善 DeepSpeed-Chat。咱们的计划图(github.com/microsoft/D…
DeepSpeed-Chat 是更大的 DeepSpeed 生态体系的一部分,包含众多深度学习体系和建模技能。要了解更多信息,
-
请拜访咱们的网站(www.deepspeed.ai/),了解具体的博客文章…
-
你还能够关注咱们的英文 Twitter(DeepSpeed) 和日文 Twitter(マイクロソフト DeepSpeed),了解 DeepSpeed 的最新动态。
DeepSpeed 欢迎你的奉献!咱们鼓舞你在 DeepSpeed GitHub 页面(github.com/microsoft/D… PR 并参加评论。请参阅咱们的奉献攻略(github.com/microsoft/D… DeepSpeed 应用于赋能现实国际的 AI 模型和应用等。对于此类需求(以及其他不适合在 GitHub 上提出的需求),请直接发送电子邮件至 deepspeed-info@microsoft.com。