一文梳理 Nvidia驱动/CUDA/CUDNN/PyTorch/Paddle 版本兼容&安装问题

大模型向量数据库机器学习

picture.image

猴哥的第 126 期分享,欢迎追看

前两天,有位粉丝朋友,本地部署大模型时,安装flash_attn遇到了很多问题,比如:

  
"flash\_attn" module. while I tried to install flash_attn, It mentioned " RuntimeError: FlashAttention is only supported on CUDA 11 and above".  

Linux、显卡、nvidia、CUDA/CUDNN、Pytorch、TensorFlow、PaddlePaddle,还有各种依赖库。

各种版本兼容,让很多朋友在学习 AI 的过程中,倒在了配置环境的路上。

今日分享,将系统梳理上述概念之间的依赖关系,以及如何安装,希望给遇到类似问题的小伙伴,一点点帮助。

  1. 显卡和驱动

跑大模型,自然免不了 Nvidia 家的显卡。

所以,第一步需要查看显卡类型。

通常来说,你的系统镜像出厂时可能已经装好 Nvidia 驱动,因此输入 nvidia-smi,即可看到显卡类型。

重点需要关注的有下方三个红色框选:

picture.image

最下方就是你的显卡型号,左上角是当前的显卡驱动版本,右上角是当前显卡驱动最高支持 的 CUDA 版本(向下兼容),但并不代表环境中 的 CUDA 版本!!!

所以,当你发现 CUDA 版本出问题时,记得来这里看看:右上角红框的数字是多少?

如果太低,意味着要更新显卡驱动了!

因为每个 CUDA 版本都有特定的最低驱动程序版本要求,比如 CUDA 12.0 驱动版本至少为 510.xxx。

怎么更新?

显卡能支持的最高驱动版本,在哪查看

前往 NVIDIA 官网:https://www.nvidia.com/en-us/drivers/

拿 RTX 3090 举例,点击 Find:

picture.image

picture.image

进入驱动下载页:https://www.nvidia.com/en-us/drivers/details/233004/

picture.image

下载成功后,你会得到一个类似 xxx.run 的文件,然后打开一个终端,输入:

  
# 添加可执行权限  
chmod +x NVIDIA-Linux-x86_64-510.xxx.run  
  
# 在安装过程中跳过对 X 服务器的检查,跳过对 Nouveau 驱动程序的检查,不安装与 OpenGL 相关的文件  
sudo ./NVIDIA-Linux-x86_64-xxx.run -no-x-check -no-nouveau-check -no-opengl-files  

进入可视化安装界面,一路 Yes 就可以了。

最后,一定记得重启机器,才能生效!

  
sudo reboot  

重启后,再来试试nvidia-smi,驱动版本是不是已经更新了?

这时,再来安装最新版的 cuda 就没问题了。

  1. CUDA/CuDNN

CUDA 是啥?

CuDNN 是啥?

nvcc 又是啥?

傻傻分不清啊~

大白话来讲:

  • CUDA (Compute Unified Device Architecture)是由 NVIDIA 开发的并行计算库,旨在充分发挥 GPU 的并行计算能力,实现计算加速。
  • CuDNN (CUDA Deep Neural Network library)建立在 CUDA 之上,提供了一系列针对CNN/RNN等模型中算子的高效实现,比如卷积、池化、激活函数等。(通常,CUDACuDNN 需要搭配使用)
  • nvcc 则是 CUDA 的编译器。

有同学说我在本地执行nvcc -V,提示找不到这个指令啊。

对啊,说明你在本地没安装 cuda,哪来的编译器呢?

那我要一顿操作,先下载并安装 cuda 么?

推荐你不用 ,因为你安装 cuda,大概率是用 Pytorch 等深度学习库,需要依赖它。

而当你安装不同版本的 Pytorch,你会发现它要求的 CUDA/CuDNN 版本还不一样。

所以,我们这一部分,不需进行任何操作,等你用到不同版本深度学习库时,再来安装对应版本的 CUDACuDNN 即可!

接着往下看!

2.1 Pytorch 下安装

Pytorch 非常友好,因为它会自动根据你的当前环境,安装对应版本的CUDACuDNN

所以,如果你的项目依赖 Pytorch,压根无需手动安装CUDACuDNN

最优雅的方式是,新建一个虚拟环境,一键安装指定版本的 torch 即可,比如:

  
conda env create -n torchenv python==3.8  
conda activate torchenv  
pip install torch==2.0.1  

装完后,如何在代码中查看,版本是否正确呢?

  
import torch  
print(torch.__version__) # 查看torch版本  
print(torch.cuda.is_available()) # 查看cuda是否安装  
print(torch.backends.cudnn.is_available()) # 查看cudnn是否安装  
print(torch.version.cuda) # 打印cuda的版本  
print(torch.backends.cudnn.version()) # 打印cudnn的版本  
# 输出  
2.0.1+cu117  
True  
True  
11.7  
8500  

装在哪了呢?

当在虚拟环境中使用 pip 安装带有CUDA支持的PyTorch时,CUDA和cudnn相关的库通常会被安装在虚拟环境的lib目录下。例如:

  
/home/xx/miniconda3/envs/torchenv/lib/python3.8/site-packages/nvidia/cuda_runtime/lib/  
/home/xx/miniconda3/envs/torchenv/lib/python3.8/site-packages/nvidia/cudnn/lib/  

怎么找到的?

  
find /home/xx/miniconda3/envs/torchenv/lib/ -name libcuda*  

2.2 PaddlePaddle 下安装

如果项目依赖 PaddlePaddle,这里会有点小坑。

如果用 pip 安装,需要额外手动安装 cuda 和 cudnn:

  
# 需指定是否用 GPU 版本  
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple  
pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple  

所以,推荐用 conda 安装:

  
# 会自动安装cuda11.7和cudnn8.4  
conda install paddlepaddle-gpu==2.6.0 cudatoolkit=11.7 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge  

如果运行后,提示找不到 cudnn,需要在环境变量中加上 lib:

  
export LD_LIBRARY_PATH=/home/xx/miniconda3/envs/paddle/lib:$LD\_LIBRARY\_PATH  

最后,来检查下是否安装成功:

  
import paddle  
paddle.utils.run_check()  

如果在 Paddle 中使用多 GPU,还要安装 nccl2:

  
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb  
sudo dpkg -i cuda-keyring_1.0-1_all.deb  
sudo apt update  
sudo apt install libnccl2 libnccl-dev  

PS:整体来看,你想用 PaddlePaddle,配置环境会麻烦很多。

  1. 依赖库-以flash-attn为例

看到这里,你的本地环境基础搭建,基本已经 OK 了。

还有最后一关,那就是依赖 cuda 版本的各种依赖库。

比如,本地跑大模型,一定绕不过的 flash_attn

如果你在 pip 安装一直无法成功:

  
# --no-build-isolation 意味着构建过程将使用当前环境中已安装的包,而不是创建一个新的隔离环境  
pip install flash-attn --no-build-isolation  

遇到了本文开头的报错,可是环境中的 cuda 版本没问题啊?

这是因为它只去你的 /usr/local 去执行 nvcc,结果发现 cuda 版本不对。

所以,最好在你的 conda 环境中,装上 nvcc 编译器:

  
conda install cuda-nvcc  

当然,这时你可能还会遇到网络的问题,导致安装失败!

怎么搞?

直接去官方仓库,看看有没有 Releases 包?

比如 flash_attn 的官方仓库,就提供了各种版本的 whl 包:https://github.com/Dao-AILab/flash-attention/releases

截至发文,最新版是 2.6.3,根据你的 torch 版本,python 版本 ,选择对应的文件,下载到本地:picture.image

然后,一键安装:

  
pip install flash_attn-2.6.3+cu118torch2.0cxx11abiFALSE-cp310-cp310-linux_x86_64.whl  

whl 包安装,适用于解决网络不通的问题,如果安装失败,一定是版本没对应上,再回头仔细检查下吧。

写在最后

洋洋洒洒数千字,把AI 环境配置的各种问题捋了一遍。不到之处,欢迎评论区留言,我来更新。

如果对你有帮助,欢迎点赞收藏 备用。

👇 关注猴哥,快速入门AI工具

picture.image

# AI 工具:

本地部署大模型?看这篇就够了,Ollama 部署和实战

盘点9家免费且靠谱的AI大模型 API,统一封装,任性调用!

# AI应用** :**

弃坑 Coze,我把 Dify 接入了个人微信,AI小助理太强了

我把「FLUX」接入了「小爱」,微信直接出图,告别一切绘画软件!

202K 下载!最强开源OCR:本地部署,邀你围观体验

49K 下载!最强开源语音克隆TTS:本地部署实测,2秒复刻你的声音

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
CV 技术在视频创作中的应用
本次演讲将介绍在拍摄、编辑等场景,我们如何利用 AI 技术赋能创作者;以及基于这些场景,字节跳动积累的领先技术能力。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论