【问题标题】:How to get all metrics for a SageMaker Hyperparameter tuning job?如何获取 SageMaker 超参数调整作业的所有指标?
【发布时间】:2019-03-21 03:10:20
【问题描述】:
SageMaker 确实提供了 HyperparameterTuningJobAnalytics 对象,但它只包含最终的客观指标值。
这里是示例代码。
tuner = sagemaker.HyperparameterTuningJobAnalytics(tuning_job_name)
full_df = tuner.dataframe()
它返回的数据框仅包含作为列 FinalObjectiveValue 的客观指标。
如果我为调优作业定义了多个指标,如何在 SageMaker 中获取其他指标?
【问题讨论】:
标签:
amazon-web-services
amazon-sagemaker
hyperparameters
【解决方案1】:
您可以使用describe_training_job 检索您为工作配置的所有指标。下面是一个使用 boto3 的示例:
创建 SageMaker 客户端:
smclient = boto3.client('sagemaker')
获取所有训练作业的列表(注意此处的示例参数 - 仅获取按最终目标指标降序排序的最后 100 个作业):
trjobs = smclient.list_training_jobs_for_hyper_parameter_tuning_job(
HyperParameterTuningJobName='YOUR_TUNING_JOB_NAME_HERE',
MaxResults=100,
SortBy='FinalObjectiveMetricValue',
SortOrder='Descending')
遍历每个作业摘要并检索所有指标:
for trjob in trjobs['TrainingJobSummaries']:
jobd = smclient.describe_training_job(TrainingJobName=trjob['TrainingJobName'])
metrics = {m['MetricName']: m['Value'] for m in jobd['FinalMetricDataList']}
print '%s Metrics: %s' % (trjob['TrainingJobName'], metrics)