当使用张量流时,当Sever.join()()时,四个GPU的内存突然填充



我在ubuntu中的四向GTX1070上运行了模型,但是当我启动终端运行程序时,当我键入Python ... python ... py -job_name =" ps" - -task_index = 0,四个gpus外观子层已满,我还没有打开一个新的终端来运行该工人,这是什么问题?

这就是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上,而在其他配置上则可以将所有内存取在1个GPU上,或其他配置)。

<</p>

最近遇到了这个问题,这可能是因为您在代码中使用了server = tf.train.Server(...),并且没有传递config congragn,因此,tf默认值为所有GPU的所有内存,因此工作任务没有记忆。

解决方案可能是:

gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.5)
config = tf.ConfigProto(gpu_options = gpu_options)
server = tf.train.Server(..., config=config)

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

最新更新