Облачная платформа Tensorflow / AI: в ходе испытаний HyperTune не удалось выявить метрику настройки гиперпараметров.

Я использую tf.estimator API с TensorFlow 2.1 на платформе Google AI для создания регрессора DNN. Чтобы использовать настройку гиперпараметров AI Platform Training, я следовал документам Google . Я использовал следующие параметры конфигурации:

config.yaml:

trainingInput:
    scaleTier: BASIC
    hyperparameters:
        goal: MINIMIZE
        maxTrials: 2
        maxParallelTrials: 2
        hyperparameterMetricTag: rmse
        enableTrialEarlyStopping: True
        params:
        - parameterName: batch_size
          type: DISCRETE
          discreteValues:
          - 100
          - 200
          - 300
        - parameterName: lr
          type: DOUBLE
          minValue: 0.0001
          maxValue: 0.1
          scaleType: UNIT_LOG_SCALE 

И чтобы добавить метрику к моему резюме, я использовал следующий код для моего DNNRegressor:

def rmse(labels, predictions):
    pred_values = predictions['predictions']
    rmse = tf.keras.metrics.RootMeanSquaredError(name='root_mean_squared_error')
    rmse.update_state(labels, pred_values)
    return {'rmse': rmse}

def train_and_evaluate(hparams):
    ...
    estimator = tf.estimator.DNNRegressor(
                       model_dir = output_dir,
                       feature_columns = get_cols(),
                       hidden_units = [max(2, int(FIRST_LAYER_SIZE * SCALE_FACTOR ** i))
                        for i in range(NUM_LAYERS)],
                       optimizer = tf.keras.optimizers.Adam(learning_rate=LEARNING_RATE),
                       config = run_config)
    estimator = tf.estimator.add_metrics(estimator, rmse)

Согласно документации Google, функция add_metric создает новую оценку с указанной метрикой, которая затем используется в качестве метрики гиперпараметра. Однако служба обучения платформе AI не распознает этот показатель: Сведения о вакансии на платформе AI

При локальном запуске кода метрика rmse выводится в журналы. Итак, как мне сделать метрику доступной для работы по обучению на платформе AI с помощью оценщиков?

Кроме того, существует возможность создания отчетов о показателях с помощью пакета cloudml-hypertune Python. Но для этого требуется значение метрики в качестве одного из входных аргументов. Как мне извлечь метрику из функции tf.estimator.train_and_evaluate (поскольку эту функцию я использую для обучения / оценки моего оценщика) для ввода в функцию report_hyperparameter_tuning_metric?

hpt = hypertune.HyperTune()
hpt.report_hyperparameter_tuning_metric(
    hyperparameter_metric_tag='rmse',
    metric_value=??,
    global_step=1000
)

ETA: Журналы не содержат ошибок. В нем говорится, что работа завершена успешно, даже если она не удалась.


comment
Не могли бы вы поделиться журналом? На вашем изображении есть ссылка Просмотр журналов, там вы можете найти дополнительную информацию о том, почему происходит сбой.   -  person Mariana Angeles    schedule 26.09.2020
comment
@MarianaAngeles Я приложил скриншот логов в редакции. Они не показывают ошибок, поэтому здесь они не особо полезны.   -  person uwu    schedule 28.09.2020
comment
Не уверен, что эта публикация может помочь в ответе на вопрос о cloudml-hypertune относительно add_metric Я предлагаю вам открыть обращение в службу поддержки, чтобы разобраться в проблеме, поскольку в журналах нет ошибок, они могут проверить ваш проект, чтобы определить основную причину проблемы.   -  person Enrique Zetina    schedule 15.10.2020