Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用tensorflow distributed时,当sever.join()时,四个GPU的内存突然填满_Python_Tensorflow_Distributed - Fatal编程技术网

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

Python 使用tensorflow distributed时,当sever.join()时,四个GPU的内存突然填满,python,tensorflow,distributed,Python,Tensorflow,Distributed,我在Ubuntu的四路GTX1070上运行了这个模型,但是当我启动终端运行程序时,当我键入python时。。。py--job_name=“ps”-task_index=0,四个GPU外观子层已满,我还没有打开新的终端来运行worker,这是什么问题?这是Tensorflow的工作原理。当它开始使用GPU时,它会分配几乎所有的内存 您可以尝试的一件小事是限制GPU分配的部分: gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction =

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

这是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放在其他GPU或其他配置上)。

最近刚刚遇到这个问题,可能是因为您在代码中使用了
server=tf.train.server(…)
,并且没有传递配置参数, 因此TF default占用了所有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)

不管怎样,这对我很有效,希望能对你有所帮助。

谢谢你的回复!事实上,我尝试过这种方法,但仍然占用了所有内存,我不知道为什么,是因为我使用了Supervisor,然后使用sess=sv.prepare\u或seu wait\u for_session(server.target,config=sess\u config)的原因吗?