先看现象。新装的环境里 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。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。