必须根据nvidia-smi显示的驱动支持最高CUDA版本、实际安装的CUDA Toolkit版本及Python版本三者匹配选择PyTorch,仅用pip install torch会默认安装CPU版且易导致torch.cuda.is_available()返回False。

pip install torch 这条命令在大多数 Linux 服务器上不能直接用——它默认装的是 CPU 版,且不保证与你已有的 CUDA/cuDNN 版本兼容。装错版本会导致 torch.cuda.is_available() 返回 False,GPU 完全不可用,但又不报错,排查起来特别耗时。
怎么查清自己该装哪个 PyTorch 版本
别凭直觉选「最新版」或「CUDA 12.x」。关键看三件事:
-
nvidia-smi输出顶部的CUDA Version: 12.4(这是驱动支持的最高 CUDA 版本,不是你装的 CUDA Toolkit 版本) -
nvcc --version或cat /usr/local/cuda/version.txt才是你实际安装的 CUDA Toolkit 版本 -
python --version必须是 3.8–3.11;PyTorch 2.4+ 已停止支持 Python 3.7
例如:驱动显示支持 CUDA 12.4,但你只装了 CUDA 11.8 Toolkit → 就必须选 cu118 版本的 PyTorch,否则 torch.cuda.is_available() 一定为 False。
conda install pytorch 和 pip install torch 的本质区别
两者不是「换种方式装」,而是依赖链完全不同:
-
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch:conda 自带 CUDA 运行时(libcudart.so),不依赖系统级/usr/local/cuda路径,适合没有 root 权限、或系统 CUDA 被锁死的环境 -
pip install torch==2.4.0+cu118 -f https://download.pytorch.org/whl/torch_stable.html:pip 包硬链接系统 CUDA 库,要求/usr/local/cuda-11.8存在且LD_LIBRARY_PATH包含它,否则运行时报libcuda.so.1: cannot open shared object file
如果你用 apt install nvidia-cuda-toolkit 装过 CUDA,大概率路径不对、库不全——这种情况下优先用 conda 方案。
验证 GPU 是否真可用,不止 import torch
只跑 import torch; print(torch.__version__) 成功,不代表 GPU 就能用。必须补这三步:
- 确认 CUDA 设备数:
print(torch.cuda.device_count())—— 返回 0 就说明没识别到 GPU - 确认当前设备是否可用:
print(torch.cuda.is_available())—— 返回True才算通过基础门槛 - 真正分配张量到 GPU:
x = torch.randn(3, 3).cuda()—— 如果报RuntimeError: CUDA error: no kernel image is available for execution on the device,说明显卡计算能力(sm_xx)和 PyTorch 编译目标不匹配(比如 A100 卡需要 sm_80,但你装的是只支持 sm_50 的旧包)
最后一句最容易被跳过,但它才是区分「装上了」和「能用了」的关键动作。


















