使用tensorflow-gpu获得可重现的结果

2024-04-12

使用 Tensorflow 处理项目。但是,我似乎无法重现我的结果。

我尝试过设置图形级别种子、numpy 随机种子甚至操作级别种子。然而,它仍然无法重现。

在 Google 搜索中,大多数人都将罪魁祸首归咎于 reduce_sum 函数,因为即使在设置种子之后,reduce_sum 函数在 GPU 上也具有非确定性属性。但是,由于我正在研究论文项目,因此我需要重现结果。有没有其他有效的函数可以解决这个问题?

另一个建议是使用CPU。然而,我正在研究 bug 数据,这样的 CPU 不是一个选择。使用 Tensorflow 处理复杂项目的人们如何解决这个问题?或者评审者可以加载保存的模型检查点文件进行结果验证吗?


太酷了,您想让您的结果可重复!不过,这里有很多注意事项:

我叫一张纸可重现的如果能够获得完全相同的 通过执行完全相同的操作在论文中找到数字 脚步。这意味着如果一个人能够访问相同的环境, 相同的软件、硬件和数据, 得到相同的结果。相比之下,有一篇论文被称为可复制的如果一个人只遵循以下方法就能获得相同的结果 论文中的文字描述。因此可复制性较难 成就,也是衡量质量的更有力指标 纸

您希望在按位相同的模型上实现训练结果。圣杯是以一种方式写你的论文,即使人们只有论文,他们仍然可以确认你的结果。

另请注意,在许多重要论文中,结果实际上是不可能重现的:

  • 数据集通常不可用:JFT-300M https://www.reddit.com/r/MachineLearning/comments/9zj7wl/d_how_do_i_get_googles_jft300m_dataset/
  • 大量使用计算能力:对于 Google 的一篇 AutoML/Architecture Search 论文,我询问作者在其中一项实验上花费了多少 GPU 小时。当时,如果我想要那么多 GPU 小时,我将花费大约 250,000 美元。

如果这是一个问题,很大程度上取决于上下文。作为比较,想想 CERN / LHC:不可能进行完全相同的实验。地球上只有极少数机构拥有检查结果的仪器。但这仍然不是问题。因此,请询问您的顾问/已经在该期刊/会议上发表过文章的人。

实现可复制性

这太难了。我认为以下内容很有帮助:

  • 确保您提到的质量指标没有太多数字
  • 由于训练可能取决于随机初始化,因此您可能还想给出一个间隔而不是单个数字
  • 尝试一些小的变化
  • 从头开始重新实现(也许使用另一个库?)
  • 请同事阅读您的论文,然后向您解释他们认为您做了什么。

获取逐位相同模型

在我看来,你已经做了重要的事情:

  • 设置所有种子:numpy, tensorflow, random, ...
  • 确保训练-测试的划分是一致的
  • 确保训练数据以相同的顺序加载

请注意,可能存在您无法控制的因素:

  • Bitflips:B. Schroeder、E. Pinheiro 和 W.-D。韦伯,“Dram 错误 野生:大规模实地研究”
  • 固有的硬件/软件再现性问题: 漂浮的 点乘法不是结合律并且 GPU 上的不同核心可能会完成计算 不同的时间。因此,每次运行都可能导致不同的结果 结果。 (如果有人能在这里给出权威参考,我会很高兴)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用tensorflow-gpu获得可重现的结果 的相关文章

随机推荐