具有 CUDA 本地安装的 Pytorch 失败
Pytorch with CUDA local installation fails
我正在尝试使用 CUDA 安装 PyTorch。
我按照中提到的说明(使用 conda 安装)进行了操作
https://pytorch.org/get-started/locally/
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c
pytorch
conda 安装命令运行时未出现任何错误:
conda list 显示以下内容:
# Name Version Build Channel
cudatoolkit 11.3.1 h2bc3f7f_2
pytorch 1.11.0 py3.9_cuda11.3_cudnn8.2.0_0 pytorch
pytorch-mutex 1.0 cuda pytorch
torch 1.10.2 pypi_0 pypi
torchaudio 0.11.0 py39_cu113 pytorch
torchvision 0.11.3 pypi_0 pypi
但是当我检查 PyTorch 是否启用和访问 GPU 驱动程序和 CUDA 时
torch.cuda.is_available()
returns 错误。
在安装 Pytorch 之前,我检查并确认了
中提到的先决条件
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#system-requirements
https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#pre-installation-actions
这是我的 ubuntu 服务器详细信息:
环境:
- OS/kernel:
Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-154-generic x86_64)
table 下的脚注:Table 1. CUDA 11.6 中的原生 Linux 分发支持
提及
For Ubuntu LTS on x86-64, the Server LTS kernel (e.g. 4.15.x for
18.04) is supported in CUDA 11.6.
- 海湾合作委员会
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
- GLIBC
ldd (Ubuntu GLIBC 2.27-3ubuntu1.5) 2.27
GPU
GeForce GTX 1080 Ti
内核头文件和开发包
$ uname -r
4.15.0-176-generic
据我了解,conda pytorch with CUDA 安装也会安装 CUDA 驱动程序。
我不确定我哪里做错了。
提前致谢。
编辑:
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85
nvcc
显示 CUDA 版本 9.1
而
$ nvidia-smi
Wed May 11 06:44:31 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104 Driver Version: 410.104 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 108... Off | 00000000:05:00.0 Off | N/A |
| 25% 40C P8 11W / 250W | 18MiB / 11177MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 108... Off | 00000000:06:00.0 Off | N/A |
| 25% 40C P8 11W / 250W | 2MiB / 11178MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 2 GeForce GTX 108... Off | 00000000:09:00.0 Off | N/A |
| 25% 35C P8 11W / 250W | 2MiB / 11178MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 4119 G /usr/lib/xorg/Xorg 9MiB |
| 0 4238 G /usr/bin/gnome-shell 6MiB |
+-----------------------------------------------------------------------------+
nvidia-smi
显示 CUDA 版本 10.0
https://varhowto.com/check-cuda-version/
本文提到 nvcc 指的是 CUDA 工具包,而 nvidia-smi
指的是 NVIDIA 驱动程序。
Q1:它是否表明在系统范围内安装了两个不同的 CUDA?
我在我的 conda 环境中安装的 CUDA 工具包(版本 11.3.1)不同于作为系统级安装的工具包(由 nvcc
和 nvidia-smi
的输出显示)。
Q2:根据上面的Whosebug线程回答,它们可以分开。还是我本地安装cuda失败的原因?
Nvidia 驱动是否安装正确?输入nvida-smi
验证,这个问题可能是驱动版本和cudatoolkit版本不匹配导致的。
我已经解决了这个问题。
免责声明:我是CUDA的新手。
以下答案基于 a) 我在其他主题中阅读的内容 b) 我基于这些讨论的经验。
核心逻辑:
CUDA driver 的版本 >= CUDA 运行时版本
参考:Different CUDA versions shown by nvcc and NVIDIA-smi
In most cases, if nvidia-smi reports a CUDA version that is
numerically equal to or higher than the one reported by nvcc -V, this
is not a cause for concern. That is a defined compatibility path in
CUDA (newer drivers/driver API support "older" CUDA toolkits/runtime
API).
因为我正在使用 conda 的 cudatoolkit:
- Driver API: nvidia-smi
- 运行时API:conda的cudatoolkit
对于 cudatoolkit 11.3.1,我使用的是 nvidia-smi CUDA 版本:10.0
解决方法:
升级 NVIDIA drivers.
按照 https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-18-04-bionic-beaver-linux
中的说明升级了 NVIDIA drivers
Post 升级,这里是 nvidia-smi:
的输出
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01 Driver Version: 470.103.01 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:05:00.0 Off | N/A |
| 27% 46C P8 12W / 250W | 19MiB / 11177MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA GeForce ... Off | 00000000:06:00.0 Off | N/A |
| 25% 44C P8 11W / 250W | 2MiB / 11178MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA GeForce ... Off | 00000000:09:00.0 Off | N/A |
| 25% 39C P8 11W / 250W | 2MiB / 11178MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 3636 G /usr/lib/xorg/Xorg 9MiB |
| 0 N/A N/A 4263 G /usr/bin/gnome-shell 6MiB |
+-----------------------------------------------------------------------------+
现在 driver 版本(11.4) >= 运行时版本 (11.3.1)
PyTorch 现在可以将 CUDA 与 GPU 结合使用:
In [1]: import torch
In [2]: torch.cuda.is_available()
Out[2]: True
我正在尝试使用 CUDA 安装 PyTorch。 我按照中提到的说明(使用 conda 安装)进行了操作 https://pytorch.org/get-started/locally/
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
conda 安装命令运行时未出现任何错误:
conda list 显示以下内容:
# Name Version Build Channel
cudatoolkit 11.3.1 h2bc3f7f_2
pytorch 1.11.0 py3.9_cuda11.3_cudnn8.2.0_0 pytorch
pytorch-mutex 1.0 cuda pytorch
torch 1.10.2 pypi_0 pypi
torchaudio 0.11.0 py39_cu113 pytorch
torchvision 0.11.3 pypi_0 pypi
但是当我检查 PyTorch 是否启用和访问 GPU 驱动程序和 CUDA 时
torch.cuda.is_available()
returns 错误。
在安装 Pytorch 之前,我检查并确认了
中提到的先决条件https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#system-requirements https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#pre-installation-actions
这是我的 ubuntu 服务器详细信息:
环境:
- OS/kernel:
Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-154-generic x86_64)
table 下的脚注:Table 1. CUDA 11.6 中的原生 Linux 分发支持 提及
For Ubuntu LTS on x86-64, the Server LTS kernel (e.g. 4.15.x for 18.04) is supported in CUDA 11.6.
- 海湾合作委员会
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
- GLIBC
ldd (Ubuntu GLIBC 2.27-3ubuntu1.5) 2.27
GPU
GeForce GTX 1080 Ti
内核头文件和开发包
$ uname -r
4.15.0-176-generic
据我了解,conda pytorch with CUDA 安装也会安装 CUDA 驱动程序。
我不确定我哪里做错了。 提前致谢。
编辑:
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85
nvcc
显示 CUDA 版本 9.1
而
$ nvidia-smi
Wed May 11 06:44:31 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.104 Driver Version: 410.104 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 108... Off | 00000000:05:00.0 Off | N/A |
| 25% 40C P8 11W / 250W | 18MiB / 11177MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 108... Off | 00000000:06:00.0 Off | N/A |
| 25% 40C P8 11W / 250W | 2MiB / 11178MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 2 GeForce GTX 108... Off | 00000000:09:00.0 Off | N/A |
| 25% 35C P8 11W / 250W | 2MiB / 11178MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 4119 G /usr/lib/xorg/Xorg 9MiB |
| 0 4238 G /usr/bin/gnome-shell 6MiB |
+-----------------------------------------------------------------------------+
nvidia-smi
显示 CUDA 版本 10.0
https://varhowto.com/check-cuda-version/
本文提到 nvcc 指的是 CUDA 工具包,而 nvidia-smi
指的是 NVIDIA 驱动程序。
Q1:它是否表明在系统范围内安装了两个不同的 CUDA?
nvcc
和 nvidia-smi
的输出显示)。
Q2:根据上面的Whosebug线程回答,它们可以分开。还是我本地安装cuda失败的原因?
Nvidia 驱动是否安装正确?输入nvida-smi
验证,这个问题可能是驱动版本和cudatoolkit版本不匹配导致的。
我已经解决了这个问题。
免责声明:我是CUDA的新手。 以下答案基于 a) 我在其他主题中阅读的内容 b) 我基于这些讨论的经验。
核心逻辑: CUDA driver 的版本 >= CUDA 运行时版本
参考:Different CUDA versions shown by nvcc and NVIDIA-smi
In most cases, if nvidia-smi reports a CUDA version that is numerically equal to or higher than the one reported by nvcc -V, this is not a cause for concern. That is a defined compatibility path in CUDA (newer drivers/driver API support "older" CUDA toolkits/runtime API).
因为我正在使用 conda 的 cudatoolkit:
- Driver API: nvidia-smi
- 运行时API:conda的cudatoolkit
对于 cudatoolkit 11.3.1,我使用的是 nvidia-smi CUDA 版本:10.0
解决方法: 升级 NVIDIA drivers.
按照 https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-18-04-bionic-beaver-linux
中的说明升级了 NVIDIA driversPost 升级,这里是 nvidia-smi:
的输出+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01 Driver Version: 470.103.01 CUDA Version: 11.4 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 NVIDIA GeForce ... Off | 00000000:05:00.0 Off | N/A |
| 27% 46C P8 12W / 250W | 19MiB / 11177MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 1 NVIDIA GeForce ... Off | 00000000:06:00.0 Off | N/A |
| 25% 44C P8 11W / 250W | 2MiB / 11178MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
| 2 NVIDIA GeForce ... Off | 00000000:09:00.0 Off | N/A |
| 25% 39C P8 11W / 250W | 2MiB / 11178MiB | 0% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=============================================================================|
| 0 N/A N/A 3636 G /usr/lib/xorg/Xorg 9MiB |
| 0 N/A N/A 4263 G /usr/bin/gnome-shell 6MiB |
+-----------------------------------------------------------------------------+
现在 driver 版本(11.4) >= 运行时版本 (11.3.1)
PyTorch 现在可以将 CUDA 与 GPU 结合使用:
In [1]: import torch
In [2]: torch.cuda.is_available()
Out[2]: True