cudnn.benchmark 参数详解

核心作用

  • 自动优化卷积算法
    当设置为 True 时,PyTorch 会:

    • 测试所有可用的 CuDNN 卷积算法
    • 为当前输入尺寸选择最快的算法
    • 缓存最优算法以供后续使用
  • 输入尺寸固定时效果显著
    对固定输入尺寸(如固定 batch size 和图像尺寸)的训练任务能明显加速

适用场景

推荐开启的情况

  • 输入尺寸固定的任务(如标准分类、分割任务)
  • 需要最大化训练速度(大型模型/大数据集)

不建议开启的情况

  • 输入尺寸频繁变化(如可变尺寸训练)
  • 显存资源紧张
  • 需要严格确定性结果

参数配置对比

配置组合 速度 显存占用 适用场景
benchmark=True 固定输入尺寸
benchmark=False 输入尺寸变化/显存不足
deterministic=True 最慢 需要严格可复现性

代码示例

# 推荐在训练脚本开头设置
torch.backends.cudnn.benchmark = True  # 开启优化(输入尺寸固定时)
torch.backends.cudnn.benchmark = False # 关闭优化(输入尺寸变化时)

当前配置分析
“benchmark”: False, # 默认关闭
“deterministic”: True # 强制确定性
由于设定了 deterministic=True,benchmark 会自动失效
这种配置优先保证结果可复现性,牺牲了部分速度优化

最佳实践建议

固定输入尺寸 + 不要求严格确定性 → 开启 benchmark

可变输入尺寸 or 需要可复现性 → 关闭 benchmark

显存不足时 → 关闭 benchmark

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐