当使用tensorflow分布时,在sever.join()时,四个GPU的内存突然填满

时间:2017-12-14 13:28:05

标签: python tensorflow distributed

我在Ubuntu的四路GTX1070上运行模型,但是当我启动运行程序的终端时,当我键入python ... py --job_name =“ps”--task_index = 0时,四个GPU看看子层已经满了,我还没有打开一个新的终端来运行worker,问题是什么?

2 个答案:

答案 0 :(得分:1)

这是Tensorflow的工作原理。当它以GPU开始时,它几乎分配了所有内存。

您可以尝试的一件小事是限制GPU分配的部分:

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.5)
sess = tf.Session(config = tf.ConfigProto(gpu_options = gpu_options))

但它控制所有GPU内存,因此您无法确定内存将如何分割(如果您输入0.25,则可能需要1 GPU上的所有内存和其他内存上的0或其他配置。)

答案 1 :(得分:0)

最近刚遇到此问题,可能是因为您在代码中使用了Hibernate: insert into common_user.ATTRIBUTE_SCORE (ID, ATTRIBUTE_ID, SCORE) values (?, ?, ?) 并且没有传递配置参数, 因此TF默认占用了所有GPU的所有内存,因此没有剩余的内存用于工作任务。

解决方案可能是:

server = tf.train.Server(...)

无论如何,它对我有用,希望对你有所帮助。