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