首页 文章

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

提问于
浏览
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

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:// 上运行,因此生成的检查点将保持一致 . 至少它对我有用 .

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

相关问题