torch.cuda.is_available()返回false说明gpu路径彻底断开,需依次检查nvidia-smi输出、pytorch包名是否含cuda、torch.version.cuda与nvcc --version主版本是否一致,最后用torch.ones(1).cuda()验证真实可用性。

torch.cuda.is_available() 返回 False,说明 PyTorch 根本没连上 GPU —— 不是“默认用 CPU”,而是 GPU 路径彻底断了。
先确认宿主机是否真能看见 GPU
PyTorch 不会自己找显卡,它只信任 nvidia-smi 的结果。如果这个命令都报错或没输出 GPU 信息,后面所有 Python 检查都是白忙。
- 运行
nvidia-smi,看是否显示驱动版本和 GPU 名称(如 RTX 4090) - 若提示
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver,说明内核模块没加载,需重装驱动或检查 secure boot 是否禁用 - 若显示
No devices were found,可能是 PCIe 插槽接触不良、BIOS 中禁用了 GPU 或使用了集显直连模式
检查 conda/pip 安装的到底是哪个 PyTorch
conda 会“自动降级”:当你指定 cudatoolkit=12.1,但官方源里没有对应 CUDA 版本的 GPU 版 PyTorch 时,它可能悄悄装一个 pytorch-*-cpu_* 包来凑数。
调用 Cutout.Pro 视觉处理 API 进行背景移除、人像抠图和照片增强,支持文件上传与图片 URL 输入。
- 运行
conda list pytorch,看安装包名是否含cuda(如pytorch-2.3.1-py3.11_cuda12.1.105_0)还是cpu(如pytorch-2.3.1-py3.11_cpu_0) - 用
python -c "import torch; print(torch.__file__)"确认当前 import 的路径是否在你激活的 conda 环境里(避免误用全局或旧环境) - 不要依赖
pip show torch的 Summary 字段,它常写 “CUDA enabled” 即使实际是 CPU 版——以文件名和torch.version.cuda为准
验证 PyTorch 绑定的 CUDA 版本是否匹配系统
torch.version.cuda 是编译时硬编码的版本号,不是你本地 nvcc --version 的结果。两者不兼容就会静默回退到 CPU。
- 运行
python -c "import torch; print(torch.version.cuda)",得到类似12.1的字符串 - 运行
nvcc --version,看输出的release 12.1, V12.1.105是否主版本一致(12.1对12.1✅,12.1对12.3❌) - 注意:
nvidia-smi右上角的CUDA Version: 12.2表示驱动支持的最高 CUDA 版本,不是你装的 toolkit 版本 —— 它只是上限,不是实际运行环境
最后一步:强制触发 CUDA 初始化
有些环境(尤其是 Docker 或 WSL2)下,is_available() 可能返回 True 但后续分配失败。用最小操作验证真实可用性:
- 运行
python -c "import torch; x = torch.ones(1).cuda(); print(x.device)" - 若报错
CUDA error: no kernel image is available for execution on the device,说明 GPU 架构不匹配(比如 PyTorch 编译时没包含 sm_86 支持,但你的 RTX 4090 需要它) - 若报错
libcudart.so.XX: cannot open shared object file,说明LD_LIBRARY_PATH没包含 CUDA toolkit 的 lib64 目录
真正卡住的地方往往不在代码里,而在 conda 包名后缀、torch.version.cuda 和 nvcc --version 三者的微小错位——差一个小数点,就全程 CPU 跑。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










