Я проверил форумы aws и здесь в SO, и я не могу найти решение этой ошибки или объяснение того, что это такое.
Полная ошибка:
UnexpectedStatusException: Error for HyperParameterTuning job sagemaker-xgboost-200330-1544: Failed. Reason: No objective metrics found after running 5 training jobs. Please ensure that the custom algorithm is emitting the objective metric as defined by the regular expression provided.
, и это соответствует следующему коду:
xgbt = sagemaker.estimator.Estimator(container, #name of training container
role, # IAM role to use
train_instance_count = 1, # number of instances yo use for training
train_instance_type = 'ml.m4.xlarge', #type of virtual machine to use
output_path = 's3://{}/{}/output'.format(session.default_bucket(),
prefix),
sagemaker_session = session) #current sagemaker session
xgbt.set_hyperparameters(
max_depth = 5,
eta = 0.1,
eval_metric='auc',
objective='binary:logistic',
early_stopping_rounds=500,
rate_drop=0.1,
colsample_bytree=0.8,
subsample=0.75,
min_child_weight=0,
num_round = 500)
xgbt.fit({'train': s3_input_train})
, а затем настройка гиперпараметра находится там, где она каркает:
from sagemaker.tuner import IntegerParameter, ContinuousParameter, HyperparameterTuner
xgb_hyperparameter_tuner = HyperparameterTuner(estimator = xgbt, # The estimator object to use as the basis for the training jobs.
objective_metric_name = 'validation:auc', # The metric used to compare trained models.
objective_type = 'Maximize', # Whether we wish to minimize or maximize the metric.
max_jobs = 20, # The total number of models to train
max_parallel_jobs = 3, # The number of models to train in parallel
hyperparameter_ranges = {
'max_depth': IntegerParameter(3, 12),
'eta' : ContinuousParameter(0.01, 0.5),
'min_child_weight': IntegerParameter(2, 8),
'subsample': ContinuousParameter(0.5, 0.9),
'gamma': ContinuousParameter(0, 10),
})
xgb_hyperparameter_tuner.fit({'train': s3_input_train})
xgb_hyperparameter_tuner.wait()
Я думаю, что метрики правильно определены, поэтому я не знаю, чего он хочет от меня.
Большое спасибо за то, что проверили это.