可以微调类ChatGPT模型啦!开源Alpaca-LoRA+RTX 4090就能搞定

55aad1cee69300108765b85596191790.png

源 | 机器之心

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 这样的超大规模语言模型。

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

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

ad6889fbabadea54adc2248e1badd675.png

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

10dc6e0882e195b03481d04b2863596d.png

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

项目地址:
https://github.com/tloen/alpaca-lora

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

如何使用 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。

Alpaca-LoRA 的衍生项目

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

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

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

94baf8a63c3364c70cead762edca85f5.png

项目地址:
https://github.com/LC1332/Chinese-alpaca-lora

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

4abbd2b9d2097a34d106483fe290b587.png

下面是效果展示:

cd7436db34f9d9ab7c3e269e3a5d24b7.png 1a5a848c324e5ddefa810dcefc9531d1.png

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

aa8ae7698ea686712c2abd0c92619bd0.png

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

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

e750e6135e4c482a93594e04676fe15b.png
▲https://twitter.com/nash_su/status/1639273900222586882

以下是训练过程和结果:

91f2a5ff95e39bbd052e1055bbc02f61.png 0241690bab4e0bd5a22979ad3997f395.png ef494e044a124742776125702d6e8e62.png

测试结果表明:

  1. 训练语料相关内容都能有大概合理的回复,但仅限于不胡说

  2. 非语料相关内容则会强行回复某个语料内的数据

  3. 逻辑推理数学计算则没有这个能力。

b6ec38fd1db979d67889cb217953b9e3.png

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

b1ef1759a0fb406afd34d73cdf31c2a9.png

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

bf882626e9fbdd4e9dc2032f6fce72b0.jpeg后台回复关键词【入群

加入卖萌屋NLP、CV、搜推广与求职讨论群

 d122fc262ab3331a48ad7c3e7da23c91.png

[1]https://finisky.github.io/lora/

[2]https://replicate.com/blog/fine-tune-alpaca-with-lora?continueFlag=4ecae39885197a5c008faabbefb5c824

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

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

相关文章

如何使用OpenAI fine-tuning(微调)训练属于自己专有的ChatGPT模型?

要使用OpenAI的微调技术来训练自己的专有模型,您需要遵循以下步骤: 获取和准备数据集:首先,您需要准备自己的数据集。可以使用公共数据集,也可以使用自己的数据集。数据集需要以特定格式(如JSONL)进行存储,并且需要经过清洗和预处理。 选择合适的模型和超参数:根据您…

一觉睡醒,ChatGPT 竟然被淘汰了?

转自机器之心 编辑:杜伟、陈萍 OpenAI 的 Andrej Karpathy 都大力宣传,认为 AutoGPT 是 prompt 工程的下一个前沿。 近日,AI 界貌似出现了一种新的趋势:自主人工智能。 这不是空穴来风,最近一个名为 AutoGPT 的研究开始…

ChatGPT实现stackoverflow 解释

stackoverflow 解释 ChatGPT 公开服务以来,程序员们无疑是最早深入体验和"测试"的一批人。出色的效果也引发了一系列知识产权上的争议。著名的 stackoverflow 网站,就宣布禁止用户使用 ChatGPT 生成的内容来回答问题,一经发现&…

ChatGPT疯狂生成「辣鸡」内容,Stack Overflow气急,连夜封杀!

时下爆火的ChatGPT,被网友们用来生成海量答案。而Stack Overflow已经不堪其扰,发起「追杀」:应封尽封! OpenAI的新模型ChatGPT才诞生没几天,已经成为广大网友的「装逼利器」。 它的回答不说正确不正确,乍一…

轻松掌握RecyclerView缓存机制

在 Android 应用程序中,RecyclerView 是一个非常重要的控件。它被广泛使用,因为它可以帮助我们展示大量的数据,同时也能够提供流畅的滑动体验。然而,如果我们不小心处理好 RecyclerView 的缓存机制,就可能会导致性能下…

chatgpt赋能python:Python内存管理:如何清理内存

Python内存管理:如何清理内存 Python作为一种高级编程语言,在各种应用领域都得到了广泛的应用。作为一种解释型语言,Python有着自动垃圾回收器的优点,但在长时间运行的应用程序中,Python可能会占用大量内存&#xff0…

[chat-GPT]解决OpenAI‘s services are not available in your country问题

OpenAI‘s services are not available in your country 按照网上的教程一步步配置chat-GPT,一直换不同国家的梯子也无济于事,各种搜索尝试,终于解决 解决方法 1.换浏览器 我换了firefox 一开始用的谷歌浏览器 2.清楚当前使用的浏览器所有…

最新版ui成语填空答题,成语接龙小程序源码,修复登录接口问题

这类的成语接龙填词游戏,之前我就见过朋友在玩,自带裂变属性,引流、广告效果都是一绝。强制分享广告,可拆随机金额红包,广告配置、激励配置等都在后台即可配置管理,无需翻改代码。朋友运营过的东西&#xf…

小程序“成语猜题”部分答案

哀哀父母可哀呀可哀,我的父母啊!原指古时在暴政下人民终年在外服劳役,对父母病痛、老死不能照料而悲哀。哀哀欲绝绝:断气,死。形容极其悲痛。哀兵必胜原意是力量相当的两军对阵,悲愤的一方获得胜利。后指受…

chatgpt赋能python:Python怎样模拟成语填空游戏

Python怎样模拟成语填空游戏 成语填空游戏是一种非常受欢迎的智力游戏。在这个游戏中,玩家需要根据提示,在给出的空格中填入对应的成语。而Python是一个功能强大的编程语言,用起来十分简单。在本文中,我们将介绍如何使用Python来…

看图猜成语小程序设计与实现(小程序+PHP)

目 录 摘 要 I Abstract II 1 绪论 1 1.1 研究背景 1 1.2 国内外研究现状 1 1.2.1 国内研究现状 1 1.2.2 国外研究现状 2 1.3 论文组织结构 3 2 相关技术 4 2.1微信小程序介绍 4 2.1.1微信介绍 4 2.1.2微信小程序简介 4 2.1.3微信小程序基本功能 5 2.2开发技术的介绍 6 2.2.1 P…

12月编程语言排行榜:前三终于变了,Java跌出前三?它居然首次进前三!

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号,领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇:爆火的ChatGPT太强了!写代码、改bug,网友&…

C++ 涨幅依旧亮眼,Visual Basic 一降再降!TIOBE 5 月榜单发布

整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 作为编程语言排行榜领域最权威的组织之一,今天 TIOBE 最新发布了 5 月榜单,快让我们看看这个月编程语言的流行趋势有何变化吧! C 涨幅依旧亮眼,Visual …

忆享聚焦|ChatGPT、AI、网络数字、游戏……近期热点资讯一览

“忆享聚焦”栏目第十四期来啦!本栏目汇集近期互联网最新资讯,聚焦前沿科技,关注行业发展动态,筛选高质量讯息,拓宽用户视野,让您以最低的时间成本获取最有价值的行业资讯。 目录 行业资讯 1.科技部部长王志…

接了ChatGPT的NewBing如何评价CodeGeeX

一篇《如何用 CodeGeeX 替代 GitHub Copilot》的文章在开发者社区登上热榜,开发者关注的AI生成代码工具CodeGeeX,这款插件产品目前支持在VSCode市场和Jetbrains IDEs下载使用,是国产对标Copilot目前安装量最大的开发者工具。 之所以引发开发…

开源数字人Fay

原文:别再因AI焦虑,这波年轻人已经用“中国版ChatGPT”创业成功了|数字人|AI|创业_新浪新闻 开源:GitHub - TheRamU/Fay: Fay是一个完整的开源项目,包含Fay控制器及数字人模型,可灵活组合出不同的应用场景&#xff1a…

UE基础使用

一:打包。 二:显示FPS。 三:坐标系。 四:第三人称模式。 四:筛选物体。 五:物体对其到地面。 六:UE加载窗口默认布局。 七:关闭磁力吸附。关闭后可以自由移动。 八:属性变…

ChatGPT原生态程序开发

ChatGPT是基于OpenAI技术训练的语言模型,其原生态程序开发需要深入了解自然语言处理(NLP)和机器学习(ML)等相关领域知识,并具备丰富的编程经验。除此之外,还需要掌握Python等编程语言、TensorFlow等深度学习框架,以及各种NLP工具和…

基于React和Html5的宠物领养平台网站设计与实现

目 录 一、绪论 4 (一)选题背景简介 4 (二)目的和意义 4 二 技术简介 5 (一) HTML5技术简介 5 (二)ES6简介 5 (三)React 5 (四)Koa2 5…

实战:利用pytorch搭建VGG-16实现从数据获取到模型训练的猫狗分类网络

起 在学习了卷积神经网络的理论基础和阅读了VGG的论文之后,对卷积有了大致的了解,但这都只是停留在理论上,动手实践更为重要,于是便开始了0基础学习pytorch、图像处理,搭建模型。 pytorch学习视频 https://www.bilibili.com/vide…