我在Ubuntu的四路GTX1070上运行模型,但是当我启动运行程序的终端时,当我键入python ... py --job_name =“ps”--task_index = 0时,四个GPU看看子层已经满了,我还没有打开一个新的终端来运行worker,问题是什么?
答案 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(...)
无论如何,它对我有用,希望对你有所帮助。