Alpaca-Lora (羊驼-Lora): 轻量级 ChatGPT 的开源实现(对标 Standford Alpaca)

news/2024/4/28 17:04:30/文章来源:https://blog.csdn.net/Eric_1993/article/details/129680269

Alpaca-Lora (羊驼-Lora): 轻量级 ChatGPT 的开源实现(对标 Standford Alpaca)

文章目录

  • Alpaca-Lora (羊驼-Lora): 轻量级 ChatGPT 的开源实现(对标 Standford Alpaca)
    • 总览
    • 前言(与正文可能无关,可以忽略)
    • LoRA 简要介绍
    • 各类资源
    • Alpaca-Lora Colab 体验
    • 本地安装
      • 环境准备
      • 运行 generate.py
    • 小结

总览

本文介绍 Alpaca-Lora (羊驼-Lora),可以认为是 ChatGPT 轻量级的开源版本,它使用 Lora (Low-rank Adaptation) 技术在 Meta 的 LLaMA 7B 模型上微调,只需要训练很小一部分参数就可以获得媲美 Standford Alpaca 模型的效果;本文重点在它的本地安装方法

前言(与正文可能无关,可以忽略)

前段时间介绍了 Stanford Alpaca (羊驼):ChatGPT 学术版开源实现,感觉大家热情高涨,可能 Stanford Alpaca 团队也感受到了这些热情,在线体验地址也暂时关闭了。我看 Stanford Alpaca 的训练代码已经开源,如果要训练的话,需要向 Meta 提交 LLaMA 的申请问卷,目前我已提交,在等 Meta 的邮件回复。

等待过程中惊奇的发现 Alpaca-LoRA: Low-Rank LLaMA Instruct-Tuning 项目,它居然可以直接访问 LLaMA-7B 模型!经过一番折腾,终于在本地成功部署,效果如下:

左边红框我要它输出一段 Python 代码,右边红框中它实现了一个加法函数,效果不错!可惜我 GPU 显存太小,只有 8G,模型参数量化后虽然可以成功加载,但是做预估时会报奇怪的错误,所以我最后一刻决定用 CPU 运行。。。先把问题解决再考虑后续优化。

本文主要介绍一下本地安装的方法。文中列出的资源可以在 “各类资源” 这一节中找到。

LoRA 简要介绍

关于 Alpaca-Lora 和 Stanford Alpaca 模型的区别,我先入为主的印象是,Stanford Alpaca 是在 LLaMA 整个模型上微调,而 Alpaca-Lora 则是利用 Lora 技术(LoRA: Low-Rank Adaptation of Large Language Models),在冻结原模型 LLaMA 参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 finetune 的成本显著下降,还能获得和全模型微调类似的效果。想想最近 Stable Diffusion 文生图扩散模型(Stable Diffusion 原理介绍与源码分析(一、总览))的效果,在 LoRA 的加持下,可以生成很高质量的图片。

LoRA 的结构如下:

蓝色模块是原模型,而橙色模块则是新增网络层,通过控制参数 r 的大小,可以有效减少新增网络层的参数。

各类资源

  • Alpaca-Lora 地址:https://github.com/tloen/alpaca-lora
  • Standford Alpaca 地址:https://github.com/tatsu-lab/stanford_alpaca
  • Lora 的论文地址:https://arxiv.org/abs/2106.09685
  • LLaMA-7B-HF 模型地址:https://huggingface.co/decapoda-research/llama-7b-hf
  • Lora 参数地址:https://huggingface.co/tloen/alpaca-lora-7b
  • 如何优雅的下载huggingface-transformers模型: https://zhuanlan.zhihu.com/p/475260268

Alpaca-Lora Colab 体验

如果想在线快速体验,可以使用 Colab,打开 Alpaca-Lora 项目 Github 主页,点击如下红框给出的链接即可。

网速极快,体验贼好,免去了本地安装的一切烦恼。。。

本地安装

环境准备

虽然 README 文件中说使用 pip install -r requirements.txt 就 OK 了,但是我还是决定用 conda 创建一个虚拟环境,environment.yaml 文件如下:

name: alpaca
channels:- pytorch- defaults
dependencies:- python=3.8.5- pip=20.3- cudatoolkit=11.3- pytorch=2.0.0- numpy=1.19.2- pip:- datasets- loralib - sentencepiece- accelerate- bitsandbytes- gradio- appdirs- -e git+https://github.com/huggingface/transformers.git@main#egg=transformers- -e git+https://github.com/huggingface/peft.git@main#egg=peft

然后使用如下命令激活:(顺便吐槽一句,master 分支如今写成 main 分支,哈哈)

conda env create -f environment.yaml
conda activate alpaca

激活后,可以再执行 pip install -r requirements.txt 进行 double check。

运行 generate.py

正常情况下,如果有超过 8G 的 GPU 显存,并且网络之类的都相当 good 的话,那么直接运行 python generate.py 就能成功。

但这篇文章之所以有存在的必要,就是因为遇到太多不正常的情况😂😂😂

首先是模型参数的下载,包括 LLaMA-7B-HF 大模型(地址:https://huggingface.co/decapoda-research/llama-7b-hf)以及 Lora 参数 (地址:https://huggingface.co/tloen/alpaca-lora-7b),下载报 HTTP Requests 之类的错误。

我参考 《如何优雅的下载huggingface-transformers模型》(地址:https://zhuanlan.zhihu.com/p/475260268)一文,安装 huggingface_hub 进行模型下载,速度非常快,执行如下命令下载模型:

>>> from huggingface_hub import snapshot_download
>>> snapshot_download(repo_id="decapoda-research/llama-7b-hf")

结果如下:

不过快下载完的时候报错中断,我把上面的命令重新执行一次,就能正常接着下载:

模型下载成功后,终端会输出模型的保存地址,可以使用 stat -Lc "%n %s" * 命令大致看下各文件大小有没有缺斤少两的,和 Hugging Face 上的模型大小简单对比一下:

该命令中, -L 表示对 soft link 进行处理,-c "%n %s" 指定输出格式,其中 %n 表示文件的名字,%s 表示文件大小,我看着文件大小符合预期。

别忘了 LoRA 模型哈: 执行 snapshot_download(repo_id="tloen/alpaca-lora-7b") 下载 Lora 参数。

然后接着运行 generate.py,可是在如下代码报错:

直接注释即可。

解决上述问题后,我使用 8G 的 GPU 运行,仍然会在中途报 ZeroDivisionError: integer division or module by zero

我是通过去修改 accelerate 这个包的源码避开这个问题的,需要简单读一下 get_max_memory() 函数的实现。最后运行成功界面如下:

不过也注意到显存快到极限了。因此就算避开了上述问题,由于 GPU 显存天然的限制(就像游戏中要你氪金,你偏不氪,那么体验肯定不会好),后面再其他地方仍会报错,我尝试解决无果,最终决定在 CPU 上运行

再贴一次成功后的画面:

小结

本文介绍了 ChatGPT 轻量级的开源版本 Alpaca-Lora (羊驼-Lora),它使用 Lora (Low-rank Adaptation) 技术在 Meta 的 LLaMA 7B 模型上微调,只需要训练很小一部分参数就可以获得媲美 Standford Alpaca 模型的效果。此外还较为详细的介绍了其在本地安装的方法。

经此一役,愈发感慨 GPU 的重要性,哪怕多给我 1G,也不至于如此窘迫。为了省出一点显存资源,我把其他能关闭的进程都关闭了,还得去 debug 之类的… 当初想着自己不玩大型游戏,觉得 8G 够用了… 人类对算力的需求是永无止境的。好好加班,攒信仰!

(对了,可以在微信中搜索 “珍妮的算法之路” 或者 “world4458” 关注我的微信公众号, 及时获取最新原创技术文章更新。。。)

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

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

相关文章

教你体验目前最火AI - 在craft AI assistant 使用chatGPT

atGPT大火之后,很多人都想体验一把,今天为大家推荐一种免费方式,体验chatGPT同款内核的AI助手。 craft AI assistant Craft 推出的 AI 助手产品 Craft AI Assistant,并且现在就可以使用。根据 Craft 官方介绍,Craft …

ChatGPT非常火,我用它自动编写Python爬虫脚本。结果出乎意料。

前言 都知道最近ChatGPT聊天机器人爆火,我也想方设法注册了账号,据说后面要收费了。 ChatGPT是一种基于大语言模型的生成式AI,换句话说它可以自动生成类似人类语言的文本,把梳理好的有逻辑的答案呈现在你面前,这完全不…

浅谈chatGPT——新必应(bing)版本

年前chatGPT大火的时候,跟风注册了一个账号,在信息检索方面第一直觉就是:这才是我想要的搜索引擎,没有广告,搜索结果总结的很全面到位。然没高兴几天,就发现使用不了了。无论科学上网也好,还是卸…

ChatGPT:从问题解答到赚钱

文 / 韩彬我们往前翻动一下互联网的记忆,不用太久远,停留在2017-2018年就可以了,当时全网讨论最火热的词语叫“娱乐至死”,研究最深的话题叫“阶级跃迁”,批评最多的是某款手游、某短视频平台,说它们杀死了…

十分钟学会QQ集成ChatGPT

前言与环境准备 QQ里面的机器人已经火了很久了,但是每次都是使用的别人的机器人,所以就想看一下网上有没有可以自己实现一个机器人的,查了一些文章然后就发现了chatgpt-mirai-qq-bot,所以就做了一个属于自己的QQ机器人&#xff0…

ChatGPT的主要应用场景例子

ChatGPT是一种基于深度学习技术的大型语言模型,它可以根据用户提供的输入信息,生成自然语言文本或响应。这种技术可以应用于很多领域,下面将详细介绍ChatGPT在以下几个方面的应用:以下是使用过程中的一些应用场景对话记录&#xf…

关于ChatGPT八个技术问题的猜想

作者:张家俊教授单位:中国科学院自动化研究所原文:https://zhuanlan.zhihu.com/p/606478660看到ChatGPT的华丽诞生,心情很复杂,既高兴、惊喜,也感到恐慌,高兴和惊喜的是没有预料到这么快就见证了…

【IDEA集成ChatGPT,开发事半功倍,插件分享】

最近经常在用chatgpt协助编码,一些明确功能的方法或者小需求几乎可以完全依靠chatgpt来完成,发现一个idea中好用的插件,分享下 插件名称就叫ChatGPT,安装后需要一些配置,详细说明如下 1. 使用作者搭建好的代理服务器访问GPT 安装后找到设置Tools -> OpenAI 如图,选择Ope…

中科院ChatGPT Academic开源安装使用过程中的网络代理问题

关于中科院ChatGPT Academic中小白会遇到的问题(windows版)ChatGPT Academic 的项目开源下载安装(这里主要以windows为主)接下来就是大家会经常遇到问题的地方(网络配置和API的输入)这里就是针对小白的与代…

从ChatGPT到ChatCAD:基于大型语言模型的医学图像交互式计算机辅助诊断

基本信息 1. 标题:ChatCAD: Interactive Computer-Aided Diagnosis on Medical Image using Large Language Models. 2. 期刊:arXiv 3. IF/JCR/分区:无 4. DOI:arXiv:2302.07257 5. 作者:沈定刚教授团队 1. 导读…

国内首个ChatGPT镜像系统?辅助写代码真方便

hatGPT 美国OpenAI研发的聊天机器人程序,于2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚…

ChatGPT专业应用:生成新闻稿

正文共 949 字,阅读大约需要 4 分钟 媒体工作者必备技巧,您将在4分钟后获得以下超能力: 生成新闻稿 Beezy评级 :A级 *经过寻找和一段时间的学习,一部分人能掌握。主要提升效率并增强自身技能。 推荐人 | Kim 编辑者…

一点就通——ChatGPT翻译润色的最新简明使用方案

prompt使用推荐 1.翻译prompt 翻译主要有两种,第一种是我们的老朋友厦门大学潘王雨昂(个人主页:pwya.github.io)所编写使用的prompt,第二种是我自己改造的。 1.我希望你能担任英语翻译、拼写校对和修辞改进的角色。…

全网最详细中英文ChatGPT-GPT-4示例文档-TL;DR文档快速总结应用从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)

从0到1快速入门TL;DR文档快速总结应用场景Introduce 简介setting 设置Prompt 提示Sample response 回复样本API request 接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文…

事关ChatGPT账号封禁的强烈忠告

文 / 韩彬(微信公众号:量子论) 这两天有不少朋友加我微信(hanbin266),咨询ChatGPT账户被封了,怎么办? 我在《真实发生了,滥用这种场景,ChatGPT账号被封禁》一…

ChatGPT对测试行业的影响(附GPT使用实战展示)

引言: 时代的巨轮缓缓碾过,顺应时代才能胜者为王 文末有ChatGPT应用实战成果展示 ChatGPT之我见 测试的影响 正如上篇文章的推文所述,AI的发展让我们所有人都始料未及,就好像雨后春笋一样,各种各样的AI技术顺势而…

大学生对chatGPT的认知和使用

新一代对话式人工智能chatGPT在全球范围狂揽1亿名用户,不止于科技界破圈,更成为街头巷尾的谈资。 chatGPT能干什么? https://openai.com/blog/chatgpt/ chatGPT官网 写解决方案编写代码 说笑话 个人体验: 实用性强,相…

基于小程序制作一个ChatGPT聊天机器人

在AI技术日新月异的浪潮中,将ChatGPT与实战开发相结合,制作一个随身携带的聊天机器人,紧贴前沿的同时稳固基础。 一、前言1.1、什么是ChatGPT1.2、什么是文本完成二、API2.1、ChatGPT官网申请API所需要的key2.2、搭建API2.3、创建控制器及动作方法三、小程序3.1、页面创建3.…

使用Laf云平台,两步将ChatGPT接入微信公众号

使用Laf云平台,两步将ChatGPT接入微信公众号 最近很火的ChatGPT可以说已经满大街可见了,到处都有各种各样的体验地址,有收费的也有免费的,总之是五花八门、花里胡哨。 所以呢,最近我就在研究怎么才能方便快捷的体验到…

妈妈生了我,ChatGPT淘汰了我爸爸

当我还在老妈肚子的时候,经常听见老爸老妈讨论我该叫什么名字,那时他们争吵的火力十足,我在里面可真是干着急,但是因为不知道我是男是女,所以讨论了半天,最终也是无疾而终。 等我出生以后,老爸那…