LLaMa-Factory第二弹!使用LLaMa-Factory微调llama3中文模之bitsandbytes报错CUDA SETUP: CUDA detection failed! 问题大解决!!
实在没办法了,用了一个比较笨的办法。找到文件“/home/user (自己位置)/anaconda3/envs/环境名字/lib/python3.11/site-packages/bitsandbytes/cuda_setup/main.py”或者试一下其他版本也行,我最开始安装的是0.42.0,后面又试了0.39.0,0.43.0等等版本,后面发现0.45.0版本是可以的。这里遇到一个问题,点击
LLaMa-Factory的部署可以看第一篇文章:LLaMa-Factory部署及llamafactory-cli webui命令无法打开ui界面问题解决记录-CSDN博客
目录
1、打开web ui
export USE_MODELSCOPE_HUB=1 && llamafactory-cli webui
export USE_MODELSCOPE_HUB=1用于设置环境变量,加载模型的时候会从modelscope下载,而不会从Hugging Face下载模型,可以避免网络环境限制导致无法访问 Hugging Face的问题。
2、模型加载
本文使用的是Meta-Llama-3.1-8B-Instruct模型,可以从modelscope手动下载,也可以直接在ui界面加载时下载。
手动下载:
首先进入modelscope,点击模型文件,再点击下载模型。


使用git命令下载即可。下载之前可以先使用pwd命令查看当前所在路径,git命令会将文件下载到当前所在路径。


首先选择相应的模型,在模型路径上填入手动下载的模型的路径,这里如果不修改的话,会从modelscope再下载一遍模型。

微调之前,先使用一下对话功能。 选择chat,在input框里输入问题,点击submit即可。
3.模型微调

点击train,在dataset选择想训练的数据集。
这里遇到一个问题,点击dataset旁边的小箭头,没有可选的数据集,手动输入之后,点击start报错,出现找不到文件的问题。

解决方法:复制data文件夹的路径,填入webui界面中。


在data dir中填入刚才复制的路径,再次点击dataset就出现可以选择的数据集!这里使用的是 alpaca_gpt4_zh。

点击start开始训练。
4.bitsandbytes错误解决!!
中间可能会报一些缺少相关模块的错误,缺什么安什么就行。重点讲一下bitsandbytes安装过程中出现的错误。bitsandbytes安装成功的可以跳过这部分。
安装bitesandbytes:
pip install bitsandbytes
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple bitsandbytes
上面两条选一条执行即可,第一个是直接安装,第二个通过清华镜像源安装。
CUDA报错:
RunTimeError:CUDA Setup failed despite GPU being available. Inspect the CUDA SETUP outputs above to fix your environment!
============================ERROR=====================
CUDA SETUP: CUDA detection failed! Possible reasons:
1. You need to manually override the PyTorch CUDA version. Please see: "https://github.com/TimDettmers/bitsandbytes/blob/main/how_to_use_nonpytorch_cuda.md
2. CUDA driver not installed
3. CUDA not installed
4. You have multiple conflicting CUDA libraries
5. Required library not pre-compiled for this bitsandbytes release!
CUDA SETUP: If you compiled from source, try again with `make CUDA_VERSION=DETECTED_CUDA_VERSION` for example, `make CUDA_VERSION=117`.
CUDA SETUP: The CUDA version for the compile might depend on your conda install. Inspect CUDA version via `conda list | grep cuda`.
=======================================================
或者其他跟CUDA相关的报错,之前忘记截图了,就不放图了。
原因:刚开始以为是CUDA路径的问题,整了很久,最后发现其实就是bitsandbytes版本的问题。
4.1解决方法:
安装其他版本的bitsandbytes。
pip uninstall bitsandbytes
pip install bitsandbytes==0.45.0
或者试一下其他版本也行,我最开始安装的是0.42.0,后面又试了0.39.0,0.43.0等等版本,后面发现0.45.0版本是可以的。
bitsandbytes安装个人版(不是很通用):
需要一个bitsandbytes已经安装成功的环境。
最开始安装0.45.0版本的bitsandbytes显示安装失败,显示没有这个版本。
后面在另一台服务器上安装bitsandbytes成功,恰好版本就是0.45.0。实在没办法了,用了一个比较笨的办法。找到bitesandbytes的安装位置,将文件传到另一台服务器的相应环境中。后面显示可以正常导入,python -m bitsandbytes也显示成功安装。
注:因为安装失败的服务器的显卡显存大很多,所以想把bitsandbytes安在上面。
在/usr/local/anaconda3/envs/虚拟环境名称/lib/python3.x/site-packages目录下找到下面两个文件。

将这两个文件复制到想要安装的虚拟环境的目录下:/usr/local/anaconda3/envs/目标虚拟环境名称/lib/python3.x/site-packages
然后再使用python -m bitsandbytes显示安装成功!

在python命令行中import也导入成功,没有报错。
总结:出现CUDA相关的报错一般来说是版本问题,可以多试试其他版本。
4.2其他方法:
这里其他方法我试了都没有成功,要是一直换版本没有安装成功可以尝试一下下面的方法。
方法一:从源代码编译
git clone https://github.com/timdettmers/bitsandbytes.git
cd bitsandbytes
CUDA_VERSION=117 make cuda11x
python setup.py install
这里CUDA_VERSION改为相应的cuda版本。
方法二:设置环境变量
在环境变量LD_LIBRARY_PATH中增加CUDA的lib路径:
export PATH=/usr/local/cuda-11.7/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH
注:命令只会在当前终端生效
最后再重新安装bitsandbytes。
pip uninstall bitsandbytes
pip install bitsandbytes
参考:大模型GPU安装bitsandbytes报错解决_cuda setup: cuda detection failed! possible reason-CSDN博客
方法三:修改bitsandbytes代码
找到文件“/home/user (自己位置)/anaconda3/envs/环境名字/lib/python3.11/site-packages/bitsandbytes/cuda_setup/main.py”
1、找到:
if not torch.cuda.is_available(): return 'libsbitsandbytes_cpu.so', None, None, None, None
2、替换为:
if torch.cuda.is_available(): return 'libbitsandbytes_cudaXXX(自己cuda版本).so', None, None, None, None
libbitsandbytes_cudaXXX(自己cuda版本).so文件一般在/home/user (自己位置)/anaconda3/envs/环境名字/lib/python3.11/site-packages/bitsandbytes目录下。

3、定位到
self.lib = ct.cdll.LoadLibrary(binary_path)
4、替换:
self.lib = ct.cdll.LoadLibrary(str(binary_path))
一共有两处,全部替换掉。也可以把原来的注释掉,再新加一行。
此处参考:大模型训练时关于bitsandbytes安装的问题_module 'bitsandbytes' has no attribute 'nn-CSDN博客
5.训练与导出

设置好参数之后点击start,就可以开始训练,训练结束之后显示finished就可以导出模型了。

在checkpoint path中填入检查点保存位置,在export dir填入要导出的路径,点击export等待模型导出即可。
6. 效果展示
在chat界面导入微调模型,输入问题,查看效果。


可以看到模型已经可以回答中文问题了。
完!!!
更多推荐



所有评论(0)