首页IT科技羊驼PTE机构怎么样(Alpaca-Lora (羊驼-Lora): 轻量级 ChatGPT 的开源实现(对标 Standford Alpaca))

羊驼PTE机构怎么样(Alpaca-Lora (羊驼-Lora): 轻量级 ChatGPT 的开源实现(对标 Standford Alpaca))

时间2025-08-04 21:53:54分类IT科技浏览4560
导读:Alpaca-Lora (羊驼-Lora : 轻量级 ChatGPT 的开源实现(对标 Standford Alpaca)...

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

总览

本文介绍 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       ” 关注我的微信公众号, 及时获取最新原创技术文章更新。              。                    。)

声明:本站所有文章                    ,如无特殊说明或标注       ,均为本站原创发布       。任何个人或组织       ,在未征得本站同意时                    ,禁止复制                     、盗用       、采集             、发布本站内容到任何网站                    、书籍等各类媒体平台              。如若本站内容侵犯了原著者的合法权益             ,可联系我们进行处理                    。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python缓存机制(python列表缓存的探究) 网上做推广有没有好一点的平台网上有哪些赚钱很多-分享三种简单的推广渠道,玩转引流精准粉