如何用开源的chatgpt训练 DeepSpeed-Chat:最强ChatGPT训练框架,一键完成RLHF训练!

AI资讯1年前 (2023)发布 fengdao
33 0

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

目录 1 什么是 Chat

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

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

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

2 Chat 特性

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

Chat 的摘要包括:

3 ☕ 快速上手 ☕ 3.1

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三阶段训练并生成模型

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

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

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

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

Model Size (A6000-48G)Step 1Step 2Step

Actor: OPT-1.3B : OPT-350M

2900 秒

670秒

1.2小时

2.2小时

-Chat 的 RLHF 示例 2:在单GPU 节点上为 13B 模型训练,大约花费半天时间

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

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

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

Model Size (A100-40G)Step 1Step 2Step

Actor: OPT-13B : OPT-350M

2.5hr

0.25hr

10.8hr

13.6hr

-Chat 的 RLHF 示例 3:大型 66B 模型的低预算云训练

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

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

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

Model Size (A100-80g)Step 1Step 2Step

Actor: OPT-66B : OPT-350M

开源项目怎么练手_开源技巧_如何用开源的chatgpt训练

5mins

7.5hr

9hr

3.3 演示:单步微调

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

# 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

# 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

# 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 使用 -Chat 的 RLHF API 自定义您自己的 RLHF 训练管道

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 服务:插入由 -Chat 训练的最终模型并进行测试!

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

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

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

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

4 训练性能评估 4.1 优越的模型规模和低训练成本

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

GPU -1.3BOPT-6.7BOPT-13.2BOPT—175B

1x V100 32G

1.8 days

1x A6000 48G

1.1 days

5.6 days

1x A100 40G

15.4 hrs

3.4 days

1x A100 80G

11.7 hrs

1.7 days

4.9 days

8x A100 40G

2 hrs

5.7 hrs

10.8 hrs

1.85 days

8x A100 80G

1.4 hrs($45)

4.1 hrs ($132)

开源技巧_开源项目怎么练手_如何用开源的chatgpt训练

9 hrs ($290)

18 hrs ($580)

2.1 days ($1620)

64x A100 80G

31

51

1.25 hrs ($320)

4 hrs ($1024)

7.5 hrs ($1920)

20 hrs ($5120)

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

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

(I) 单个GPU的模型规模和吞吐量比较

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

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

(II)单节点多GPU模型规模与吞吐量对比

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

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

(III) Step3中优越的加速性能

图 3 结果的关键原因之一是-Chat的混合引擎的卓越生成阶段加速,如下所示。

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

5 支持的模型

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

model range

opt

0.1B – 66B

bloom

0.3B – 176B

1.3B – 20B

gptj

1.4B – 6B

0.1B – 2.7B

gpt2

0.3B – 1.5B

0.35b – 16B

6 引用

© 版权声明

相关文章

暂无评论

暂无评论...