AI 工具提示 CUDA 不可用时,先确认它是否使用 PyTorch,并在工具实际使用的 Python 环境里运行诊断。需要分别核对安装包是否支持目标后端、驱动能否看见设备、当前进程是否能创建 GPU 张量;只有电脑里装了一个 CUDA Toolkit,不能作为工具已经可用的验收结果。
本文面向 Windows 上使用 NVIDIA CUDA 路线的 PyTorch 工具。2026 年 10 月 1 日在 Python 3.11.15、PyTorch 2.14.1 CPU 包运行了诊断,记录了不可用分支;没有测试 GPU 驱动修复或 CUDA 张量运行,不给出显卡速度和兼容性保证。其他框架、ROCm 或 macOS 后端需要按对应工具说明处理。

第一步:在工具实际使用的进程里诊断
将下面代码保存为 cuda_check.py,用运行该工具的同一个 Python 执行。若在 IDE 或笔记本里运行,sys.executable 显示的路径也应与该工具一致;在另一个终端装好 torch,不能证明工具会使用那个环境。
PyTorch 官方 is_available 文档定义了当前 CUDA 可用性查询;CUDA 语义说明提供设备和 CUDA 张量操作依据。
import os
import sys
import torch
print('python:', sys.executable)
print('torch:', torch.__version__)
print('compiled_cuda:', torch.version.cuda)
print('compiled_hip:', torch.version.hip)
print('cuda_available:', torch.cuda.is_available())
print('visible_devices_setting:', os.environ.get('CUDA_VISIBLE_DEVICES', '<not set>'))
print('device_count:', torch.cuda.device_count())
if torch.cuda.is_available():
for i in range(torch.cuda.device_count()):
print('device:', i, torch.cuda.get_device_name(i))
x = torch.tensor([1.0, 2.0], device='cuda')
result = (x * 2).cpu().tolist()
assert result == [2.0, 4.0]
print('gpu_tensor_check:', result)
else:
print('gpu_tensor_check: skipped; CUDA unavailable')
如果连 import torch 都失败,先解决该环境缺包或加载依赖失败,保留完整错误;这还不是 GPU 张量测试。诊断本次关键输出如下,解释器路径由你的安装位置决定:
torch: 2.14.1+cpu
compiled_cuda: None
compiled_hip: None
cuda_available: False
device_count: 0
gpu_tensor_check: skipped; CUDA unavailable
本次明确使用 +cpu 安装包,所以没有测试 GPU 操作。不能从这组输出推断电脑物理上没有 GPU。torch.version.cuda 为 None 也不能脱离后端解释:ROCm 环境有自己的 HIP 信息,并使用部分 torch.cuda 接口;本文的修复路线专指 NVIDIA CUDA。
第二步:区分包、驱动与设备可见性
| 证据 | 先检查什么 | 修复方向 |
|---|---|---|
| 版本含 +cpu,CUDA 与 HIP 信息均为空 | 工具是否装了 CPU 包 | 按官方安装选择器和工具依赖要求选择支持目标 CUDA 的包,在同一解释器安装 |
| 有编译 CUDA 信息,is_available 仍为 False | NVIDIA 驱动、硬件支持、设备是否向当前进程暴露 | 先查驱动和进程环境;编译版本存在不代表当前设备初始化成功 |
| 另一个终端可用,工具内不可用 | sys.executable、torch.__version__、启动环境 | 对齐实际解释器和依赖,重启相应进程后复测 |
| CUDA_VISIBLE_DEVICES 限制设备 | 启动脚本或运行环境的设备配置 | 确认这是预期限制还是误配置,不在未核对时修改共享运行策略 |
PyTorch CUDA 环境变量说明列出 CUDA_VISIBLE_DEVICES 对设备可见性的影响。只有在确实设置了该变量时才沿这一分支排查;没有设置并不自动保证驱动和硬件正常。
NVIDIA 路线可以在同一机器的终端先执行:
nvidia-smi --query-gpu=name,driver_version --format=csv
NVIDIA nvidia-smi 文档说明设备和驱动查询。命令不存在、驱动无法通信和正常列出 GPU 是不同现象,保存具体报错再处理。面板里的 CUDA Version 或 CUDA UMD Version 描述驱动支持的信息,不能直接当成当前 PyTorch 包所用 CUDA 版本。
第三步:按官方安装入口修复实际环境
打开PyTorch 官方本地安装选择器,选择实际操作系统、Pip、Python 和目标计算平台;再结合 AI 工具要求的 torch 版本决定安装命令。某些工具固定依赖版本,不能只为追求最新而破坏整套环境。
先检查诊断打印出的解释器所装内容。PowerShell 可让你输入该绝对路径,而不猜测 pip 属于哪个环境:
$toolPython = Read-Host '输入诊断打印出的 Python 绝对路径'
& $toolPython -m pip show torch
安装时把官网命令中的 pip 或 pip3 改为这个解释器的 & $toolPython -m pip 入口,保留官网和工具要求的包名、版本及下载源。安装完成后关闭并重新启动工具进程,再跑 cuda_check.py;安装命令结束不等于运行环境已经切换。
怎样确认问题已解决
需要 cuda_available 为 True、device_count 大于 0、列出的设备符合预期,并实际得到 gpu_tensor_check: [2.0, 4.0]。这个小张量测试用于确认当前进程能创建 CUDA 张量、计算并回传 CPU;不能证明你的大型模型内存足够,也不测业务推理性能。
若 is_available 为 True 但张量操作失败,保留发生在设备分配还是计算阶段的错误,再核对驱动、架构与所装软件的支持。若工具本身仍回退 CPU,对比工具内部和诊断进程的路径与设备设置。
CUDA 可用之后仍慢,下一步查什么?
先在工具内核对输入和模型确实放到目标设备,再定位耗时。本题处理“设备不可用”;设备已经可用时可继续阅读PyTorch Profiler GPU 推理瓶颈检查,把运行耗时与安装问题分开验证。请以该文章显示的具体操作和自己的实际测量为依据。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32899.html