【发布时间】:2017-03-04 12:01:39
【问题描述】:
我有一个以分布式模式运行 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
【问题讨论】:
-
您的 GCS 存储桶是区域存储桶还是多区域存储桶?您想使用区域存储桶(请参阅here),因为 GCS 对区域存储桶的一致性保证比多区域存储桶更强。 Cloud ML 的getting started guide 有创建区域存储桶的说明。
-
我有一个类似的问题:检查点文件里面是什么?检查点是一个引用模型文件的文本文件。就我而言,分布式样本默认使用“--write_to_tmp 1”作为选项,并以不一致的“gs://path/to/checkpoint”结尾。由于该选项,在文本文件中引用了临时文件。我添加了“--write_to_tmp 0”,它解决了我的问题。
-
@Jeremy Lewi:是一个多区域的bucket。
-
@MathiasOrtner: github.com/GoogleCloudPlatform/cloudml-samples/blob/master/… 在我的例子中, output_path 是 gcs 上的路径,所以我假设没有创建本地目录,模型直接保存到 gcs 上。但是有没有办法可以控制这些文件的写入方式?如果完全保存了相当大的〜200MB的模型文件,是否确保保存检查点文件?
标签: tensorflow google-cloud-ml