Redian新闻
>
如何训练自己的ChatGPT

如何训练自己的ChatGPT

公众号新闻

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 
来源:zhuanlan.zhihu.com/
p/616504594

LLM 这两周不断带给我们震撼与惊喜。GPT-4 的发布让大家对 LLM 的想象空间进一步扩大,而这些想象在本周眼花缭乱的 LLM 应用发布中逐渐成为现实,下面分享一位朋友训练ChatGPT的完整方案,供大家参考~

LLM 相关的开源社区这两周涌现了很多优秀的工作,吸引了很多人的关注。其中,我比较关注的是 Stanford 基于 LLaMA 的 Alpaca 和随后出现的 LoRA 版本 Alpaca-LoRA。原因很简单,便宜

Alpaca 宣称只需要 600$ 不到的成本(包括创建数据集),便可以让 LLaMA 7B 达到近似 text-davinci-003 的效果。而 Alpaca-LoRA 则在此基础上,让我们能够以一块消费级显卡,在几小时内完成 7B 模型的 fine-turning。

下面是开源社区成员分享的可以跑通的硬件规格及所需时间:

根据大家分享的信息,fine-tune 7B 模型仅需要 8-10 GB vram。因此我们很有可能可以在 Google Colab 上完成你所需要的 fine-tune!

那么,说干就干!

为什么要训练自己的 ChatGPT ?

我想到了以下的方面:

  • 对我个人而言,这非常非常 cooooool !
  • 让模型能够讲我熟悉的语言
  • 让模型替我写注释和测试代码
  • 让模型学习产品文档,帮我回答用户提出的小白问题
  • ...

计划

那么,为了训练自己的 Chat我们需要做那些事儿呢? 理论上需要如下步骤:

第一步:准备数据集

fine-tune 的目标通常有两种:

  • 像 Alpaca 一样,收集 input/output 生成 prompt 用于训练,让模型完成特定任务
  • 语言填充,收集文本用于训练,让模型补全 prompt。

以第一种目标为例,假设我们的目标是让模型讲中文,那么,我们可以通过其他 LLM (如 text-davinci-003)把一个现有数据集(如 Alpaca)翻译为中文来做 fine-tune。实际上这个想法已经在开源社区已经有人实现了。

第二步:训练并 apply LoRA

在第一步准备的数据集上进行 fine-tune。

第三步:合并模型(可选)

合并 LoRA 与 base 可以加速推理,并帮助我们后续 Quantization 模型。

第四步:quantization(可选)

最后,Quantization 可以帮助我们加速模型推理,并减少推理所需内存。这方面也有开源的工具可以直接使用。

https://github.com/megvii-research/Sparsebit/blob/main/large_language_models/llama/quantization/README.md

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

实践

柿子挑软的捏,我们从简单的目标开始:让模型讲中文。

为了达成这个目标,我使用的数据集是 Luotuo 作者翻译的 Alpaca 数据集,训练代码主要来自 Alpaca-LoRA。

准备

由于我打算直接使用 Alpaca-LoRA 的代码,我们先 clone Alpaca-LoRA:

git clone git@github.com:tloen/alpaca-lora.git

下载数据集:

wget https://github.com/LC1332/Chinese-alpaca-lora/blob/main/data/trans_chinese_alpaca_data.json

创建虚拟环境并安装依赖(需要根据不同环境的 cuda 版本调整):

conda create -n alpaca python=3.9
conda activate alpaca
cd alpaca-lora
pip install -r requirements.txt

训练

单卡选手很简单,可以直接执行:

python finetune.py \
    --base_model 'decapoda-research/llama-7b-hf' \
    --data_path '/path/to/trans_chinese_alpaca_data.json' \
    --output_dir './lora-alpaca-zh'

双卡选手相对比较麻烦,需要执行:

WORLD_SIZE=2 CUDA_VISIBLE_DEVICES=0,1 torchrun \
--nproc_per_node=2 \
--master_port=1234 \
finetune.py \
--base_model 'decapoda-research/llama-7b-hf' \
--data_path '/path/to/trans_chinese_alpaca_data.json' \
--output_dir './lora-alpaca-zh'

在我的环境下(2 * RTX 3090 Ti 24GB),需要额外配置 micro_batch_size 避免 OOM。

--micro_batch_size 2

推荐的其他额外参数:

--num_epochs 2

训练的过程比较稳定,我在训练过程中一直在用 nvitop 查看显存和显卡的用量:

下面是我训练时模型收敛的情况,可以看到差不多 2 epochs 模型就收敛的差不多了:

推理

单卡选手可以直接执行:

python generate.py --base_model "decapoda-research/llama-7b-hf" \
--lora_weights './lora-alpaca-zh' \
--load_8bit

双卡选手还是会麻烦点,由于现在还不支持双卡推理,我手动修改了 generate.py,添加了第 47 行:

而后,执行上面的命令即可。

如果你的推理运行在服务器上,想要通过其他终端访问,可以给 launch 方法添加参数:

server_name="0.0.0.0"

此时打开浏览器,享受你的工作成果吧 :D

加速推理

Alpaca-LoRA 提供了一些脚本,如 export_hf_checkpoint.py 来合并模型。合并后的模型可以通过 llamap.cpp 等项目达到更好的推理性能。

测试

最后,让我们对比下原生 Alpaca 与自己 fine-tune 的 Alpaca,看看 fine-tune 到底有没有让模型学会讲中文吧!

Good Examples

Bad Examples

可以看出模型确实在讲中文,也能依据中文的指令和输入完成一些工作。但是由于 LLaMA 本身训练数据大部分为英文以及 Alpaca 数据集翻译后的质量不足,我们的模型有些时候效果不如原生 Alpaca。此时不得不感叹高质量数据对 LLM 的重要性

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

总结

作为一个分布式系统方向的工程师,fine-tune 一个 LLM 的过程遇到了不少问题,也有很多乐趣。虽然 LLaMA 7B 展现出的能力还比较有限,我还是很期待后面开源社区进一步的工作。

后续我也打算尝试 fine-tune 特定目的的 LLM,比如让 LLM 教我做饭,感兴趣的朋友可以保持关注!



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
印象微软再扔AI聊天画图炸弹!视觉模型加持ChatGPT,Visual ChatGPT横空出世特制自己的ChatGPT:多接口统一的轻量级LLM-IFT平台ChatGPT引领AIGC!Lehigh最新《AI生成内容》全面综述,44页详述GAN到ChatGPT发展历程AIGC教程:Stable Diffusion精进,如何训练特定画风LoRA模型?训练自己的ChatGPT!!美国西部乡村音乐剧《I love Bandits》(1)改革开放几十年迷外驯化入骨髓第四范式开源强化学习研究通用框架,支持单智能体、多智能体训练,还可训练自然语言任务!训练速度提升17%突然出手!意大利封杀ChatGPT!马斯克也下场呼吁限制ChatGPT!AI发展可能超越人类思维?问ChatGPT:不会用ChatGPT怎么办?ChatGPT全新功能公开演示!OpenAI总裁:ChatGPT会重新定义计算机(全文记录)「ChatGPT之母」最新采访:GPT-4离超级智能还很远,半年内不会训练GPT-5巴黎市长将重修Châtelet 广场以方便行人【城事】巴黎市长将重修Châtelet 广场以方便行人ChatGPT背后大模型如何高效训练?京东探索研究院、悉大、中科大60页论文详述五大类训练方法ChatGPT带火AI芯片,赚翻了的英伟达发布新核弹:ChatGPT专用GPU,让推理提速10倍!集成ChatGPT后必应日活量首破亿!微软推出Azure OpenAI ChatGPT 服务,GPT-4下周发布雷军宣布进军ChatGPT大战!国内ChatGPT赛道一触即发!COSTCO的佛跳墙,牙痛的始末很多人担心被ChatGPT取代,我们关心ChatGPT的歧视与遮蔽ChatGPT-5相比ChatGPT-4,将会有哪些变化?科早ChatGPT:如何应对ChatGPT?二级市场闭门研讨会精选 | S7E01 硅谷徐老师苹果「余额宝」 四天吸金 69 亿元;微软拟 10 倍价推私有版 ChatGPT;ChatGPT 「建国」做女王 | 极客早知道追剧是件苦差事,聊聊《狂飙》ChatGPT能有意识吗:关于ChatGPT的误解与夸大ChatGPT是怎么变得这么强的?拆解追溯ChatGPT各项能力的起源苹果今晨推送新系统/ChatGPT出现泄露聊天记录的风险/英伟达ChatGPT同款超算上云如何训练猫咪使用猫砂盆马斯克AI实验室名字敲定/ Win11任务栏添加ChatGPT搜索/ 沃尔玛限制员工使用ChatGPT…今日更多新鲜事在此"中国必须有自己的ChatGPT,现在特别像'两弹一星'的时候"人类“3.0”意识形态战场——ChatGPT的政治化终局ChatGPT的价值观及立场(四)ChatGPT长出狗身子!波士顿动力ChatGPT狗,说话、整理数据超级6ChatGPT在律所:聪明人已经在用ChatGPT吊打同事了!微软发布Visual ChatGPT:视觉模型加持ChatGPT实现丝滑聊天
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。