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

PyTorch模型调试时GPU0报CUDA内存不足但显存充足的异常问题

解决CUDA_VISIBLE_DEVICES=0时显存不足报错的方案

1. 排查宿主机GPU 0的残留进程

容器内的nvidia-smi无法观测宿主机层面的进程占用,直接登录宿主机执行:

nvidia-smi -l

检查是否有未正常退出的进程(如遗留容器、后台服务)占用GPU 0显存,找到对应PID后用kill -9 <PID>终止,再重启容器测试。

2. 重置GPU 0硬件状态

若宿主机无占用进程,可能是GPU残留上下文导致显存异常,执行以下命令重置GPU 0(需root权限):

nvidia-smi --gpu-reset -i 0

重置完成后重启容器,再次测试CUDA_VISIBLE_DEVICES=0的场景。

3. 调整VSCode调试配置

VSCode调试时可能提前初始化CUDA上下文引发异常,修改launch.json添加CUDA_LAUNCH_BLOCKING=1环境变量,同时确保调试逻辑不预加载冗余组件:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: PyTorch Debug",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "env": {
                "CUDA_VISIBLE_DEVICES": "0",
                "CUDA_LAUNCH_BLOCKING": "1"
            },
            "justMyCode": false
        }
    ]
}

启用CUDA_LAUNCH_BLOCKING=1后,报错会显示准确的栈追踪,可定位具体显存分配失败的步骤。

4. 验证容器GPU映射完整性

进入容器执行以下命令,确认GPU 0的参数与其他GPU一致:

nvidia-smi --query-gpu=index,name,memory.total,memory.free --format=csv

若GPU 0参数异常,需重新创建容器时明确指定GPU设备,避免索引映射偏差:

docker run --gpus '"device=0,1,2,3"' [其他容器参数]

5. 测试GPU 0基础可用性

在容器内运行最小测试代码,排除模型本身问题:

import torch
print(torch.cuda.is_available())
print(torch.cuda.device_count())
device = torch.device('cuda:0')
x = torch.randn(1000, 1000).to(device)
print(x.shape)

若该代码报错,需检查宿主机NVIDIA驱动版本与容器内CUDA版本是否匹配(驱动版本需≥容器内CUDA的最低要求)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:55:03