【问题标题】:Getting reproducible results using tensorflow-gpu使用 tensorflow-gpu 获得可重现的结果
【发布时间】:2018-02-02 13:48:19
【问题描述】:

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

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

在 Google 上搜索时,大多数人指出 reduce_sum 函数是罪魁祸首,因为即使在设置种子之后,reduce_sum 函数在 gpu 上也具有非确定性属性。但是,由于我正在为一篇论文做一个项目,我需要重现结果。有没有其他有效的功能可以解决这个问题?

另一个建议是使用 CPU。但是,我正在处理错误数据,这样的 CPU 不是一个选项。使用 Tensorflow 从事复杂项目的人们如何解决这个问题?或者审核者是否可以加载保存的模型检查点文件以进行结果验证?

【问题讨论】:

  • 我认为这是因为浮点数的求和运算并不是真正的自适应,即a+(b+c) 并不总是等于(a+b)+c。因此,在无法保证操作顺序的情况下进行任何并行计算,每次都会得到不同的结果。它可以从微小的差异开始,但随着时间的推移它们会增长。
  • 如果您不确定审稿人可以接受或不接受的内容,您可以询问您部门的高级成员,或者如果您是学生,请咨询您的主管; here is a related question in Academia SE。我可以说的是,TensorFlow 已被许多公认的学术出版物使用。这可能取决于结果的可变性、数据的大小以及您的特定领域/问题等。
  • @stop-cran 我注意到...我注意到我增加的数据集大小越多,结果之间的差距就越大。
  • 你可以试试夜间版本吗?最近的提交 (d93a55b8) 应该使 GPU 上的 reduce_sum 具有确定性
  • @YaroslavBulatov,从未听说过。谢谢会看看它是如何工作的。

标签: machine-learning tensorflow deep-learning


【解决方案1】:

很酷,您想让您的结果可重现!但是,这里有很多需要注意的地方:

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

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

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

  • 数据集通常不可用:JFT-300M
  • 大量使用计算能力:对于 Google 的一篇 AutoML/Architecture Search 论文,我问作者他们在其中一项实验上花费了多少 GPU 小时。当时,如果我想要这么多 GPU 小时,我需要花费大约 250,000 美元。

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

实现可复制性

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

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

获得按位相同的模型

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

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

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

  • Bitflips:B. Schroeder、E. Pinheiro 和 W.-D。韦伯,“Dram 中的错误 野生:大规模实地研究”
  • 固有的硬件/软件再现性问题:浮动 点乘法不是关联的,并且 GPU 上的不同内核可能会在 不同的时间。因此,每次运行都可能导致不同的 结果。 (如果有人可以在这里提供权威参考,我会很高兴)

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 1970-01-01
    • 2020-07-19
    • 2016-11-12
    • 2020-11-22
    • 2017-12-27
    • 2019-12-06
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多