避坑看:最全Pytorch安装、CUDA安装

避坑看:最全Pytorch安装、CUDA安装(根据实践会不断修改)

我本来不想写的,因为这类文章太多了。但是我遇到了大大小小的问题,让我重新审视了目前大家写的文章,都存在不同程度的缺陷:

  1. CUDA版本安装原因不明确
  2. 需要设置系统变量
  3. 安装时缺少学习和研究整体阶段意识
  4. 大部分只有操作而不讲原因

那么直接大家应该最关心结论:使用conda

看似很简单,搜索出来如何安装Pytorch的大部分文章实际上没有完全使用conda管理
下面我先介绍如何正确安装Pytorch和使用conda管理不同版本,方便各位运行各种开源代码

安装

搜索miniconda进入官网安装:https://docs.anaconda.com/free/miniconda/miniconda-install/

参考设置软件镜像:https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

首先解决conda自身解决环境冲突慢问题(可选):

conda install -n base conda-libmamba-solver
conda config --set solver libmamba

搜索版本和决策

使用nvidia显卡驱动,使用nvidia-smi命令可查看支持的最高CUDA版本

搜索cuda版本 conda search cudatoolkit --info
在这里插入图片描述

搜索cudnn: conda search cudnn --info
在这里插入图片描述
请自行根据搜索 cudnn 的 dependencies 和 cuda 结果确定版本,确保都存在!例如:cuda11.3 和 cudnn8.2.1

搜索nvcc: conda search -c nvidia cuda-nvcc
在这里插入图片描述
安装和cuda相同版本nvcc:11.3.*(11.3.58)

正式安装

创建环境管理cuda11.3版本,可自行更改名称cu113和python版本:conda create -n cu113 python=3.8
激活环境:conda activate cu113
安装cuda:conda install cudatoolkit=11.3.1
安装cudnn:conda install cudnn=8.2.1
安装nvcc:conda install -c nvidia cuda-nvcc==11.3.58

安装Pytorch可能存在的问题:使用Pytorch官网得到对应的命令安装Pytorch,但是具体情况不能保证安装到cuda版本。例如

# 官网的conda安装Pytorch1.9.1 cuda版本
conda install pytorch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1 cudatoolkit=11.3 -c pytorch -c conda-forge

实际运行完成后,conda会有一个确认阶段,这时候你要检查pytorch的后缀是否包含
cu113或者cpu
。如果是cu113,则正常输入y;若是cpu,则需要放弃安装(n)使用下面的方式。
在Pytorch安装网页上还有pip的安装方式,但是这需要官方拥有的cuda版本。你可以看到使用下面命令安装Pytorch1.9.1,但是请不要要执行,这是CUDA11.1版本

# 不要执行
pip install torch==1.9.1+cu111 torchvision==0.10.1+cu111 torchaudio==0.9.1 -f https://download.pytorch.org/whl/torch_stable.html

我们复制这个链接 https://download.pytorch.org/whl/torch_stable.html ,在浏览器上访问。使用 ctrl+f 在浏览器页面搜索 cu113
在这里插入图片描述
结果显示:cuda11.3有torch1.10到1.12的版本,cuda11.3版本拥有python3.8的适应版本。所以,我们只需要修改一下命令就可以安装1.10.0版本的Pytorch并且CUDA版本符合要求。使用命令

pip install torch==1.10.0+cu113 torchvision==0.11.0+cu113 torchaudio==0.10.0 -f https://download.pytorch.org/whl/torch_stable.html

至此,安装完毕。进入python,输入下面语句检查

# Pytorch 实际使用的运行时的 cuda 目录
import torch.utils.cpp_extension
torch.utils.cpp_extension.CUDA_HOME
# 编译该 Pytorch release 版本时使用的 cuda 版本
import torch
torch.version.cuda 

至此,你可以安装不同cuda版本的Pytorch并交给conda管理。建议使用conda create -n new_env --clone cu113命令创建新的环境用于某个具体项目。

NVCC的补充

某些需要使用nvcc编译的代码,可能还需要安装cudatoolkit-dev。如果存在编译不通过,或许只能安装NVIDIA官方的完整CUDA包了。欢迎评论区补充

方案一(暂时不知道局限性边界)
搜索:conda search cudatoolkit-dev -c conda-forge
选择版本后安装:conda install cudatoolkit-dev=11.3 -c conda-forge

方案二
如果想要安装CUDA可参考(可适用于非root权限):https://zhuanlan.zhihu.com/p/198161777
CUDA安装完成后环境变量设置Ubuntu复制在 ~/.bashrc 文件末尾并修改你自己的CUDA_HOME
这个脚本只需要修改CUDA_HOME变量即可切换CUDA版本,注意路径末尾必须有斜杠

# cuda
export CUDA_HOME=/home/user/nvidia/cuda-11.3/
#export CUDA_HOME=/home/user/nvidia/cuda-11.8/
if [ $CUDA_HOME ];then
    export PATH=${CUDA_HOME}bin:$PATH
    if [ $LD_LIBRARY ];then
        export LD_LIBRARY_PATH=${CUDA_HOME}lib64:$LD_LIBRARY_PATH
    else
        export LD_LIBRARY_PATH=${CUDA_HOME}lib64
    fi
    export LD_LIBRARY_PATH=${CUDA_HOME}extras/CUPTI/lib64:$LD_LIBRARY_PATH
fi

此时,我们可以每次激活conda环境后修改变量 CUDA_HOME 切换CUDA版本。这里就算可以结束安装了。

如果你觉得自己无法记得环境变量的修改。提供两种解决思路在conda不同环境中修改CUDA版本

方式1:
可能存在特殊情况下的错误,优先看方式2
参考 https://blog.csdn.net/u013832707/article/details/91445030

  1. 首先设置软链接 ln -s /home/user/nvidia/cuda-11.3/ /home/user/nvidia/cuda/
  2. 把~/.bashrc文件(上述代码块)的 CUDA_HOME 修改为export CUDA_HOME=/home/user/nvidia/cuda/
  3. 使用命令conda env list确定一个具体的conda环境文件夹,例如cu113环境文件夹:/home/usr/anaconda3/envs/cu118/
  4. 创建文件夹并写入自定义加载脚本文件
    # 激活环境conda会自动加载文件夹下sh脚本
    mkdir -p /home/usr/anaconda3/envs/cu113/etc/conda/activate.d
    
    # 退出环境conda会自动加载文件夹下sh脚本
    mkdir -p /home/usr/anaconda3/envs/cu113/etc/conda/deactivate.d
    
    编写脚本vi /home/usr/anaconda3/envs/cu113/etc/conda/activate.d/cu113.sh
    rm -rf /home/usr/nvidia/cuda #删除原有软链接cuda11.7
    ln -s /home/usr/nvidia/cuda-11.3/ /home/usr/nvidia/cuda #创建软链接cuda11.3
    
    编写脚本vi /home/usr/anaconda3/envs/cu113/etc/conda/activate.d/cu113.sh
    rm -rf /home/usr/nvidia/cuda # 删除cuda11.3软链接
    ln -s /usr/local/cuda-11.7/ /home/usr/nvidia/cuda # 重新建立默认cuda版本软链接
    

方式2:
这种方法更加麻烦,但是更不容易出现错误。 因为方式1对于多个终端一起运行并不友好,终端一可能修改了软链接导致终端二的环境错误
参考 https://developer.baidu.com/article/details/2800028
参考使用命令conda env config vars set PATH=/usr/local/cuda-11.7/bin:$PATH -n my_env,自行设置好每个环境的CUDA_HOME、PATH、LD_LIBRARY变量
使用命令conda env config vars list查看设置的变量

解释

nvidia-smi是driver api,可以兼容低版本。所以使用它来确定最高cuda。
nvcc是编译器,在未来研究和学习过程中,某些开源项目可能需要使用它。如果编译Pytorch的nvcc和CUDA版本不一致,未来有可能会遇到报错。
conda的cudatoolkit并不是完整的,但是对于Pytorch而言是足够的。
cuDNN是CUDA的一个“补丁”,一个专门为深度学习任务优化的库,它提供了很多高效的算法和优化技巧,能够极大地提升深度学习模型的训练和推理速度。

参考

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
https://blog.csdn.net/qq_15261081/article/details/132774746
https://www.jianshu.com/p/eb5335708f2a
https://www.volcengine.com/theme/3154140-B-7-1
https://zhuanlan.zhihu.com/p/665587525
https://zhuanlan.zhihu.com/p/198161777
https://developer.baidu.com/article/details/2800028
https://blog.csdn.net/u013832707/article/details/91445030

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值