A4000
(对应的算力为 8.6
)Ubuntu 18.04 LTS
NVIDIA DRIVER 470 - CUDA11.4
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()))
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
也是可以的。