https://www.toutiao.com/article/7221170501350081059/
ChatGPT的成功让AI的风势高涨,AI时代真正一步步来临。ChatGPT很优秀,但是也很花钱而且数据安全和隐私是个问题,所以AI 开源社区也没闲着,从ChatLLaMa、Alpaca、Vicuna、Databricks-Dolly等相继涌现。但是截止目前为止,尚没有一个模型可以做到规模化的端到端的基于人工反馈机制的强化学习(RLHF)系统,所以要这训练个功能可以类似ChatGPT模型仍然是和巨大的考验。究其根本原因是ChatGPT模型基于InstructGPT论文中的RLHF方式,而开源的DLL训练基本都是通过预训练然后微调处理的,这样存在各种局限。
但是这个问题已经被微软自己给解决了,虽然微软已经可以主导OpenAI和ChatGPT,但是他们的研究人员也没有藏着掖着,今天开源了DeepSpeed-Chat,更加便捷的实现定制化的类ChatGPT的模型。
概述
DeepSpeed-Chat具有以下三大核心功能以及其他特性:
一、简化 ChatGPT 类型模型的训练和强化推理体验。
用一个脚本实现复杂的多步骤训练过程,包括使用Huggingface 预训练的模型、使用DeepSpeed-RLHF系统运行InstructGPT训练的所有三个步骤、生成定制的类ChatGPT模型。还提供了一个易于使用的推理API,用于用户在模型训练后测试对话式交互。
二、RLHF 模块:DeepSpeed-RLHF 实现了InstructGPT 论文中对应的训练模式,并确保包括:监督微调(SFT),奖励模型微调和基于人类反馈的强化学习(RLHF)三个基本步骤。另外,还提供了数据抽象和混合功能,以支持多源的数据训练。
三、RLHF 系统:整合训练和推理能力为 一个统一的混合引擎(DeepSpeed Hybrid Engine简称 DeepSpeed-HE)中进行RLHF 训练。
DeepSpeed-HE 实现在RLH 中无缝地在推理和训练模式之间切换,从而利用DeepSpeed-Inference 的各种优化,如张量并行计算和高性能CUDA算子进行语言生成,同时对训练部分还能从ZeRO-和LoRA-based 内存优化策略中受益。
四、高效性和经济性:DeepSpeed-HE 比现有系统快15倍以上,实现RLHF的快速经济训练。比如,Azure 云上训练一个 OPT-13B模型只9 小时(成本300刀)。训练OPT-30B模型用18小时(600刀)足矣。
五、强大的扩展和并行性:DeepSpeed-HE能够支持训练拥有数千亿参数的模型,并在多节点多GPU系统上展现出强大的扩展性。在64x A100-80GGPU的算力下训练一个130亿参数的模型,只需最快1.25小时就能完成训练。训练一个1750亿的类ChatGPT巨型参模型,只需不到一天即可,。
六、RLHF训练的普及化:最少仅需单个GPU,就可以训练超过130亿参数的模型。
全RLHF训练流程
根据InstructGPT 论文的方法,DeepSpeed在DeepSpeed-Chat中整合一栈式端到端的训练流程。
流程包括三个主要步骤:
监督微调(SFT)——使用确定的问题回答来微调预训练语言模型来提供各种查询;
奖励模型微调(RW)—— 使用人工干预打分的问题的对应的多个答案数据集来训练出一个独立的奖励模型;
RLHF训练 —— 利用PPO(Proximal Policy Optimization)算法,根据RW模型的奖励反馈进一步微调SFT模型。
为了提高训练的质量,另外增加两个额外的步骤(功能):
指数移动平均(EMA) —— 选择基于EMA的检查点进行最终评估。
混合训练——将预训练目标(即下一个单词预测)与PPO目标混合,以防止在诸如 SQuAD2.0等公开基准测试中的性能损失。
这两个额外的步骤,可以提供更高的模型质量:
根据InstructGPT的经验,EMA 通常比传统的最终训练模型提供更好的响应质量,而混合训练可以帮助模型保持预训练基准解决能力。
另外DeepSpeed-Chat还提供了数据抽象和混合能力,可使用多个不同来源的数据集训练模型以获得更好的模型质量。
抽象数据集层,用来统一不同数据集的格式;
数据拆分/混合功能,实现对多个数据集在3个训练步骤中被适当地混合然后拆分。
基准测试
DeepSpeed还提供对了与其他RLHF系统(如 Colossal-AI或HuggingFace)比较的基准测试。
首先是吞吐量比较:
在单个GPU条件下DeepSpeed 具有10倍以的性能提高。
在多GPU情况下,比 Colossal-AI快了6-19 倍,比HuggingFace DDP快1.4 -10.5倍。
模型可扩展性方面:
Colossal-AI 支持单GPU运行最大1.3B的模型,在单个A100 40G节点上运行 6.7B的模型。
DeepSpeed-HE 可以在相同的硬件上分别运行6.5B和50B的模型,具有7.5倍的提升。
有效性分析
DeepSpeed-HE 在1.3B到175B 的模型大小范围内可以实现的最佳有效吞吐量。对6.7B-66B 范围内的模型最为高效。超出这个范围时,由于内存有限,无法支持更大的批量大小,吞吐量下降,但仍比小型 1.3B 模型的效率高 1.2 倍。
可扩展性分析。 不同模型大小的最佳有效吞吐量取决于不同的 GPU 数量。部分原因是因为一些较大的模型大小需要更多的内存来运行。基于此,我们接下来讨论 DeepSpeed-HE 的可扩展性特性。
总结
总之,微软的开源了DeepSpeed,给我们另外的一种选择,更多信息,可以在其github仓库查看(github/ microsoft/DeepSpeed),至于效果,方法和脚本都给我们了,剩下的就看我们的数据集质量了。