PyTorch CUDA报错:torch.cuda.is_available()为True但提示设备忙或不可用
临时修复方案(无需重启系统)
- 先排查GPU残留占用:执行
nvidia-smi查看所有占用GPU的进程,若存在无用的僵尸/残留进程,执行kill -9 <进程PID>杀掉对应进程后重试。 - 若未找到占用进程,尝试重置GPU设备:执行
nvidia-smi -r重置所有GPU,或指定单卡重置nvidia-smi -i <GPU编号> -r。 - 重置无效的话,重新加载NVIDIA内核模块(需root权限):
rmmod nvidia_uvm rmmod nvidia_drm rmmod nvidia_modeset rmmod nvidia modprobe nvidia modprobe nvidia_modeset modprobe nvidia_drm modprobe nvidia_uvm
永久规避方案
- 开启NVIDIA持久化守护进程,避免GPU闲置进入低功耗状态后触发异常:
systemctl enable nvidia-persistenced systemctl start nvidia-persistenced
- 确认版本匹配:分别执行
nvcc --version和nvidia-smi查看CUDA运行时版本、驱动支持的最高CUDA版本,保证PyTorch依赖的CUDA版本不高于驱动支持的最高版本。 - 优化nvidia_uvm内核模块参数:在
/etc/modprobe.d/nvidia.conf文件中添加如下配置,之后执行dracut -f重建启动镜像,重启生效:
options nvidia_uvm uvm_global_block_size=2MB
- 若为多用户共享GPU服务器,排查cgroup权限限制、其他用户的显存占用预留,避免当前用户无可用显存配额。
调试方法
复现问题时,在运行命令前添加CUDA_LAUNCH_BLOCKING=1环境变量,即可获得更准确的错误栈,便于定位触发异常的具体操作:
CUDA_LAUNCH_BLOCKING=1 python3 你的脚本路径.py
内容的提问来源于stack exchange,提问作者srcerer
相关产品推荐
相关产品推荐

