- 显卡:
A4000
(对应的算力为8.6
) - 系统:
Ubuntu 18.04 LTS
- 驱动:
NVIDIA DRIVER 470 - CUDA11.4
- 参考链接1:显卡算力查询官网
这里介绍的显卡算力主要是要和CUDA - cuDNN
匹配(如果要使用cudnn
,8.x
算力的显卡对cudatoolkit
的要求是11.x
)。
conda install
使用该命令,如果不匹配,没有找到对应的包,默认选择安装 CPU
版本!对应的各个版本截图示意如下。
# CUDA 10.2
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=10.2 -c pytorch
# CUDA 11.1
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge
CUDA 10.2
CUDA 11.1
这里需要注意下:PyTorch 1.8.0
可以和 CUDA 11.1
匹配!
# CUDA 10.2
conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=10.2 -c pytorch
# CUDA 11.3
conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=11.3 -c pytorch -c conda-forge
CUDA 10.2
CUDA 11.3
经测试,将 cudatoolkit
版本降至 11.1
后,可以成功下载 GPU
版,11.2
不行。
# CUDA 10.2
conda install pytorch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0 cudatoolkit=10.2 -c pytorch
# CUDA 11.3
conda install pytorch==1.9.0 torchvision==0.10.0 torchaudio==0.9.0 cudatoolkit=11.3 -c pytorch -c conda-forge
CUDA 10.2
CUDA 11.3
同上:经测试,将 cudatoolkit
版本降至 11.1
后,可以成功下载 GPU
版,11.2
不行。
# CUDA 10.2
conda install pytorch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1 cudatoolkit=10.2 -c pytorch
# CUDA 11.3
conda install pytorch==1.9.1 torchvision==0.10.1 torchaudio==0.9.1 cudatoolkit=11.3 -c pytorch -c conda-forge
CUDA 10.2
CUDA 11.3
同上:经测试,将 cudatoolkit
版本降至 11.1
后,可以成功下载 GPU
版,11.2
不行。
# CUDA 10.2
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=10.2 -c pytorch
# CUDA 11.3
conda install pytorch==1.10.0 torchvision==0.11.0 torchaudio==0.10.0 cudatoolkit=11.3 -c pytorch -c conda-forge
CUDA 10.2
CUDA 11.3
可以看到,对于比较新的 PyTorch
版本,是可以使用 conda install
安装 GPU
版本的!而之前相对比较老的版本就不行。
# CUDA 10.2
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=10.2 -c pytorch
# CUDA 11.3
conda install pytorch==1.10.1 torchvision==0.11.2 torchaudio==0.10.1 cudatoolkit=11.3 -c pytorch -c conda-forge
CUDA 10.2
CUDA 11.3
总结
(更正:后来经过测试,将 1.10.0
之前的 PyTorch
,都无法使用 CUDA 11.x
cudatoolkit
版本改为 11.1
后都能成功安装了!),但是可以使用 CUDA 10.x
。
这里说下 CUDA 11.x
与 CUDA 10.x
的区别:支持的算力不同,如果要使用 cuDNN
进一步加速,而显卡算力和安装的 CUDA
不匹配,就无法使用。本次实验使用的显卡为 A4000
,支持的算力为 8.x
,对应的 cuDNN
版本也应该为 8.x
才行。
import torch
print(torch.cuda.is_available(), torch.cuda.device_count())
from torch.backends import cudnn
print(cudnn.is_available())
print(cudnn.is_acceptable(torch.rand(1,).cuda()))
升级为 CUDA 11.x
后,再次验证:
pip install
使用 pip install
基本都没有问题,能够成功安装上 GPU
版本,需要注意的还是上述那点,CUDA
版本要和显卡算力相匹配,否则无法使用 cuDNN
进一步加速运算!
对于无法使用 conda install
的版本,使用 pip install
安装是一个很好的解决方案,唯一的不足之处是,pip install
安装的包只保留在当前虚拟环境中,每次都需要重新下载。而 conda install
时,首先会从 ~/anaconda3/pkgs/
里面寻找,如果找到,直接复制一份到当前虚拟环境,不用重新下载,所以速度基本是以秒计算;如果没有,那么还是会先将包下载缓存到该目录下,然后执行相同的复制 *** 作。
以下只是个人想法!!!
有了以上的知识之后,我们可以这样 *** 作,将可以使用 pip install
安装而无法使用 conda install
的包(比如 PyTorch1.8.1-CUDA 11.3
)复制到 ~/anaconda3/pkgs/
目录下,然后就可以使用 conda install
安装了,但是需要注意一个小细节,就是修改 CUDA
的版本,因为 pip install
只提供 CUDA 11.1
,所以对应到的命令就是:
conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=11.1
一直没有注意到这个细节:为什么使用 conda install
安装不成功,而使用 pip install
就能成功呢?这里官方真的是好好地坑了我们一把!!!其实并不是 conda
本身的问题,而是因为我们指定的 cudatoolkit
版本不对!也就是官方提供的版本不对!!!因此,如果需要使用 conda install
时,只需要将 cudatoolkit
的版本指定为 pip
里面的即可!!!举个栗子:
官方提供的 cuda
安装命令:
# CUDA 11.3
conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=11.3 -c pytorch -c conda-forge
经过上面的实验,我们知道,如果使用上面的命令来安装是不行的,我们这里想要的是 PyTorch 1.8.1
对应的 CUDA 11.x
,这样才能和机器的算力匹配,使用 cudnn
加速运算,而这里官方只给我们提供了最新的 11.3
,直接复制运行就出错了,直接给我们整个 cpu
版本的!让我们来看看官方提供的 pip
命令是怎样的:
# CUDA 11.1
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
# CUDA 10.2
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
# CUDA 10.1
pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
看到了吗?是 CUDA 11.1
,而不是 CUDA 11.3
!!!因此,我们只需要把 conda install
后面的命令稍微改一下,完全可以运行成功:
conda install pytorch==1.8.1 torchvision==0.9.1 torchaudio==0.8.1 cudatoolkit=11.1 -c pytorch -c conda-forge
来对比一下吧。
- 没有修改之前的效果
- 修改之后的效果:
终于把这个困惑给解决了!
!最终方案使用 conda install
时,不指定 cudatoolkit
的版本时,默认会安装与 PyTorch
版本相匹配的最新 CUDA
,因此不需要上面那样反复地尝试!
经过这次的实验捣鼓,终于理解了之前一个博客大佬所说的。如果我们没有 cuda
编程需求的话,根本就不需要安装什么 cudatoolkit cudnn
,只需要安装配置好 NVIDIA
驱动即可!我们在安装 PyTorch
的时候早就已经帮我们打包好了!!!没有上述需求的话还需要安装吗?不需要了!
可以通过将 CUDA
从系统配置变量中移除来检验。
- 如果使用的是
pip install
,是不会安装cudatoolkit
的,因此需要在服务器上配置CUDA
环境。 - 如果你只会用到
conda install
来进行安装,那么不在服务器上安装配置CUDA
也是可以的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)