chatgpt可以根据自己需要训练吗
淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】
作者 | Uranus,仅做学术分享
原文链接【【网址】】/p/616504594
LLM 这两周不断带给我们震撼与惊喜。GPT-4 的发布让大家对 LLM 的想象空间进一步扩大,而这些想象在本周眼花缭乱的 LLM 应用发布中逐渐成为现实,下面分享一位朋友训练ChatGPT的完整方案,供大家参考~
LLM 相关的开源社区这两周涌现了很多优秀的工作,吸引了很多人的关注。其中,我比较关注的是 Stanford 基于 LLaMA 的 Alpaca 和随后出现的 LoRA 版本 Alpaca-LoRA。原因很简单,便宜。
Alpaca 宣称只需要 600$ 不到的成本(包括创建数据集),便可以让 LLaMA 7B 达到近似 text-da【【微信】】 的效果。而 Alpaca-LoRA 则在此基础上,让我们能够以一块消费级显卡,在几小时内完成 7B 模型的 fine-turning。
下面是开源社区成员分享的可以跑通的硬件规格及所需时间:
根据大家分享的信息,fine-tune 7B 模型仅需要 8-10 GB vram。因此我们很有可能可以在 Google Colab 上完成你所需要的 fine-tune!
那么,说干就干!
我想到了以下的方面:
对我个人而言,这非常非常 cooooool !
让模型能够讲我熟悉的语言
让模型替我写注释和测试代码
让模型学习产品文档,帮我回答用户提出的小白问题
...
那么,为了训练自己的 Chat我们需要做那些事儿呢? 理论上需要如下步骤:
fine-tune 的目标通常有两种:
像 Alpaca 一样,收集 input/output 生成 prompt 用于训练,让模型完成特定任务
语言填充,收集文本用于训练,让模型补全 prompt。
以第一种目标为例,假设我们的目标是让模型讲中文,那么,我们可以通过其他 LLM (如 text-da【【微信】】)把一个现有数据集(如 Alpaca)翻译为中文来做 fine-tune。实际上这个想法已经在开源社区已经有人实现了。
在第一步准备的数据集上进行 fine-tune。
合并 LoRA 与 base 可以加速推理,并帮助我们后续 【【微信】】 模型。
最后,【【微信】】 可以帮助我们加速模型推理,并减少推理所需内存。这方面也有开源的工具可以直接使用。
柿子挑软的捏,我们从简单的目标开始:让模型讲中文。
为了达成这个目标,我使用的数据集是 Luotuo 作者翻译的 Alpaca 数据集,训练代码主要来自 Alpaca-LoRA。
由于我打算直接使用 Alpaca-LoRA 的代码,我们先 clone Alpaca-LoRA:
下载数据集:
创建虚拟环境并安装依赖(需要根据不同环境的 cuda 版本调整):
单卡选手很简单,可以直接执行:
双卡选手相对比较麻烦,需要执行:
在我的环境下(2 * RTX 3090 Ti 24GB),需要额外配置 micro_batch_size 避免 OOM。
推荐的其他额外参数:
训练的过程比较稳定,我在训练过程中一直在用 nvitop 查看显存和显卡的用量:
下面是我训练时模型收敛的情况,可以看到差不多 2 epochs 模型就收敛的差不多了:
单卡选手可以直接执行:
双卡选手还是会麻烦点,由于现在还不支持双卡推理,我手动修改了 generate.py,添加了第 47 行:
而后,执行上面的命令即可。
如果你的推理运行在服务器上,想要通过其他终端访问,可以给 launch 方法添加参数:
此时打开浏览器,享受你的工作成果吧 :D
Alpaca-LoRA 提供了一些脚本,如 export_hf_checkpoint.py 来合并模型。合并后的模型可以通过 llamap.cpp 等项目达到更好的推理性能。
最后,让我们对比下原生 Alpaca 与自己 fine-tune 的 Alpaca,看看 fine-tune 到底有没有让模型学会讲中文吧!
可以看出模型确实在讲中文,也能依据中文的指令和输入完成一些工作。但是由于 LLaMA 本身训练数据大部分为英文以及 Alpaca 数据集翻译后的质量不足,我们的模型有些时候效果不如原生 Alpaca。此时不得不感叹高质量数据对 LLM 的重要性。
作为一个分布式系统方向的工程师,fine-tune 一个 LLM 的过程遇到了不少问题,也有很多乐趣。虽然 LLaMA 7B 展现出的能力还比较有限,我还是很期待后面开源社区进一步的工作。
后续我也打算尝试 fine-tune 特定目的的 LLM,比如让 LLM 教我做饭,感兴趣的朋友可以保持关注!
完
未来社会有两类人,一类人是会使用AI,甚至会用AI做创新工具的人、另一类是不了解AI或者抵触AI的人。
而前者的生产力,至少是后者的10倍。
为了跟上AI时代我干了一件事儿,创立了一个,想带着大家一起探索ChatGPT和新的AI时代。
8天时间,我的星球已经快1500成员,已经跃居ChatGPT&AI类全国第3!
简单说下这个星球能给大家提供什么:
星球福利:
1、加入活跃用户每月前3名,可以门票全额返还?!
2、会邀请你加入ChatGPT会员交流群,群特别活跃。
3、会赠送5份完整的ChatGPT使用手册和66个ChatGPT副业赚钱手册。
4、教你开通ChatGPTPlus账号,提前使用【【微信】】.0 。
星球分享:
1、ChatGPT的使用方法,最新资讯,商业价值。
2、一些副业思考、创业案例、落地案例分享。
3、探讨未来关于ChatGPT的机遇,帮助大家解决遇到的问题。
4、ChatGPT全网最新最全的行业报告文档免费下载。
5、提供访问ChatGPT的网络渠道。
6、4月份开始带大家搞副业收入 !
7、提供一整年的售后服务,一起搞副业
8、星球提供ChatGPT和MJ专栏课程,价值599元 !
其它福利还在筹划中...?不过,我给你大家保证,加入星球后,收获的价值会远远大于今天加入的门票费用 !
现在星球在运营初期,正式运营价格定为299,目前我给出了加入的最低价149,后面星球成员每增加100人,星球费用会增长10元 。早就是优势,建议大家尽早以便宜的价格加入!
当然星球有三天内不满意随时全额退费的规则,你也可以进来看看,看看我们这10多天的内容积累,看完再决定是不是要退出。
ChatGPT 用了哪个机器学习模型 chatgpt模型开源不
chatgpt官网,chatgpt国内能用吗,chatgpt怎么用,chatgpt怎么读作者 | 微软 DeepSpeed 开源项目组
来源 | 开源社(中文版授权开源社首发)
概述
近日来,ChatGPT 及类似模型引发了人工智能(AI)领域的一场风潮。这场风潮对数字世界产生了革命性影响。ChatGPT 类模型具有惊人的泛用性,能够执行归纳、编程、翻译等任务,其结果与人类专家相当甚至更优。为了使 ChatGPT 等模型的训练和部署更轻松,AI 开源社区进行了各种尝试(例如 ChatLLaMa、Alpaca、【【微信】】、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.git
cd DeepSpeed
pip install .
git clone https://github.com/microsoft/DeepSpeedExamples.git
cd DeepSpeedExamples/applications/DeepSpeed-Chat/
pip install -r re【【微信】】.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 explian 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 算法提供通用接口和后端。
完整的 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.