torch.backends.cudnn.deterministic与torch.backends.cudnn.benchmark代码解释

torch.backends.cudnn.deterministic与torch.backends.cudnn.benchmark 代码解释

这两行代码是用来调整PyTorch中使用的CuDNN(NVIDIA的CUDA深度学习加速库)的行为,以下行为二选一

1. 保证确定性

# 保证确定性
# 当在CuDNN后端运行时,需要进一步设置两个选项以【确保确定性】
torch.backends.cudnn.deterministic = True

# 关闭CuDNN的自动优化,保证每次运行结果一致
torch.backends.cudnn.benchmark = False

2.保证计算效率

  • torch.backends.cudnn.deterministic = False 表示允许CuDNN使用非确定性的算法来增加训练速度。在默认的非确定性模式下,多次执行相同的程序可能会因为内部并行计算的差异而产生略微不同的结果。这对于调试和需要结果完全可复现的场景不适用,但对于追求最高训练效率的情况是有益的。
  • torch.backends.cudnn.benchmark = True 则开启了一种性能优化模式,CuDNN会在首次运行时对卷积层等操作的不同实现进行 benchmarking(性能测试),并选择最快的一个实现方案。这意味着后续具有相同层结构的操作将使用这个最优方案,从而提高运行速度。注意,这在模型初次运行时会稍微增加一些耗时,但之后的迭代将享受加速效果。此设置对于训练相对固定的网络结构特别有帮助,可以提升训练效率,但可能引入不可复现性,因为它依赖于硬件状态和首次运行时的数据。
# 保证计算效率
# 允许CuDNN使用非确定性的算法来增加训练速度,对于调试和需要结果完全可复现的场景不适用,但对于追求最高训练效率的情况是有益的
torch.backends.cudnn.deterministic = False

# 在每个卷积操作中自动寻找最适合当前配置的高效算法,从而提高计算速度【提高计算效率】
# 开启了一种性能优化模式,CuDNN会在首次运行时对卷积层等操作的不同实现进行 benchmarking(性能测试),并选择最快的一个实现方案
torch.backends.cudnn.benchmark = True   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值