训练个中文版ChatGPT没那么难:不用A100,开源Alpaca-LoRA+RTX 4090就能搞定

5ad57242826ebdbb063bf273cbe6bd6a.gif

©作者 | 机器之心编辑部

来源 | 机器之心

Alpaca-LoRA 将微调类 ChatGPT 模型的算力需求降到了消费级,训练个自己的中文对话模型真就没那么难了。

2023 年,聊天机器人领域似乎只剩下两个阵营:「OpenAI 的 ChatGPT」和「其他」。

ChatGPT 功能强大,但 OpenAI 几乎不可能将其开源。「其他」阵营表现欠佳,但不少人都在做开源方面的努力,比如前段时间 Meta 开源的 LLaMA。

LLaMA 是一系列模型的总称,参数量从 70 亿到 650 亿不等,其中,130 亿参数的 LLaMA 模型「在大多数基准上」可以胜过参数量达 1750 亿的 GPT-3。不过,该模型并没有经过指令微调(instruct tuning),因此生成效果较差。

为了提高模型性能,来自斯坦福的研究者帮助其完成了指令微调的工作,训练了一个名为 Alpaca(羊驼)的 70 亿参数新模型(基于 LLaMA 7B)。具体来说,他们让 OpenAI 的 text-davinci-003 模型以 self-instruct 方式生成 52K 指令遵循(instruction-following)样本,以此作为 Alpaca 的训练数据。实验结果表明,Alpaca 的很多行为都与 text-davinci-003 类似。也就是说,只有 7B 参数的轻量级模型 Alpaca 性能可媲美 GPT-3.5 这样的超大规模语言模型。

a27d62bc470d0197b9c99849abaf2e27.png

对于普通研究者来说,这是一种切实可行的廉价微调方式,不过需要的运算量仍然较大(作者表示他们在 8 个 80GB A100 上微调了 3 个小时)。而且,Alpaca 的种子任务都是英语,收集的数据也都是英文,因此训练出来的模型未对中文优化。

为了进一步降低微调成本,另一位来自斯坦福的研究者 ——Eric J. Wang 使用 LoRA(low-rank adaptation)技术复现了 Alpaca 的结果。具体来说,Eric J. Wang 使用一块 RTX 4090 显卡,只用 5 个小时就训练了一个和 Alpaca 水平相当的模型,将这类模型对算力的需求降到了消费级。而且,该模型可以在树莓派上运行(用于研究)。

adab359697a40fb7565c91ea37681f1e.png

▲ LoRA 的技术原理。LoRA 的思想是在原始 PLM 旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的 intrinsic rank。训练的时候固定 PLM 的参数,只训练降维矩阵 A 与升维矩阵 B。而模型的输入输出维度不变,输出时将 BA 与 PLM 的参数叠加。用随机高斯分布初始化 A,用 0 矩阵初始化 B,保证训练的开始此旁路矩阵依然是 0 矩阵(引自:https://finisky.github.io/lora/)。LoRA 的最大优势是速度更快,使用的内存更少,因此可以在消费级硬件上运行。

b75755be5d29fafdb548bb3836eef480.png

▲ Eric J. Wang 发布的 Alpaca-LoRA 项目

项目地址:

https://github.com/tloen/alpaca-lora

对于想要训练自己的类 ChatGPT 模型(包括中文版类 ChatGPT)但又没有顶级算力资源配置的研究者来说,这无疑是一大惊喜。因此,在 Alpaca-LoRA 项目问世后,围绕该项目的教程和训练成果不断涌现,本文将介绍其中的几个。

67a29837fb0d950f13eee43aed43bc6d.png

如何使用Alpaca-LoRA微调LLaMA

在 Alpaca-LoRA 项目中,作者提到,为了廉价高效地进行微调,他们使用了 Hugging Face 的 PEFT。PEFT 是一个库(LoRA 是其支持的技术之一),可以让你使用各种基于 Transformer 的语言模型并使用 LoRA 对其进行微调。好处在于,它允许你在一般的硬件上廉价而有效地微调模型,并有较小的(也许是可组合的)输出。

在近期的一篇博客中,几位研究者介绍了如何使用 Alpaca-LoRA 来微调 LLaMA。

使用 Alpaca-LoRA 之前,需要具备一些先决条件。首先是 GPU 的选择,得益于 LoRA,现在你可以在 NVIDIA T4 这样低规格 GPU 或 4090 消费级 GPU 上完成微调;此外,你还需要申请 LLaMA 权重,因为其权重并不对外公开。

先决条件具备了,接下来就是如何使用 Alpaca-LoRA。首选你需要克隆 Alpaca-LoRA 存储库,代码如下:

git clone https://github.com/daanelson/alpaca-lora
cd alpaca-lora

其次,获取 LLaMA 权重。将下载到的权重值存储到名为 unconverted-weights 文件夹里,文件夹层次结构就像下面这样:

unconverted-weights
├── 7B
│   ├── checklist.chk
│   ├── consolidated.00.pth
│   └── params.json
├── tokenizer.model
└── tokenizer_checklist.chk

权重存储好后,接着使用以下命令将 PyTorch checkpoint 的权重转换为 transformer 兼容的格式:

cog run python -m transformers.models.llama.convert_llama_weights_to_hf \--input_dir unconverted-weights \--model_size 7B \--output_dir weights

得到最终的目录结构应该是这样的:

weights
├── llama-7b
└── tokenizermdki

处理好上述两步,来到第三步,安装 Cog:

sudo curl -o /usr/local/bin/cog -L "https://github.com/replicate/cog/releases/latest/download/cog_$(uname -s)_$(uname -m)"
sudo chmod +x /usr/local/bin/cog

第四步来到微调模型,默认情况下,微调脚本上配置的 GPU 功能较弱,但如果你有性能更好的 GPU,则可以在 finetune.py 中将 MICRO_BATCH_SIZE 增加到 32 或 64。此外,如果你有指令调优数据集,则可以在 finetune.py 中编辑 DATA_PATH 以指向自己的数据集。需要注意的是这一项操作应该确保数据格式与 alpaca_data_cleaned.json 相同。接下来运行微调脚本:

cog run python finetune.py

微调过程在 40GB A100 GPU 上花费 3.5 小时,对于处理能力较低的 GPU 则需要更多时间。

最后一步用 Cog 运行模型:

$ cog predict -i prompt="Tell me something about alpacas."
Alpacas are domesticated animals from South America. They are closely related to llamas and guanacos and have a long, dense, woolly fleece that is used to make textiles. They are herd animals and live in small groups in the Andes mountains. They have a wide variety of sounds, including whistles, snorts, and barks. They are intelligent and social animals and can be trained to perform certain tasks.

教程作者表示,在完成以上步骤之后,大家可以继续尝试各种玩法,包括但不限于:

  • 带上你自己的数据集,微调你自己的 LoRA,比如微调 LLaMA,让它像动漫角色一样说话。参见:https://replicate.com/blog/fine-tune-llama-to-speak-like-homer-simpson

  • 将模型部署到云平台上;

  • 结合其他 LoRA,比如 Stable Diffusion LoRA,把这些都用到图像领域;

  • 使用 Alpaca 数据集(或其他数据集)微调更大的 LLaMA 模型,并查看它们的表现。这应该可以通过 PEFT 和 LoRA 实现,尽管它需要更大的 GPU。

e96a0b17b9d3f92f1cb2413a3cc631e8.png

Alpaca-LoRA的衍生项目

尽管 Alpaca 性能可以媲美 GPT 3.5,但其种子任务都是英语,收集的数据也都是英文,因此训练出来的模型对中文并不友好。为了提升对话模型在中文上的效果,我们看看都有哪些比较好的项目。

首先是来自华中师范大学等机构的三位个人开发者开源的中文语言模型骆驼 (Luotuo),该项目基于 LLaMA、Stanford Alpaca、Alpaca LoRA、Japanese-Alpaca-LoRA 等完成,单卡就能完成训练部署。有意思的是,他们之所以将模型名字命名为骆驼,是因为 LLaMA(大羊驼)和 alpaca(羊驼)都属于偶蹄目 - 骆驼科。这样看来,起这个名字也在意料之中。

这个模型是在 Meta 开源的 LLaMA 基础上,参考 Alpaca 和 Alpaca-LoRA 两个项目,对中文进行了训练。

b2e8915778ae8530dd43641418223666.png

项目地址:

https://github.com/LC1332/Chinese-alpaca-lora

目前该项目释放了两个模型 luotuo-lora-7b-0.1、luotuo-lora-7b-0.3,还有一个模型在计划中:

198350a5c2f20496f1c3fa84b27e292d.png

下面是效果展示:

918b5b4e18e49f2003bb9693c5f4b211.png

68951341ddb71d1ceaf3fd9e1f15532d.png

不过 luotuo-lora-7b-0.1(0.1)、luotuo-lora-7b-0.3(0.3)还是有差距的,在用户询问华中师范大学地址时,0.1 回答错误:

e534b24f8fa34badb3055258e21ab50b.png

除了进行简单的对话外,还有人在保险相关领域进行了模型优化。据这位推特网友表示,借助 Alpaca-LoRA 项目,他输入了一些中文保险问答数据,最后效果也不错。

具体来说,作者训练中文版 Alpaca LoRa 用了 3K 多条中文问答保险语料,实现过程使用了 LoRa 方法,并微调 Alpaca 7B 模型,耗时 240 分钟,最终 Loss 0.87 。

3eddd1667a53a954bc5f5fc6393c10a7.png

▲ 图源:https://twitter.com/nash_su/status/1639273900222586882

以下是训练过程和结果:

6329edd22c3d86cfe4140e86e6d4b79d.png

e26032a39b222c44788e586fa2afd17f.png

a3ec1de0d92ca7d7bd34ed12e40d5e76.png

测试结果表明:1. 训练语料相关内容都能有大概合理的回复,但仅限于不胡说;2. 非语料相关内容则会强行回复某个语料内的数据;3. 逻辑推理数学计算则没有这个能力。

9e98d52107d5d668ac6e9eb503530391.png

看到这个结果后网友纷纷喊要失业了:

ce878e4e8fc9edf3b531c50024871427.png

最后期待更多的中文对话模型加入进来。

参考链接:https://replicate.com/blog/fine-tune-alpaca-with-lora?continueFlag=4ecae39885197a5c008faabbefb5c824

更多阅读

809bae83b87f6aa2f9406328189e7cfd.png

dfe9318cd8891a4f3fc45865e3ee874b.png

fadf3be0838643bc768c153851797ddb.png

06c526d907c46aa15e374058ea362b21.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

4a7acf2eb7c5debd212e4db3363bbd98.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

8ed3d27748f913ad0a3b9bafca96a6ed.jpeg

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

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

相关文章

体验chatGPT编写代码

今天注册了openAI账号,并且体验了以下chatGPT。体验过程中,我明显感觉到chatGPT不是所谓的“人工智障”,比起原来简单的问答机器人有了巨大的进步。 我主要体验的是chatGPT自动编写代码的功能。 下面两段是由chatGPT生成的代码: 提…

用ChatGPT快速制作PPT

如果你想制作一份漂亮的PPT却不知道从何下手,不要担心,ChatGPT来帮你了!ChatGPT是一种自然语言生成和理解模型,不仅可以和你聊天,还可以帮你设计和撰写一份出色的PPT。本篇文章将带你快速掌握使用ChatGPT制作PPT的技巧…

在线使用AI合集

POE 前言 目前有关注的小伙伴应该会发现,ChatGPT注册功能已经关闭。那些还没有注册的小伙伴岂不是不能使用ChatGPT,今天为大家推荐的就是Poe | AI机器人集合 Sage、Claude、ChatGPT、Dragonfly。Poe链接 使用poe.com/ChatGPT 注册也非常简单&#xff…

ChatGPT机会与变现大全

这是一篇教你如何利用ChatGPT变现的文章,从商业的视角看ChatGpt这个产品。 虽然我们都听过chatGPT,网络上也铺天盖地的文章介绍这个产品有多牛,甚至是一些有点关联的产品都跑过来陈热度给自家产品打广告。但是,这些我们都不关心&a…

初遇 chatGPT

背景 今天终于有时间尝试一下心心念的 chatGPT。注册了一下,然后尝试问了一些问题。不刁钻,结果确实令人惊艳。17年我在做自然语言处理学习的时候,还是 Tensorflow 1.0 的时代。当时还在用 LSTM 解决词意联系的问题。当然 GPT 的幕后逻辑不得…

Python 使用 ChatGPT

Python 使用 ChatGPT 前面我们已经介绍过 ChatGPT 的注册了,现在我们看一下如何通过Python 使用ChatGPT 由于ChatGPT 注册相关的文章被平台限制了,所以有注册相关的问题可以私聊 API key 的获取 到这里我们已经完成ChatGPT 的注册了,如果我们需要在代码里使用ChatGPT ,那…

chatgpt插件

chatgpt插件安装 安装步骤 安装步骤 1)打开微软的edge浏览器 2)找到相应浏览器扩展 3)获取扩展 4)搜索wetab(初始没安装的话,主页中最热门的第一个应该就是) 5)添加好后选择启用 6)打开新的…

5天注册破百万,一文详解爆火 ChatGPT 到底是个啥

作者:qizailiu,腾讯 IEG 应用研究员 导读 OpenAI 近期发布聊天机器人模型 ChatGPT,迅速出圈全网。它以对话方式进行交互。以更贴近人的对话方式与使用者互动,可以回答问题、承认错误、挑战不正确的前提、拒绝不适当的请求。高质…

火遍全网的chatGPT

最近网上非常火爆的CHATGPT,它是OpenAI开发的一款开源的自然语言处理 (NLP) 模型,用于实现对话生成和语言模型预测。CHATGPT 模型基于 GPT-3 (Generative Pretrained Transformer 3) 模型构建,拥有语言理解和文本生成能力。CHATGPT 模型可以用…

注册ChatGPT时提示Oops! The email you provided is not supported

问题描述 今天本想出一个ChatGPT的注册与使用的教程,结果上来吃了个闭门羹。之前我通过微软账号登录验证是没有问题的,但这次想使用另一个微软账号,结果提示Oops! The email you provided is not supported(您提供的电子邮件不支…

ChatGPT准备工作_step1_注册邮箱

如何注册Outlook邮箱 访问Outlook网站:在您的网络浏览器中打开 Outlook的官方网站。 点击"创建账户":在Outlook网站的主页上,点击"创建账户"选项,开始注册过程。 填写个人信息:在注册表格中填…

centosAI数据模型

传送:https://ai.centos.chat/ 之前一直公益运营 万万没想到流量比预想的要大很多,API接口的这个Tokens消耗的速度比预想的要快的多。 想持续提供免费服务,目前看只能自己拿真金白银来顶。光靠一点捐助肯定是杯水车薪。 所以有能力的伙伴…

最新ChatGPT网站源码/支持用户注册付费套餐/支持Ai绘画/支持用户会员套餐/邀请分佣功能/支持后台一键更新/网站后台管理/永久更新

前言 ChatGPT 是一个基于 GPT-3.5/GPT-4 模型的对话系统,它主要用于处理自然语言对话。ChatGPT 虽然才发布几天时间,但是就已经火爆全网了。然后陆陆续续已经出现了各式版本,今天介绍的这款源码就是当下最火的ChatGPT且结合计数回答实现的盈…

LLM系列 | 01: 亲测ChatGPT最强竞品Claude,且无需翻墙、注册简单、免手机号

简介 春风桃李花开日,秋雨梧桐叶落时。小伙伴好,我是微信公众号《小窗幽记机器学习》的小编:卖核弹的小女孩。更多、更新文章欢迎关注微信公众号:小窗幽记机器学习。后续会持续整理模型加速、模型部署、模型压缩、LLM、AI艺术等系…

VSCode集成ChatGPT插件:ChatGPT中文版

今天介绍一款牛逼的VsCode插件ChatGPT中文版 一、介绍 ChatGPT中文版一个ChatGPT的插件_支持ChatGPT4.0,功能比丰富。 功能特点: 1.支持ChatGPT4.0 在个人中心可以选择ChatGPT4.0模型,回答更准确 2.网络回答 Vscode插件中第一家支持联网…

ChatGPT有中文版吗?

2023年最热的技术话题是什么?毫无疑问是人工智能,特别是AIGC领域。其中又以ChatGPT为最热门产品。ChatGPT是一个革命性的人工智能产品,能对我们的生产生活产生巨大的影响。然而,有网友担心ChatGPT是西方开发的AI工具,能…

ChatGPT中文网页版带PHP接口源码

☑️ 品牌:ChatGPT ☑️ 语言:PHP ☑️ 类型:ChatGPT ☑️ 支持:PCWAP 🎉有需要的朋友记得关赞评,浏览底部查看!!! 🎉 ✨ 源码介绍 ChatGPT 中文网页版带PHP…

ChatGPT中文客户端

拥有功能👍: ChatGPT在线对话 ChatGPT角色设置,应用功能 Midjourney绘画功能 下载地址: 八九智能助手客户端.zip - 蓝奏云

ChatGPT中文版写日报神器【AI使用技巧】

写日报对于打工人来说是一件枯燥无味又不得不做的工作。有了ChatGPT写日报不再是一件苦差事,分分钟搞掂,你不来试一下吗? ChatGPT中文站https://ai-cn.co提问:我是一名服务端程序员,负责维护商城系统,帮我…

ChatGPT中文版提示词学习手册, 学完工作效率提升百倍!

既然你对ChatGPT及其功能有了⼀些了解,让我们更深入地了解⼀下ChatGPT是什么以及它是如何工作的。 那么ChatGPT是如何工作的呢?在高层次上,这个过程可以分解为以下步骤: 1. 用户将文本输入ChatGPT界面。这可能是一个问题&#xf…