我正在运行类似于Inception sample code的分布式tensorflow培训,但使用此设备设置器:
with tf.device(tf.train.replica_device_setter(ps_tasks=1,
worker_device="/job:worker/task:%d" % FLAGS.task_id,
cluster=cluster_spec)):
该机器有4个GPU和64 GB RAM . ps
作业仅在CPU上运行,并且在两个单独的GPU上运行两个 worker
作业 . 两个 Worker 工作的res内存占用量逐渐增加,直到大约3000步,主要工作人员被OOM杀死(两个 Worker 在崩溃前都占据了约49%的RAM) . 我也尝试过一个单独的工作人员,也有人被杀 . ps
作业占地面积小得多 . 我试过禁用摘要操作,模型保护程序,变量平均器,减少读取器线程,但无济于事 .
1 回答
我在image_processing.py中调用
batch_inputs
时通过评论with tf.device('/cpu:0'):
规范修复了这个问题 . 我的设置可能发生的一个原因虽然不完全清楚,但是我使用了代替
作为调用批处理的最外层训练范围(inception_distributed_train.py) .
不确定为什么这对我的修改设置来说成了一个问题(由于没有关于如何进行设备分配的机制的文档),但是现在内存增加趋势减少了至少十倍,并且测试运行了100个时代 .
也许原始代码在没有CPU设备规范的情况下也能正常工作 .