Pytorch --- cudnn.benchmark

cudnn..benchmark 在程序刚开始加这条语句可以提升一点训练速度,没什么额外开销,一般都会加。
#### 含义 - `torch.backends.cudnn.benchmark = True`:当设置为`True`时,PyTorch会在每次运行卷积层时,在多个卷积算法中自动寻找最适合当前硬件和输入数据尺寸的算法,以达到最快的运行速度。这是通过在后台运行一些基准测试来实现的,所以会在程序开始时增加一些额外的时间开销,但后续的卷积操作会更快[^1]。 - `torch.backends.cudnn.deterministic = False`:当设置为`False`时,允许CuDNN使用非确定性算法。非确定性算法可能会在相同的输入下产生稍微不同的结果,但通常会有更好的性能。相反,当设置为`True`时,CuDNN会使用确定性算法,保证每次运行的结果都是相同的。 #### 使用场景 - **`torch.backends.cudnn.benchmark = True`**:适用于输入数据的尺寸固定,且追求极致的推理或训练速度的场景。例如,在图像分类任务中,如果所有输入图像的尺寸都是固定的,开启这个选项可以显著提高模型的运行速度。在训练大规模深度学习模型时,也可以通过开启这个选项来加速训练过程。 - **`torch.backends.cudnn.deterministic = False`**:当对结果的可重复性要求不高,更注重性能时,可以将其设置为`False`。比如在模型的开发和调试阶段,或者在进行大规模的训练时,为了提高训练效率,可以牺牲一定的结果确定性。 #### 影响 - **性能方面**:`torch.backends.cudnn.benchmark = True`通常会提高卷积操作的性能,尤其是在GPU上。因为它会选择最优的算法,减少卷积操作的时间开销。而`torch.backends.cudnn.deterministic = False`允许使用非确定性算法,也可能会提高性能,但具体效果取决于硬件和算法的实现。 - **结果可重复性方面**:`torch.backends.cudnn.benchmark = True`本身不会影响结果的可重复性,但如果同时设置`torch.backends.cudnn.deterministic = False`,则会破坏结果的可重复性。也就是说,每次运行相同的代码,可能会得到稍微不同的结果。 以下是设置这两个参数的代码示例: ```python import torch # 设置benchmark为True torch.backends.cudnn.benchmark = True # 设置deterministic为False torch.backends.cudnn.deterministic = False ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值