赞
踩
我本来不想写的,因为这类文章太多了。但是我遇到了大大小小的问题,让我重新审视了目前大家写的文章,都存在不同程度的缺陷:
那么直接大家应该最关心结论:使用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编译的代码,可能还需要安装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
ln -s /home/user/nvidia/cuda-11.3/ /home/user/nvidia/cuda/
export CUDA_HOME=/home/user/nvidia/cuda/
conda env list
确定一个具体的conda环境文件夹,例如cu113环境文件夹:/home/usr/anaconda3/envs/cu118/# 激活环境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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。