PyTorch中的重现性和性能

时间:2019-05-29 06:38:07

标签: python performance deep-learning pytorch deterministic

documentation指出:

  

确定性模式可能会对性能产生影响,具体取决于您的模型。

我的问题是,这里的表现是什么意思。处理速度或模型质量(即最小损失)?换句话说,当设置手动种子并以确定性方式执行模型时,这会导致更长的训练时间,直到找到最小的损失,还是最小损失比非确定性模型更糟?

出于完整性考虑,我通过设置所有这些属性来手动使模型具有确定性:

def set_seed(seed):
    torch.manual_seed(seed)
    torch.cuda.manual_seed_all(seed)
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False
    np.random.seed(seed)
    random.seed(seed)
    os.environ['PYTHONHASHSEED'] = str(seed)

2 个答案:

答案 0 :(得分:1)

性能是指运行时间; CuDNN有几种实现方式,当cudnn.deterministic设置为true时,您是在告诉CuDNN您只需要确定性实现(或我们认为的实现)。简而言之,执行此操作时,在输入相同输入时,应该在CPU或相同系统上获得相同的结果 em>。为什么会影响性能? CuDNN使用启发式方法来选择实现。因此,实际上取决于您的模型,CuDNN的行为如何。选择确定性的设置可能会影响运行时,因为可以说,在同一运行时间选择它们可能是更快的方法。


关于您的代码段,我做了精确的播种,对于100多次DL实验,它一直表现良好(就可重复性而言)。

答案 1 :(得分:0)

在这种情况下,

“性能”指的是运行时