【问题标题】:Embarrassingly parallel and Tensorflow 2.0令人尴尬的并行和 Tensorflow 2.0
【发布时间】:2020-03-29 21:59:29
【问题描述】:

编辑: 基于cmets,我想在这里做一些澄清。我之前没在网上问过问题,让我再试一次,看看这次是否更好。

我正在使用 Tensorflow 进行模拟研究。在实验中,我将生成 1000 个样本 X1,X2,...,X1000。每个 X1 有 n 个观测值。在每个 Xi 上,我将拟合一个神经网络并保存一些输出 Yi。

所以我的算法如下所示:

for i in range(1000):
    generate Xi
    fit nerual network.
    produce and save Yi

如您所见,该算法效率非常低,因为每次迭代都相互独立。有没有一种优雅的方法来并行模拟适用于 GPU 训练的模拟?

谢谢。

【问题讨论】:

  • 您应该以更好的方式格式化问题。很难理解您所面临的确切问题。此外,如果您分享您之前尝试研究的内容以及遇到的障碍,也会有所帮助
  • 这个标题是在开玩笑吗?很好 ;) 正如@SimasJoneliunas 所说,当我们对任务和您的程序一无所知时,很难提出建议。
  • @SimasJoneliunas 我已经更新了我的问题。如果还有什么不清楚的地方请告诉我。
  • @AlexanderCécile 我已经更新了我的问题。如果还有什么不清楚的地方请告诉我。

标签: python tensorflow parallel-processing tensorflow2.0


【解决方案1】:

如果您将整个算法按照您在图中的描述编写(例如,将其放在 tf.function 中),那么 TF 可能能够并行运行迭代。请参阅tf.while_loop 中的parallel_iterations。请注意,这是在尽力而为的基础上,并且仅在数据依赖性和存在具有副作用的操作允许的情况下才有效。如果不同的步骤适合同一个神经网络,您还需要考虑并发性。

【讨论】:

  • 谢谢!我会看看这些功能并试一试。
  • 我尝试了 tf while 循环,但不知何故我没有看到 parallel_iterations 参数有什么不同。即使是一个简单的例子,我也看不出有什么不同。
  • iteration = tf.constant(0) c = lambda i: tf.less(i, 1010) def print_fun(iteration): 2 + 2 iteration+=1 return (iteration,) r = tf. while_loop(c, print_fun, [迭代], parallel_iterations=10)
最近更新 更多