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

为何PyTorch CUDA任务运行在CPU上?GPU负载0%问题求助

问题描述
  • 执行修正后的代码torch.device('cuda' if torch.cuda.is_available() else 'cpu')(原代码存在笔误torch.code.is_available())返回cuda,确认PyTorch检测到CUDA可用
  • 训练模型时,任务管理器显示GPU负载为0%,CPU负载维持在35-40%
  • PyTorch安装命令:pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cu121
  • 系统监控截图:任务管理器GPU负载截图
排查与解决步骤
  • 强制模型与数据迁移到CUDA设备
    这是最常见的疏漏,必须确保训练流程中所有参与计算的元素都移到CUDA上:

    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    # 模型移到cuda
    model = model.to(device)
    # 损失函数移到cuda(如果有自定义损失或需要的话)
    criterion = criterion.to(device)
    
    for inputs, labels in dataloader:
        # 输入数据与标签移到cuda
        inputs = inputs.to(device)
        labels = labels.to(device)
        
        # 训练前清空梯度
        optimizer.zero_grad()
        # 前向传播
        outputs = model(inputs)
        loss = criterion(outputs, labels)
        # 反向传播+优化
        loss.backward()
        optimizer.step()
    

    任何未迁移到CUDA的元素都会导致CPU承担计算,GPU闲置。

  • 切换任务管理器的GPU监控项
    任务管理器默认显示的「3D」负载不代表CUDA计算负载,右键GPU监控栏,勾选「CUDA」,查看PyTorch实际使用的CUDA核心负载。

  • 验证PyTorch CUDA实际计算能力
    运行以下代码快速验证CUDA是否能正常运算:

    import torch
    print("CUDA可用:", torch.cuda.is_available())
    print("GPU数量:", torch.cuda.device_count())
    # 测试大张量矩阵乘法
    x = torch.randn(2048, 2048).cuda()
    y = torch.randn(2048, 2048).cuda()
    z = torch.matmul(x, y)
    print("运算结果所在设备:", z.device)  # 应输出cuda:0
    

    如果这段代码正常运行且设备显示cuda,说明底层CUDA环境没问题,问题出在训练代码的device配置。

  • 调整模型规模与batch size
    若模型过小、batch size极低,GPU的计算量不足以触发持续负载,会表现为0%。尝试增大batch size(注意显存容量,避免OOM),或用更大的模型测试GPU占用情况。

  • 优化数据加载流程
    若数据加载在CPU上耗时过长,GPU会处于等待状态,表现为负载为0。可尝试:

    • 给DataLoader设置num_workers > 0,开启多进程加载数据
    • 提前将全部数据加载到GPU(显存足够时)
    • 使用TorchVision的预处理加速工具,减少CPU预处理耗时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:03:12