torch.backends.cudnn.benchmark的作用和副作用?torch.backends.cudnn.benchmark的作用和副作用?
torch.backends.cudnn.benchmark = True:让 cuDNN 在首次遇到某组 (op, shape, dtype) 时,自动跑多种卷积/RNN 等算法,选其中最快的并缓存,后续同配置直接用该算法。目的:在 shape 固定 的训练或推理中,减少「每次都试一遍」的开销,并选到当前硬件上更优的算法,往往能明显提速(尤其卷积多、shape 不变时)。
首次迭代变慢:第一次遇到新 shape 会做 benchmark 试跑,该 step 会偏慢。显存:某些「更快」的算法可能显存更大(如用更多 workspace),极端情况下可能 OOM;若遇 OOM 可尝试关 benchmark 或限制 cuDNN workspace。非确定性:不同 run 可能选到不同算法(若多算法性能接近),数值结果可能略有差异;若需严格可复现(如论文、合规),可设 benchmark=False 并配合 cudnn.deterministic。
| 返回模块 | 返回总览 |