Windows GPU 部署大模型 Alpaca-Lora (羊驼-Lora)
原创博客,转载请注明出处,谢谢!
一、背景
随着大模型的热度大爆特爆,开启了我的大模型探索之路。
要学习,首先找一个比较友好的模型:
(1) 用的人够多,遇到问题能找到,不至于两眼一抹黑;
(2) 模型能跑通、能运行,研究起来才能确定可行性;
(3) 模型不太复杂,学起来不会吃力,还可以自己动手各种魔改;
(4) 模型不能太大,我的个人主机可以跑得起来。
综上所述,Alpaca-Lora (羊驼-Lora) 就是一个很适合的模型!
二、系统信息
我自己的服务器和平时的工作电脑都是 win10 64 位的 Windows 系统。所以,开始尝试将该项目部署在 Windows 系统。
我的服务器配置的显卡是 RTX 3090
,显存大小和 Alpaca-Lora 作者的 RTX 4090
是一样的,都是 24G
,所以显存肯定没问题。如果你没 24G 的显卡,12G的显卡也勉强够用,因为最后模型推理的时候大概是 10G
。如果你没有这么大显存的显卡,那就用 CPU 运行吧,模型可以跑的,只是有点慢而已。CPU部署简单很多,毕竟 Windows +GPU 会出现各种的错误。
介绍完在Windows CPU 上安装后,更多的内容会是关于 Windows GPU 的配置遇到的问题!
三、Alpaca-Lora 介绍
Alpaca-Lora 是 ChatGPT 轻量级的开源版本,在 Meta 的 LLaMA 7B 模型上,使用 Lora (Low-rank Adaptation) 进行微调,只需要训练很小一部分参数就可以获得媲美 Standford Alpaca 模型。
Alpaca-Lora 项目地址:https://github.com/tloen/alpaca-lora
LLaMA-7B-HF 模型地址:https://huggingface.co/decapoda-research/llama-7b-hf
Lora 参数地址:https://huggingface.co/tloen/alpaca-lora-7b
最终效果及使用链接:https://huggingface.co/spaces/tloen/alpaca-lora
四、配置及安装
先介绍无论是 CPU 还是 GPU 都要配置的内容,然后介绍 CPU 配置、GPU 配置及一些遇到问题。
1. 下载项目
首先,你去 Github 已经把 Alpaca-Lora 下载到本地,或者 git 命令克隆到本地:git clone https://github.com/tloen/alpaca-lora.git
。
2. 下载权重
去 huggingface 下载 LLaMA-7B-HF 和 Lora 已经训练好的权重。如果不知道下哪些文件,那就全部都下。当然也可以用 huggingface 官方提供的下载方式下,不过经常断,导致还是直接手动下载会更快。
当然,如果你的显卡够大,可以用 13B
30B
65B
等更大的 LLaMA模型, Alpaca-Lora 项目的 README
里面都有。
我觉得像我一样用 Windows 搞大模型的人,自己心里应该有点数,就别太勉强自己的电脑了。
新建对应两个下载链接: https://huggingface.co/
decapoda-research/llama-7b-hf
和 https://huggingface.co/
tloen/alpaca-lora-7b
,新建对的文件夹 decapoda-research
和 tloen
,分别将下载好的权重 llama-7b-hf
和 alpaca-lora-7b
保存到其中。
保存的路径可以随意,后面模型配置的时候修改到对应的目录就可以。
3. 创建 conda 环境
创建一个新环境:conda create -n alpaca python=3.8.5
其中 alpaca
可以是 conda 环境的任意名字,python 版本也不一定是 3.8,3.7~3.10 一般都可以,问题不大,不过我用的是 3.8.5 版本。
4. 激活新环境
conda activate alpaca
此处 alpaca
是之前你取的 conda 环境的名字
5. 安装依赖
pip install -r requirements.txt
前面这些无论是什么系统都是一样的。
6. CPU 及 GPU
6.1 CPU 环境
(i) 安装 CPU 版 torch
pip install torch
直接安装 CPU 版本的 pytorch,项目直接用 CPU 运行项目。
(ii) 运行
cd
命令到项目所在的目录。
然后,按 README
中的说明直接运行:
python generate.py --load_8bit --base_model 'decapoda-research/llama-7b-hf' --lora_weights 'tloen/alpaca-lora-7b'
然后把里面的 http
地址复制到浏览器就可以了!页面和 https://huggingface.co/spaces/tloen/alpaca-lora 一样。
6.2 GPU 环境
(i) 安装 cudatoolkit
pip install cudatoolkit==11.6
cudatoolkit 的版本关系后面 pytorch 的安装以及 bitsandbytes 这个库的 Windows 补丁,这个补丁的作者说他是在 cuda 11.6 上编译的,为了安全起见还是选 11.6。如果你安装 11.6 失败,请查询一下电脑的 cuda 版本。安装之前的版本可能也是可以的。
(ii) 安装 GPU 版 torch
pip install torch==1.13.1+cu116 torchvision==0.14.1+cu116 torchaudio==0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
网络很不稳定,可以先去下载 对应的 whl 安装包:https://download.pytorch.org/whl/torch_stable.html
又或者可以加其他源安装。
安装好这三个后,直接运行python generate.py --load_8bit --base_model 'decapoda-research/llama-7b-hf' --lora_weights 'tloen/alpaca-lora-7b'
,出现错误提示:
AttributeError: 'NoneType' object has no attribute 'device'
上面这个错误提示主要是 bitsandbytes
,这个库作者的作者称他只是在 Linux 上进行作业,而没有在 Windows 系统上进行测试。
(iii) 打补丁
感谢后面有大牛提供了补丁解决方案:
- https://github.com/tloen/alpaca-lora/issues/17
- https://github.com/oobabooga/text-generation-webui/issues/147
(a) 下载补丁
下载cuda补丁 libbitsandbytes_cuda116.dll,并将其放到新环境 alpaca
对应的文件夹下,比如的路径是 D:\Anaconda3\envs\alpaca_gpu\Lib\site-packages\bitsandbytes
。
(b) 修改文件
用文本编辑器打开 \bitsandbytes\cuda_setup\main.py
,在 main.py
文件中
搜索:(我的在 370
行)
if not torch.cuda.is_available(): return 'libsbitsandbytes_cpu.so', None, None, None, None
替换为:
if torch.cuda.is_available(): return 'libbitsandbytes_cuda116.dll', None, None, None, None
搜索:(有两处,分别在 122
和 125
行)
self.lib = ct.cdll.LoadLibrary(binary_path)
替换为:
self.lib = ct.cdll.LoadLibrary(str(binary_path))
保存,退出。
尝试运行命令:python generate.py --load_8bit --base_model 'decapoda-research/llama-7b-hf' --lora_weights 'tloen/alpaca-lora-7b'
如果没错,可以顺利生成 http
地址,请忽略下面。不过我的电脑错误依旧。
(c) 设置 load_8bit 为 False
重新运行命令:python generate.py --load_8bit False --base_model 'decapoda-research/llama-7b-hf' --lora_weights 'tloen/alpaca-lora-7b'
大功告成!
五、总结
在 CPU 上推理速度非常慢,一度怀疑是死机了。在 3090 上的一次推理速度大概是 30 秒,不算快,不过还能接受。接下来,开启大模型魔改之路!