使用类似于https://github.com/tensorflow/models/tree/master/inception的设置,主要工作人员会自动在运行此进程的节点上保存检查点文件。我在两个不同的节点上运行两个ps。两个工人也在两个节点上运行,其中一个工人是主要工作人员。
在没有任何修改的情况下重新启动培训时,Supervisor会自动尝试恢复最后一个检查点文件,但最终会发出错误,指出它无法在第二个节点(主要工作者以外的节点)上找到ckpt,因为Chief从未在第二个节点上保存ckpt。
W tensorflow/core/framework/op_kernel.cc:936] Not found: Unsuccessful TensorSliceReader constructor: Failed to find any matching files for /home/muneebs/tf_train/model.ckpt-275
如果我将ckpt目录复制到第二个节点,它恢复正常。这是一个错误吗?是否应该将saver初始化为sharded = True?如果是这样,那是唯一的方法吗,如果稍后节点数量发生变化,我们就不能将ckpt作为单个文件?
答案 0 :(得分:0)
像 hdfs 这样的分布式文件系统会有所帮助。
你可以将模型(ckpt)保存到hdfs中的目录,从而避免了恢复ckpt的问题。
另一种方法是在同一台机器上启动 ps 和 worker ,其task_index = 0。