You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch RuntimeError:可访问GPU但Tensor移至GPU失败求助

问题排查与解决方法

1. PyTorch与系统CUDA版本不匹配

nvidia-smi显示的是系统CUDA驱动支持的最高CUDA版本,但PyTorch实际依赖的是其编译时绑定的CUDA版本。比如系统驱动支持CUDA 12.0,但安装的PyTorch绑定了CUDA 11.8,就可能出现兼容性问题。

  • 验证方法:运行以下代码查看PyTorch的CUDA版本及可用性
import torch
print(torch.version.cuda)
print(torch.cuda.is_available())
  • 解决:重新安装与系统CUDA版本匹配的PyTorch包,根据自身CUDA版本选择对应安装命令

2. PyTorch未安装CUDA支持版本

若误装了CPU-only版本的PyTorch,即使系统GPU可用,也无法将Tensor移至GPU。

  • 验证:执行print(torch.cuda.is_available()),若返回False,说明PyTorch未启用CUDA支持
  • 解决:卸载现有PyTorch,重新安装带CUDA支持的版本,例如:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

(将cu118替换为你的系统CUDA对应版本,如cu121)

3. GPU被其他进程占用

nvidia-smi显示GPU存在,但显存可能被其他进程占满,导致无法分配Tensor。

  • 验证:查看nvidia-smi输出的Processes栏,确认是否有进程占用大量显存
  • 解决:终止占用GPU的无关进程,或执行torch.cuda.empty_cache()释放PyTorch的缓存显存

4. 代码中设备指定错误

可能硬编码了不存在的GPU设备索引,比如服务器只有1块GPU却指定cuda:1。

  • 验证:运行print(torch.cuda.device_count())查看可用GPU数量,确保指定的设备索引在范围内
  • 解决:使用动态设备指定逻辑,避免硬编码错误:
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
tensor = tensor.to(device)

5. 服务器GPU权限限制

部分服务器会限制普通用户的GPU访问权限,即使nvidia-smi能看到设备,实际无使用权限。

  • 验证:执行torch.cuda.current_device(),若报错权限相关信息,说明存在权限问题
  • 解决:联系服务器管理员添加GPU访问权限,或确认是否需要通过调度工具(如Slurm)申请GPU资源

内容的提问来源于stack exchange,提问作者Stanley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 11:22:37