这类问题我又碰上了一次。执行 torch.zeros(1).cuda() 时报 AssertionError: Torch not compiled with CUDA enabled,nvidia-smi 却完全正常。

第一反应是「同一环境里装过两次,残留了 CPU 版目录」,验证下来不成立。

原因不止一个,得分开看。pip 默认源装到的是 CPU 轮子;conda 环境里 pytorch 与 cudatoolkit 版本不配套;系统架构不匹配,装到了错误的平台包。

第一件事是确认当前包是否带 CUDA

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

卸载后从官方源装对应 CUDA 版本

pip uninstall -y torch; pip install torch --index-url https://download.pytorch.org/whl/cu121

conda 环境用官方渠道安装

conda install pytorch pytorch-cuda=12.1 -c pytorch -c nvidia

再次验证并跑一次矩阵乘法

python -c "import torch;print((torch.randn(4,4).cuda()@torch.randn(4,4).cuda()).shape)"

中途换过一次思路,把范围缩到最小的那一层,反而快了。

中间停过一次,把已经改的东西回滚干净,再重新来一遍。

改完先别撤,确认这几项。torch.version.cuda 不为 None,cuda() 调用成功返回张量,显存占用同步上升,模型能搬到显卡上完整跑完一次前向。

提醒一点。pip 官方源和 PyTorch 专用源里的同名包内容不同,用默认源装完看起来成功,实际拿到的是 CPU 版本,装完必须核对版本号才能确认。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189