Alpaca-Lora 是一个轻量级的语言模型,可以实现基本的语言类对话。 本文先后在两台机器上进行了配置,行文旨在介绍将此模型部署至Windows系统上时所遭遇的各种困扰。
机器1配置:
NVIDIA TITAN Xp
机器2配置
RTX3090+RTX2070
配置过程
通用部分
1.下载项目代码
访问github,下载aplaca-lora。下载地址:GitHub - tloen/alpaca-lora: Instruct-tune LLaMA on consumer hardwarex
2.创建CONDA环境
conda create -n alpaca python=3.8.5
Python版本一般不做约束,但本文所参考的教程为3.8.5,故与其保持一致。此后进入此环境。
3.安装此环境对应的依赖
直接使用如下命令安装
pip install -r requirements.txt
此后,安装对应的pytorch与cuda。首先安装cudatoolkit。
conda install cudatoolkit==11.6
此后,安装对应的pytorch:
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
在本地测试时,cudatoolkit无法通过pip安装,故使用conda安装;pytorch版本推荐11.6,原因见下文。
此外,从官网下载cuda最新版本并安装,记录其安装路径。
4.两台机器共性问题
问题1
在安装完上述环境以后,在执行如下命令
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
上.
经过翻找前人文献,此问题的解决方案如下:
1.进入......\CUDA\v12.1\bin(即上文所述的最新版cuda安装路径),此后复制以下文件。
cudart64_12.dll
cublas64_12.dll
cublasLt64_12.dll
cusparse64_12.dll
nvJitLink_120_0.dll
找到当前新建环境的目录,将上述文件复制至Lib\site-packages\bitsandbytes文件夹内。
2.此后,下载cuda补丁 libbitsandbytes_cuda116.dll,同样找到上文所述文件夹,此后将此文件放入其中;
3.此后打开bitsandbytes目录下\cuda_setup\main.py文件,查找如下代码段:
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
此后查找如下代码段
self.lib = ct.cdll.LoadLibrary(binary_path)
替换为
self.lib = ct.cdll.LoadLibrary(str(binary_path))
由于只找到了cuda116.dll,故第一处只能替换为cuda116.dll。如此可解决第一个问题;
问题2
在解决上述问题后,再次尝试运行命令,此时会自动下载对应的数据。最后产生一个本地ip地址,但链接无法打开。
经检查后,在generate.py文件中,查找queue().launch,去除其中launch的所有参数。
再次尝试运行,此时已经可以运行,可以正常对话。产生对应的本地地址后,访问即可。