0

我有一个以分布式模式运行 4000 步的模型。每 120 秒计算一次精度(如提供的示例中所做的那样)。但是,有时找不到最后一个检查点文件。

错误:

无法匹配检查点 gs://path-on-gcs/train/model.ckpt-1485 的文件

检查点文件位于该位置。2000 步的本地运行完美运行。

last_checkpoint = tf.train.latest_checkpoint(train_dir(FLAGS.output_path))

我假设检查点仍在保存过程中,并且文件实际上并未写入。尝试在这样计算精度之前引入等待。但是,起初这似乎可行,该模型仍然因类似问题而失败。

saver.save(session, sv.save_path, global_step)
time.sleep(2) #wait for gcs to be updated
4

1 回答 1

0

从您的评论中,我想我明白发生了什么。我可能错了。

cloud_ml 分布式示例 https://github.com/GoogleCloudPlatform/cloudml-samples/blob/master/mnist/hptuning/trainer/task.py#L426 默认使用临时文件。因此,它在/tmp. 训练完成后,它会复制结果,gs://但不会更正checkpoint仍然包含对本地模型文件的引用的文件/tmp。基本上,这是一个错误。

为了避免这种情况,您应该启动训练过程--write_to_tmp 0或直接修改task.py文件以禁用此选项。然后 TensorFlow 将直接运行gs://,因此生成的检查点将是一致的。至少它对我有用。

检查我的假设是否正确的一种方法是 使用checkpointgs://本地文件系统复制生成的文件gsutils,然后输出其内容。

于 2016-10-24T05:37:01.253 回答