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

谷歌Colab训练模型报错No CUDA GPUs are available如何解决

No CUDA GPUs are available报错修复方案

错误根因

你提供的训练代码中设备选择逻辑存在硬编码问题:前3行代码已经实现了自动检测CUDA资源、不存在就回退到CPU运行的兼容逻辑,但最后一行device = torch.device("cuda")直接强制指定设备为CUDA,覆盖了前面的兼容逻辑,当Colab未分配GPU时就会触发该报错。

方案一:修改代码兼容CPU运行(无需CUDA资源)

删除硬编码指定CUDA的代码行,启用自动兼容逻辑即可,修改后设备选择部分代码如下:

def train_model(model, train_loader, val_loader, epoch, loss_function, optimizer, path, early_stop):
    # 设备选择:自动检测CUDA,不存在则用CPU
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    # 注释或删除下方两行硬编码CUDA的代码
    #device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    #device = torch.device("cuda")
    model = model.to(device)
    # 剩余训练逻辑保持不变

修改后代码会自动适配当前环境的硬件资源,不需要调整其他训练代码即可直接运行。

提示:CPU训练速度远低于GPU,若模型规模大、数据集体量高,训练耗时会明显增长。

方案二:给Colab分配GPU资源(推荐,无需修改代码)

如果希望用CUDA加速训练,可以手动调整Colab运行时配置:

  • 点击Colab顶部菜单栏「修改」→「笔记本设置」
  • 在弹出窗口的「硬件加速器」选项中选择「GPU」,点击保存
  • 等待运行时重启完成后再执行代码,即可正常调用CUDA资源

补充:代码附带的其他逻辑错误

当前验证环节存在两处笔误,会导致输出的验证指标异常:

  1. 验证AUC计算误用了训练集的标签和预测结果,正确写法为:
val_auc = roc_auc_score(np.array(val_true), np.array(val_y_pred))
  1. 验证结果打印语句存在格式错误和字段错误,正确写法为:
print("Epoch %d val loss is %.3f and val auc is %.3f" % (i+1, total_eval_loss / count_eval, val_auc))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:45:03