找不到检查点文件,恢复评估图

时间:2016-10-22 06:38:09

标签: tensorflow google-cloud-ml

我有一个模型,它以分布式模式运行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

1 个答案:

答案 0 :(得分: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复制到本地文件系统上,然后输出其内容。