如何训练自己的ChatGPT

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

管她前浪,还是后浪?

能浪的浪,才是好浪!

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

源码精品专栏

 
  • 原创 | Java 2021 超神之路,很肝~

  • 中文详细注释的开源项目

  • RPC 框架 Dubbo 源码解析

  • 网络应用框架 Netty 源码解析

  • 消息中间件 RocketMQ 源码解析

  • 数据库中间件 Sharding-JDBC 和 MyCAT 源码解析

  • 作业调度中间件 Elastic-Job 源码解析

  • 分布式事务中间件 TCC-Transaction 源码解析

  • Eureka 和 Hystrix 源码解析

  • Java 并发源码

来源:zhuanlan.zhihu.com/

p/616504594

  • 计划

  • 实践

    • 加速推理

    • 测试

  • 总结

93f0841ed688f275eefaadd6051de7a2.jpeg


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。

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

c47a7d8e5604e778068f9bc03b9409a1.png

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

那么,说干就干!

b86a757ed2661f625f7b4ab2003aae72.png

为什么要训练自己的 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 查看显存和显卡的用量:

22cc995a2634d88c1d31330874fedde2.png

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

f65242aa1927d159d98818f9ea3c8aae.png

推理

单卡选手可以直接执行:

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

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

e65cc85b709b41c4ccd364779961a369.png

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

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

server_name="0.0.0.0"

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

加速推理

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

测试

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

Good Examples

11500ad6a8e50b3df870627001a68435.png

Bad Examples

a27b0432a5ad51021ebf898382f9430c.png

可以看出模型确实在讲中文,也能依据中文的指令和输入完成一些工作。但是由于 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 教我做饭,感兴趣的朋友可以保持关注!



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

27a8e1ae145a52ca85d68f90152e5e02.png

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

22bd131cf5837691fefc5fa2062807c4.jpeg

0b23fbf694618ca3d6b804917e326465.jpeg

d9b3daafceaff5d8e060d04a07cee6aa.jpeg

7efa428eed9a2dc9e38055298c3d21bb.jpeg

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

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

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

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哎,我要改行了!ChatGPT版Excel?动动嘴皮子就把表格改完了!

转自:机器之心报道 编辑:小舟、泽南 这就是 ChatGPT 进入 Excel 后的样子? Excel 是最常见的数据统计工具,用于归纳和查询数据信息。在其之上,通常我们查询信息需要找到相关的单元格,获取其中的数据&#x…

chatGPT即将取代你——chatGPT做技术调研

第一问:如何实现一个在线电子表格 要实现一个在线电子表格,您需要使用以下步骤: 选择一种编程语言和一个Web框架来创建您的应用程序。常见的Web框架包括Ruby on Rails、Django、Flask、Express等。您也可以选择使用现有的开源电子表格软件&…

玩转ChatGPT:Excel操作初探

一、写在前面 首先还是让小Chat推销下自己: Excel 表格制作是个技术活,你掌握了吗?没关系,现在有了 ChatGPT,让 Excel 辅助操作变得更简单!再也不用苦恼于数据分析和整理了,让 ChatGPT 成为你…

用ChatGPT处理word表格数据:直接采用ChatGPt和利用ChatGPT编写python脚本两种方法

目录 摘要0. 测试数据生成1. 直接使用ChatGPT进行处理。2 使用ChatGPT生成python脚本进行处理3对比分析4 结束语 摘要 为测试ChatGP在word文档表格的处理能力,本文列举直接使用ChatGPT和利用ChatGPT编写python脚本两种方式,均比较容易的实现了预定目标。…

用ChatGPT做excel表格真香!只需动嘴提要求和复制粘贴

来源:量子位 前排提示:文末送书 托ChatGPT的福,梦想中让Excel自己统计数据,现在成真了。 △ 图源:抖音秦远国际物流 只需输入要求、数据,ChatGPT就能从头做个表。 想要增加行列、进行表内计算,通…

ChatGPT | Word表格整体输出

本文来自欧巴Godwin的博客 ,引用必须注明出处! 用LangChain读取Word和PDF的文字内容是好的,但如果内容包含表格则读取出来的内容完全没法看。用ChatGPT往往是做企业知识库,所以会出现一个场景,即员工想让ChatGPT讲解包…

postman发送post请求一直不成功

我的post请求方式 postman结果返回415 后台springboot拦截到的路径,此时发现url中存在error 解决方案: 第一步:添加头部 第二步:使用原生的json格式,点击send 返回的正确结果

Postman模拟大量请求

一、Postman Postman 是一个款 HTTP 请求模拟工具 二、请求演示 首先演示一下 Postman 最基本的使用,创建一个 Spring Boot 项目,测试的代码如下: import org.springframework.web.bind.annotation.GetMapping; import org.springframew…

(ChatGPT)429 You are being rate limited

我们在注册或者登录chatGPT时,网页时常会出现ChatGPT 429 You are being rate limited。当您尝试在短时间内向 ChatGPT API 发送过多请求时,通常会出现此错误消息。简单来说,系统无法处理您的请求。 本文提供一些解决方案,供参考…

微软杀疯了!全家桶嵌入ChatGPT,云平台Azure强到发指

【导读】微软又双叒出大招了!ChatGPT即将整合进Azure,谷歌一个月惨遭Triple Kill 2023刚开年,微软就杀疯了! 搜索引擎必应、办公全家桶Office、云计算平台Azure,相继加入当今最火爆AI语言模型——ChatGPT。 吓得谷…

刺激!微软或将ChatGPT加入Word、PPT和Excel全家桶!

点击下方卡片,关注“CVer”公众号 AI/CV重磅干货,第一时间送达 点击进入—>CV微信技术交流群 转载自:新智元 | 编辑:编辑部 【导读】微软又憋大招了,ChatGPT或将整合进Office,谷歌一周内破防两次&#x…

王炸!微软发布Visual ChatGPT:视觉模型加持ChatGPT实现丝滑聊天

近来,AI领域迎来各个领域的大突破,ChatGPT展现出强大的语言问答能力和推理能力,然而作为一个自然语言模型,它无法处理视觉信息。 与此同时,视觉基础模型如Visual Transformer或者Stable Diffusion等,则展现…

微软下个十年的想象力,藏在ChatGPT里

解释最新科技进展,报道硅谷大事小情 点击上方“硅星人”关注我们~ 押注AI再放大招,微软要把ChatGPT嵌入旗下全家桶。 —— 文|Juny 编辑|VickyXiao 老生常谈的人工智能技术,去年终于在应用领域迎来了一次久违的爆发。…

微软支持的ChatGPT激增,但不要低估苹果和谷歌

微软和 OpenAI 可能在 AI 聊天机器人爆炸式增长的市场中具有先发优势,但不要排除其他一些可以访问大量 AI 训练数据的科技巨头,例如 Apple 和 Google。 通过其对 ChatGPT 开发商 OpenAI 的早期和持续支持,微软在AI 军备竞赛中目前处于领先地…

ChatGPT火了!微软砍掉元宇宙

来源:数据观综合 编辑:蒲蒲 ChatGPT从2022年底火到现在,在全球范围内掀起热潮,风头甚至盖过了元宇宙。 近日,投资咨询机构瑞银发布的一项最新研究报告显示,仅仅发布两个月,ChatGPT月活跃用户已达…

两款语音合成助手,微软语音合成

一点红语音合成 By:zbb2012 语音合成算是吾爱中热度比较高的一类工具了 之前推荐过一款微软语音合成助手,不过由于长时间不更新现在也不怎么好用了 这款工具调用的Edge语音合成接口,效果跟声音类型都跟微软的差不多 比较棒的是没有字数限制…

OpenPie 和 ChatGPT 聊聊云上数据计算的那些事儿

要说时下科技圈最火的新技术话题,那就非 ChatGPT 莫属了。由它引发的各类 “人工智能(AI)能否取代人工” 的讨论狂飙不停,抛开法律和道德层面的争议,ChatGPT 确实可以准确地回答用户大部分的通用知识问题。那么大家是否…

爆火的ChatGPT太强了!写代码、改bug,网友:可取代Stack Overflow了

点击上方“Java基基”,选择“设为星标” 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应…

基于C# .NetCore WebApi 接入ChatGPT 方法

1.新建一个.NetCore WebApi项目,演示是基于.Net Core 6 2.添加Nuget引用 OpenAi 3.新建一个控制器 ChatGPTController using Microsoft.AspNetCore.Mvc; using OpenAI_API; using OpenAI_API.Completions;namespace ChatGPTApi.Controllers {public class ChatGPTController : …