本团队想通过打算机视觉战队平台打造属于自己的品牌,让更多干系领域的人理解本团队,结识更多干系领域的朋友,一起来学习,共同进步!
\"大众 data-from=\"大众2\公众 data-is_biz_ban=\"大众0\"大众>

"大众年夜众号ID|ComputerVisionGzq

打算机视觉研究院专栏

作者:Edison_G

演习个中文版ChatGPT没那么难不用A100开源AlpacaLoRARTX 4090就能搞定

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 水平相称的模型,将这类模型对算力的需求降到了消费级。
而且,该模型可以在树莓派上运行(用于研究)。
LoRA 的技能事理。
LoRA 的思想是在原始 PLM 阁下增加一个旁路,做一个降维再升维的操作,来仿照所谓的 intrinsic rank。
演习的时候固定 PLM 的参数,只演习降维矩阵 A 与升维矩阵 B。
而模型的输入输出维度不变,输出时将 BA 与 PLM 的参数叠加。
用随机高斯分布初始化 A,用 0 矩阵初始化 B,担保演习的开始此旁路矩阵依然是 0 矩阵(引自:https://finisky.github.io/lora/)。
LoRA 的最大上风是速率更快,利用的内存更少,因此可以在消费级硬件上运行。
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-loracd 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 两个项目,对中文进行了演习。
项目地址:https://github.com/LC1332/Chinese-alpaca-lora
目前该项目开释了两个模型 luotuo-lora-7b-0.1、luotuo-lora-7b-0.3,还有一个模型在操持中:
下面是效果展示:
不过 luotuo-lora-7b-0.1(0.1)、luotuo-lora-7b-0.3(0.3)还是有差距的,在用户讯问华中师范大学地址时,0.1 回答缺点:
除了进行大略的对话外,还有人在保险干系领域进行了模型优化。
据这位推特网友表示,借助 Alpaca-LoRA 项目,他输入了一些中文保险问答数据,末了效果也不错。
详细来说,作者演习中文版 Alpaca LoRa 用了 3K 多条中文问答保险语料,实现过程利用了 LoRa 方法,并微调 Alpaca 7B 模型,耗时 240 分钟,终极 Loss 0.87 。
图源:https://twitter.com/nash_su/status/1639273900222586882
以下是演习过程和结果:
测试结果表明:1. 演习语料干系内容都能有大概合理的回答,但仅限于不胡说 2. 非语料干系内容则会强行回答某个语料内的数据 3. 逻辑推理数学打算则没有这个能力。
看到这个结果后网友纷纭喊要失落业了:
末了期待更多的中文对话模型加入进来。
参考链接:https://replicate.com/blog/fine-tune-alpaca-with-lora?continueFlag=4ecae39885197a5c008faabbefb5c824

© THE END

转载请联系本"大众年夜众号得到授权

打算机视觉研究院学习群等你加入!

打算机视觉研究院紧张涉及深度学习领域,紧张致力于人脸检测、人脸识别,多目标检测、目标跟踪、图像分割等研究方向。
研究院接下来会不断分享最新的论文算法新框架,我们这次改革不同点便是,我们要着重”研究“。
之后我们会针对相应领域分享实践过程,让大家真正体会摆脱理论的真实场景,培养爱动手编程爱动脑思考的习气!

打算机视觉研究院

"大众年夜众号ID|ComputerVisionGzq