先看现象。新装的环境里 torch.cuda.is_available() 返回 False,但 nvidia-smi 能正常显示显卡型号与驱动版本,torch 版本是 2.4.0。

排查方向其实有限,先把可能性排一排。装成了 CPU 版轮子,包名相同但没带 CUDA。也可能是驱动版本低于该 CUDA 运行时要求。

少数情况下是容器启动没加 –gpus all,看不到设备。

不容易想到的是,系统里存在多套 Python,脚本用的不是装包那套。

第一件事是确认装的是不是 CUDA 版本

python -c "import torch;print(torch.__version__, torch.version.cuda)"

然后查看驱动支持的最高 CUDA 版本

nvidia-smi

接着按对应版本重装带 CUDA 的轮子

pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu121

末了确认脚本解释器与安装环境一致

python -c "import sys;print(sys.executable)"

同事提醒我看一下最近一次发布,时间点确实对得上。

命令输出我都留了记录,免得改完记不清原来的值。

改完先别撤,确认这几项。torch.version.cuda 显示 12.1,is_available() 返回 True,能把张量搬到显存并完成一次矩阵乘法。

补一句。包名一样不代表内容一样,CPU 版和 CUDA 版都叫 torch,装错之后报错很少,只会安静地退回到 CPU。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189