设置确定性计算开关

  • 相关随机性固定方法都必须与待固定的网络、算子等在同一个主进程,部分模型脚本中main()与训练网络并不在一个进程中。
  • 在当前ACL搜索中没有匹配编译缓存key的确定性开关数据,导致每次更新都使用_deterministic_算法,使用ACL层缓存中的配置信息,不能及时更新算子的确定性信息。

    解决方案:

    • 使用multiprocessing的spawn作为一个进程,可以独立使用,ACL算子缓存不会干扰。
    • 每次运行时删除PTA的缓存(cache目录下的内容)。

在使用PyTorch框架进行训练时,若需要设置随机数种子,在GPU或CPU上固定每次的训练结果,需在程序执行的开始处添加以下代码。随机数种子seed确定时,模型的训练结果将始终保持一致。

当前对aicpu的卷积和卷积算法等算子的随机固定使用为:

torch.use_deterministic_algorithms(True)

验证是否设置成功可参考以下方法。