DeepSpeed-Chat:最强ChatGPT训练框架,一键完成RLHF训练!

news2024/10/6 6:02:05

https://github.com/microsoft/DeepSpeedExamples/tree/master/applications/DeepSpeed-Chat

一个快速、负担得起、可扩展和开放的系统框架,用于实现端到端强化学习人类反馈 (RLHF) 培训体验,以生成各种规模的高质量 ChatGPT 样式模型。

目录

  • 📰最新消息📰
  • 🚀什么是DeepSpeed Chat 🚀️
  • 🧨特性🧨
  • ☕快速上手☕
  • 🔥训练效果评估🔥
  • 😽支持的模型😽
  • 🌱DeepSpeed Chat 的路线图🌱

🚀 1 什么是 DeepSpeed Chat 🚀


本着使 ChatGPT 式模型及其功能民主化的精神,DeepSpeed 自豪地推出了一个通用系统框架,用于为类 ChatGPT 模型提供端到端的培训体验,名为 DeepSpeed Chat。它可以自动采用你最喜欢的预训练大型语言模型,通过 OpenAI InstructGPT 风格的三个阶段来生成您自己的高质量 ChatGPT 风格模型。DeepSpeed Chat 使类似ChatGPT 风格的模型训练变得简单、快速、经济且可扩展。

根据官方介绍,一键运行就可以在 1.36 小时内在具有 48GB 内存的单个消费级 NVIDIA A6000 GPU 上训练、生成和提供 13 亿参数的 ChatGPT 模型。在具有 8 个 NVIDIA A100-40G GPU 的单个 DGX 节点上,DeepSpeed-Chat 可以在 13.6 小时内训练一个 130 亿参数的 ChatGPT 模型。在多 GPU 多节点系统上,即 8 个 DGX 节点和 8 个 NVIDIA A100 GPU/节点,DeepSpeed-Chat 可以在 9 小时内训练出一个 660 亿参数的 ChatGPT 模型。最后,它使训练速度比现有 RLHF 系统快 15 倍,并且可以处理具有超过 2000 亿个参数的类 ChatGPT 模型的训练:从这些性能来看,太牛X了,这是现有ChatGPT框架不能完成的壮举。

除了这个版本之外,DeepSpeed 系统一直自豪地作为系统后端来加速一系列正在进行的快速训练/微调聊天风格模型(例如,LLaMA)的工作。以下是一些由 DeepSpeed 提供支持的开源示例:

  • Databricks Dolly

https://github.com/databrickslabs/dolly

  • LMFlow

https://github.com/OptimalScale/LMFlow

  • CarperAI-TRLX

https://github.com/CarperAI/trlx

  • Huggingface-PEFT

https://github.com/huggingface/peft

2 🧨 DeepSpeed Chat 特性🧨

DeepSpeed Chat 正在快速发展,可以满足对训练/微调以及服务新兴模型的系统级加速并支持不断增长的需求。

DeepSpeed Chat 的摘要包括:

  • DeepSpeed Chat:一个完整​​的端到端三阶段 OpenAI InstructGPT 训练策略,带有强化学习人类反馈(RLHF),从用户青睐的预训练大型语言模型权重生成高质量的 ChatGPT 风格模型;
  • DeepSpeed Hybrid Engine:一种新系统,支持各种规模的快速、经济且可扩展的 RLHF 训练。它建立在用户最喜欢的 DeepSpeed 框架功能之上,例如 ZeRO 技术和 DeepSpeed-Inference;
  • Easy-breezy Training Experience:单个脚本能够采用预训练的 Huggingface 模型并通过 RLHF 训练的所有三个步骤运行它。
  • 对当今类似 ChatGPT 的模型训练的通用系统支持:DeepSpeed Chat 不仅可以作为基于 3 步指令的 RLHF 管道的系统后端,还可以作为当前单一模型微调探索(例如,以 LLaMA 为中心的微调)和针对各种模型和场景的通用 RLHF 训练。

3 ☕ 快速上手 ☕

3.1 🐼 Installation

git clone https://github.com/microsoft/DeepSpeed.git
cd DeepSpeed
pip install .

git clone https://github.com/microsoft/DeepSpeedExamples.git
cd DeepSpeedExamples/applications/DeepSpeed-Chat/
pip install -r requirements.txt

3.2 🐼一键完成RLHF三阶段训练并生成ChatGPT模型

💛 DeepSpeed-Chat 的 RLHF 示例 1:用喝咖啡的时间类训练一个1.3B ChatGPT 模型

如果有1-2小时喝咖啡的时间,可以尝试使用 DeepSpeed-Chat 训练小型/玩具模型。下面是一个1.3B模型的训练示例:

python train.py --actor-model facebook/opt-1.3b --reward-model facebook/opt-350m --num-gpus 1

通过 DeepSpeed-Chat 在具有 48GB 内存的NVIDIA A6000 GPU 上训练 13 亿参数 ChatGPT 模型的 时间消费如下:

Model Size (A6000-48G)Step 1Step 2Step 3Total
Actor: OPT-1.3B Reward: OPT-350M2900 秒670秒1.2小时2.2小时

💚 DeepSpeed-Chat 的 RLHF 示例 2:在单GPU 节点上为 13B ChatGPT 模型训练,大约花费半天时间
如果有大约半天的时间并且只有一个服务器节点,官方建议在以下单个脚本中使用预训练的 OPT-13B 作为actor模型和 OPT-350M 作为奖励模型的示例来生成最终的 13B ChatGPT模型:

python train.py --actor-model facebook/opt-13b --reward-model facebook/opt-350m --num-gpus 8

在具有 8 个 NVIDIA A100-40G GPU 的 DGX 节点上通过 DeepSpeed-Chat 训练 130 亿参数 ChatGPT 模型的 时间消费如下:

Model Size (A100-40G)Step 1Step 2Step 3Total
Actor: OPT-13B Reward: OPT-350M2.5hr0.25hr10.8hr13.6hr

💙 DeepSpeed-Chat 的 RLHF 示例 3:大型 66B ChatGPT 模型的低预算云训练
想要尝试不同的型号尺寸和配置吗?使用DeepSpeed聊天,用户可以轻松做到这一点。例如,如果您可以访问多节点集群或云资源,并且更喜欢为您的研究或业务训练一个更大、更高质量的模型,可以简单地使用具有所需模型大小的类似脚本,例如66B和GPU计数=64

python train.py --actor-model facebook/opt-66b --reward-model facebook/opt-350m --num-gpus 64

通过 DeepSpeed-Chat 在 8 个 DGX 节点(每个节点具有 8 个 NVIDIA A100-80G GPU)上训练 660 亿参数的 ChatGPT 模型时间消费如下:

Model Size (A100-80g)Step 1Step 2Step 3Total
Actor: OPT-66B Reward: OPT-350M82mins5mins7.5hr9hr

3.3 🐼 演示:单步微调

train.py脚本有一个易于使用的命令行界面,可以通过几个参数启动,包括模型类型、模型大小和要运行的GPU数量。考虑到那些希望使用DeepSpeed Chat只在步骤1或2中微调预训练模型,或者只直接使用自己的参与者和奖励模型检查点来执行我们RLHF管道中的步骤3的用户,DeepSpeed Chat提供了更大的可配置性和灵活性,以适应单个步骤的微调:

  • 🕐 第 1 步 - 监督式微调
# Move into the first step of the pipeline
cd training/step1_supervised_finetuning/

# Run the training script
bash training_scripts/single_gpu/run_1.3b.sh

# Evaluate the model
bash evaluation_scripts/run_prompt.sh
  • 🕑 第 2 步 - 奖励模型
# Move into the second step of the pipeline
cd training/step2_reward_model_finetuning

# Run the training script
bash training_scripts/run_350m.sh

# Evaluate the model
bash evaluation_scripts/run_eval.sh
  • 🕒 第 3 步 - 通过人类反馈强化学习

    作为整个三步InstructGPT管道中最复杂的一步,DeepSpeed Chat的Hyrbid引擎已经实现了足够的加速,以避免大量的训练时间(成本)影响。有关更多信息,请参阅步骤3:强化学习人的反馈(RLHF)。如果您已经拥有经过微调的演员和奖励模型检查点,那么只需运行以下脚本即可启用PPO训练:
# Move into the final step of the pipeline
cd training/step3_rlhf_finetuning/

# Run the training script
bash training_scripts/single_gpu/run_1.3b.sh

3.4 🐼 使用 DeepSpeed-Chat 的 RLHF API 自定义您自己的 RLHF 训练管道

DeepSpeed Chat允许用户使用灵活的API构建自己的RLHF训练管道,如下所示,用户可以使用这些API来重建自己的RL高频训练策略。这使得通用接口和后端能够为研究探索创建广泛的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)

3.5 🐼 服务:插入由 DeepSpeed-Chat 训练的最终模型并进行测试!

为了快速测试DeepSpeed Chat训练的最终模型,我们在下面提供了一个简单的脚本。对于希望使用我们训练有素的模型创建不同LLM应用程序(如个人助理、聊天机器人和代码理解)的用户,请参阅LangChain。

# serve the final model
python chat.py --path  ${PATH-to-your-actor-model}

示例 1:服务于 DeepSpeed-Chat 训练的 1.3B 最终模型的问答环节

示例 2:服务于从 DeepSpeed-Chat 训练的模型的多轮对话

4 🔥 训练性能评估 🔥

4.1 🐲 优越的模型规模和低训练成本

表 1 全面展示了 DeepSpeed-RLHF 系统支持的规模和端到端训练时间。它还展示了在 Azure Cloud 中训练模型的最具成本效益的方法以及相关成本。

GPU SKUsOPT-1.3BOPT-6.7BOPT-13.2BOPT-30BOPT-66BBloom-175B
1x V100 32G1.8 days
1x A6000 48G1.1 days5.6 days
1x A100 40G15.4 hrs3.4 days
1x A100 80G11.7 hrs1.7 days4.9 days
8x A100 40G2 hrs5.7 hrs10.8 hrs1.85 days
8x A100 80G1.4 hrs($45)4.1 hrs ($132)9 hrs ($290)18 hrs ($580)2.1 days ($1620)
64x A100 80G31 minutes51 minutes1.25 hrs ($320)4 hrs ($1024)7.5 hrs ($1920)20 hrs ($5120)

表 1. 针对不同参与者模型大小的端到端 RLHF 训练(第 3 步)和在硬件上运行的固定 350M 关键模型,从单个消费级 GPU (NVIDIA A6000) 到更强大的云设置 (64xA100-80GPU)

4.2 🐲 与现有 RLHF 系统的吞吐量和模型大小可扩展性比较

(I) 单个GPU的模型规模和吞吐量比较
与Colossal AI或HuggingFace DDP等现有系统相比,DeepSpeed Chat的吞吐量高出一个数量级,可以在相同的延迟预算下训练更大的演员模型,或者以更低的成本训练类似大小的模型。例如,在单个GPU上,DeepSpeed可以在单个GPU上将RLHF训练的吞吐量提高10倍以上。虽然CAI Coati和HF-DDP都可以运行1.3B的最大模型大小,但DeepSpeed可以在相同的硬件上运行6.5B的模型,高出5倍。

图 2:第 3 步吞吐量与其他两个系统框架(Colossal AI 的 Coati 和 Huggingface-DDP)的比较,用于在单个 NVIDIA A100-40G 商用 GPU 上加速 RLHF 训练。没有图标代表 OOM 场景。

(II)单节点多GPU模型规模与吞吐量对比
在单个节点的多 GPU 上,DeepSpeed-Chat 在系统吞吐量方面比 CAI-Coati 提速 6-19 倍,比 HF-DDP 提速 1.4-10.5 倍(图 3)。

图 3. 在配备 8 个 NVIDIA A100-40G GPU 的单个 DGX 节点上,不同模型大小的训练管道第 3 步(最耗时的部分)的端到端训练吞吐量比较。没有图标代表 OOM 场景。

(III) Step3中优越的加速性能
图 3 结果的关键原因之一是DeepSpeed-Chat的混合引擎的卓越生成阶段加速,如下所示。

图 4. DeepSpeed Chat 混合引擎的卓越生成阶段加速:在具有 8 个 A100-40G GPU 的单个 DGX 节点上训练 OPT-1.3B 参与者模型 + OPT-350M 奖励模型的时间/序列分解。

5😽 支持的模型 😽

目前, DeepSpeed Chat 支持以下模型系列。随着时间的推移,将继续发展,包括用于 ChatGPT 式培训的新兴模型!

model familysize range
opt0.1B - 66B
bloom0.3B - 176B
gpt_neox1.3B - 20B
gptj1.4B - 6B
gpt_neo0.1B - 2.7B
gpt20.3B - 1.5B
codegen0.35b - 16B

6 🙏引用🙏

  • [1] Schulman, John, et al. “Introducing ChatGPT”,
    https://openai.com/blog/chatgpt (2022).
  • [2] Ouyang, Long, et al. “Training language models to follow
    instructions with human feedback.” arXiv preprint arXiv:2203.02155
    (2022). This is also referred as InstructGPT
  • [3] Stiennon, Nisan, et al. “Learning to summarise with human
    feedback.” Advances in Neural Information Processing Systems 33
    (2020): 3008-3021.
  • [4] Transformers Hugging Face (github.com)
  • [5] CarperAI, https://github.com/CarperAI/trlx
  • [6] lvwerra/trl: Train transformer language models with reinforcement
    learning. (github.com)
  • [7] pg-is-all-you-need/02.PPO.ipynb at master ·
    MrSyee/pg-is-all-you-need (github.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机体系结构-体系结构基础与流水线原理

计算机体系结构:体系结构基础与流水线原理 ​ 计算机体系结构:量化设计与分析一书以RISC-V为例介绍计算机体系结构。本文为第一部分,介绍体系结构的基本知识和流水线原理。笔记内容为原书的第一章,附录A、B、C。 第一章 量化设计…

练习Tomcat

文章目录1. 简述静态网页和动态网页的区别。2. 简述 Webl.0 和 Web2.0 的区别。3. 安装tomcat8,配置服务启动脚本,部署jpress应用。1. 简述静态网页和动态网页的区别。 静态网页: (1)静态网页不能简单地理解成静止不…

SCADE Display(OpenGL)软件设计文档生成工具的设计考虑

SCADE Display(OpenGL)软件设计文档生成工具的设计考虑 2018年6月 1 引言 本文档描述在SCADE Display软件设计文档生成工具(以下简称为SDYSDDGEN)的设计过程中考虑到的一些问题及其解决方案。 2 目标 SDYSDDGEN的目标设定为&…

面向对象程序设计 C++总结笔记(1)

面向对象程序设计 学习方法 理解基本原理掌握程序设计方法加强动手实践 课程目标 理解面向对象程序设计的基本原理,掌握面向对象技术的基本概念和封装性、继承性和多态性,能够具有面向对象程序设计思想。掌握C语言面向对象的基本特性和C语言基础知识&…

就在20号!袋鼠云春季生长大会邀您共观数智生机,我们云上见

如今,数字经济正逐步走向深化应用、规范发展、普惠共享的新阶段,数字经济与实体经济深度融合、基础软件国产化替代成为数字时代主潮流。 「 2023 袋鼠云春季生长大会」乘风而起,带您走近大数据基础软件——数栈,低代码数字孪生世界…

Hadoop之Yarn篇

目录 ​编辑 Yarn的工作机制: 全流程作业: Yarn的调度器与调度算法: FIFO调度器(先进先出): 容量调度器(Capacity Scheduler): 容量调度器资源分配算法&#xff1…

【面试题】对 JSON.stringify()与JSON.parse() 理解

大厂面试题分享 面试题库 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 重新学习这两个API的起因 在本周五有线上的项目,16:30开始验证线上环境。 开始…

【数据挖掘与商务智能决策】第十一章 AdaBoost与GBDT模型

11.1 AdaBoost模型简单代码实现 1.AdaBoost分类模型演示 from sklearn.ensemble import AdaBoostClassifier X [[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]] y [0, 0, 0, 1, 1]model AdaBoostClassifier(random_state123) model.fit(X, y)print(model.predict([[5, 5]]))[0…

使用 Urch 让 Ubuntu 原生远程控制功能稳定可靠

有些时候,使用远程控制能够简化不少运维和操作的事情。 本篇文章分享如何通过开源工具 “Urch(Ubuntu Remote Control Helper)” 让 Ubuntu 原生的远程控制(远程桌面)功能稳定可靠。 方案已经经过 Ubuntu 22.04 LTS …

JVM之低延迟垃圾收集器

目录 低延迟垃圾收集器 概要 各款收集器的并发情况 Shenandoah收集器 Shenandoah相比G1的改进之处 链接矩阵 定义 优点 Shenandoah收集器的工作过程 Brooks Pointer 转发指针技术 转发指针的优缺点 Shenandoah 性能测试 Shenandoah 总结 ZGC 收集器 ZGC的Region的…

编译原理第一章

编译原理笔记 文章目录编译原理笔记day1什么是编译?编译器的结构词法分析概述词法分析的主要任务语法分析概述主要目的主要任务具体实例语义分析概述主要目的主要任务中间代码生成和编译器后端常用的中间表示形式目标代码生成器代码优化器day1 什么是编译&#xff…

Mysql 学习(一)基础知识(待更新)

文章目录服务端处理客户端请求启动项系统变量启动项和系统变量的区别常见的字符集字符集比较规则服务端处理客户端请求 客户端进程向服务器进程发送一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本(处理结果&am…

Idea使用样式主题

目的 花里胡哨的idea显示主题 安装插件 在preferences>plugins中搜索“Material Theme”安装两个中的一个 重启>设置>选择主题 对比度(多选) Contrast Mode:对比度模式,目录结构,选项卡等非文本选择前后的颜色对比度。…

Docker部署RabbitMQ(单机,集群,仲裁队列)

RabbitMQ部署指南 1.单机部署 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一:在线拉取 docker pull rabbitmq:3-management方式二:从本地加载 在课前资料已经提供了镜像包: 上传到虚拟机中后,使用命令加载镜…

【论文阅读】(20230410-20230416)论文阅读简单记录和汇总

(20230410-20230416)论文阅读简单记录和汇总 2023/04/09:很久没有动笔写东西了,这两周就要被抓着汇报了,痛苦啊呜呜呜呜呜 目录 (CVPR 2023): Temporal Interpolation Is All You Need for Dynamic Neural Radiance …

RPC 漫谈:序列化问题

RPC 漫谈:序列化问题 何为序列 对于计算机而言,一切数据皆为二进制序列。但编程人员为了以人类可读可控的形式处理这些二进制数据,于是发明了数据类型和结构的概念,数据类型用以标注一段二进制数据的解析方式,数据结…

echarts formatter如何自定义百分比小数位置,比如取整数。{b} {d}%

echarts formatter如何自定义百分比小数位置,比如取整数。{b} {d}% 一、现状 我有一个 pie 的图表,option 中的 formatter 是这样的: label: {show: true,position: outside,fontSize: 12,formatter: {b} {d}% },图表数据是这样的 二、需…

获取本地电脑连接的所有WIFI密码(适合Windows 11/10/8/7)

背景 如果你的心入职同事问你公司WIFI密码是多少,恰好这时你也忘记密码,用次方法可以实现得到WIFI密码。 如果你忘记现在在WIFI密码,也可以用此方法获取。 实现 1. 使用管理员权限打开 cmd.exe 2. 获取本机所有连接的 WIFI 用户配置 ne…

如何交叉编译程序:以freetype为例

【记录所学】 本博客为学习Linux开发时的笔记。主要记录如何交叉编译程序。 内容会首先介绍程序运行的一些基础知识,其次介绍常见错误的解决方法,然后介绍交叉编译程序的万能命令,最后以一个实际例子介绍如何交叉编译程序。 简要说明&#…

使用篇丨链路追踪(Tracing)很简单:链路实时分析、监控与告警

作者:涯海 前文回顾: 基础篇|链路追踪(Tracing)其实很简单 使用篇|链路追踪(Tracing)其实很简单:请求轨迹回溯与多维链路筛选 在前面文章里面,我们介绍了…