由于fork()/ system()调用,在集群环境中使用tensorflow会产生错误

时间:2018-09-10 13:56:13

标签: python tensorflow keras mpi mpi4py

我在集群环境中将Keras与TensorFlow后端一起使用。 我不在网络上进行任何反向传播,而仅使用predict(...)layer.get_weights()layer.set_weights(...)

我正在直接操纵神经网络的参数,使用进化策略优化适应度函数。

我有一个母版,生成N个参数集(权重和偏差),然后使用MPI将其传递给工人。为此,我使用了mpi4py。然后,这些工作人员在自己的顺序模型实例(keras)上设置这些参数,并通过使用此网络预测动作来评估适应度函数。然后将适应度转移回主数据库,该主数据库将调整从中采样参数集的分布。

运行代码时,出现以下警告:

  

MPI进程执行了涉及到   fork()系统调用以创建子进程。目前是开放式MPI   在可能导致内存损坏或   其他系统错误;您的MPI工作可能会挂起,崩溃或静音   数据损坏。使用fork()(或system()或其他调用   强烈建议不要创建子进程。

我实现了没有keras / tensorflow的算法版本,错误消失了。因此,我相信tensorflow正在执行system()fork()调用。是否可以防止tensorflow进行此类调用?

0 个答案:

没有答案