【问题标题】:Customize metric visualization in MLFlow UI when using mlflow.tensorflow.autolog()使用 mlflow.tensorflow.autolog() 时在 MLFlow UI 中自定义指标可视化
【发布时间】:2020-07-03 08:15:46
【问题描述】:

我正在尝试将 MLFlow 集成到我的项目中。因为我使用tf.keras.fit_generator() 进行培训,所以我利用mlflow.tensorflow.autolog()(此处为docs)来启用指标和参数的自动记录:

    model = Unet()
    optimizer = tf.keras.optimizers.Adam(LEARNING_RATE)

    metrics = [IOUScore(threshold=0.5), FScore(threshold=0.5)]
    model.compile(optimizer, customized_loss, metrics)

    callbacks = [
        tf.keras.callbacks.ModelCheckpoint("model.h5", save_weights_only=True, save_best_only=True, mode='min'),
        tf.keras.callbacks.TensorBoard(log_dir='./logs', profile_batch=0, update_freq='batch'),
    ]


    train_dataset = Dataset(src_dir=SOURCE_DIR)

    train_data_loader = DataLoader(train_dataset, BATCH_SIZE, shuffle=True)

   
    with mlflow.start_run():
        mlflow.tensorflow.autolog()
        mlflow.log_param("batch_size", BATCH_SIZE)

        model.fit_generator(
            train_data_loader,
            steps_per_epoch=len(train_data_loader),
            epochs=EPOCHS,
            callbacks=callbacks   
            )

我期待这样的事情(只是来自docs 的演示):

然而,训练结束后,我得到了:

如何配置,以便度量图将在每个时期更新并显示其值,而不仅仅是显示最新值?

【问题讨论】:

    标签: tf.keras mlflow


    【解决方案1】:

    四处搜索后,我发现this issue与我上面的问题有关。实际上,我所有的指标在每次训练时只记录一次(而不是我直觉认为的每个时期)。原因是我没有在mlflow.tensorflow.autolog() 中指定every_n_iter 参数,它表示在执行MLflow 日志指标之前必须通过多少“迭代”(参见docs)。因此,将我的代码更改为:

    mlflow.tensorflow.autolog(every_n_iter=1)

    解决了问题。

    P/s:请记住,在 TF 2.x 中,“迭代”是一个 epoch(在 TF 1.x 中是一个批次)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多