使用下面的代码 - 在使用CloudML进行培训时,eval仅运行两次(开始和结束)。我希望这个评估至少每10秒钟一次。
如果我在本地运行相同的代码,则表现如预期。
eval_spec = tf.estimator.EvalSpec( input_fn = read_dataset(' {} / test *' .format(OUTPUT_GCS),mode = tf.estimator.ModeKeys.EVAL), 步骤= 5, start_delay_secs = 2, throttle_secs = 10, 出口商=出口商)
我的批量大小是64,而--scale-tier = BASIC。
答案 0 :(得分:1)
我想出来了。在CloudML中运行时,底层检查点配置的覆盖方式与在Datalab中本地运行时的覆盖方式不同。
环境: my_checkpointing_config = tf.estimator.RunConfig(save_checkpoints_secs = 1 * 60,keep_checkpoint_max = 3)
在估算师的congfig属性中解决问题。
具有讽刺意味的是,文档说明了这一点,但在两个不同的部分:
1)throttle_secs:Int。除非最近的评估至少在很多秒前开始,否则不要重新评估。当然,如果没有新的检查点可以进行评估,因此,这是最小的(link)。
2)默认情况下,Estimator根据以下计划(link)在model_dir中保存检查点:
每10分钟(600秒)写一个检查点。 在列车方法开始(第一次迭代)并完成(最终迭代)时写入检查点。 仅保留目录中最近的5个检查点。
这与执行环境的默认设置有关。