使用 Amazon SageMaker 控制台和 API 搜索 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon SageMaker 控制台和 API 搜索

开发机器学习模型通常需要广泛地试验不同数据集、算法和超参数值。要管理多达数千个机器学习模型实验,请使用 中的搜索功能SageMaker。

可以使用 SageMaker 搜索功能来执行以下操作:

  • 使用属性、超参数、性能指标或任何元数据整理、查找和评估训练作业。

  • 通过查看训练作业和模型指标(例如,训练损失或验证准确性)来找出性能最佳的模型。

  • 跟踪模型的谱系,直到训练作业及其相关资源,例如训练数据集。

本主题介绍从 SageMaker 控制台和 SageMaker API 进行搜索。有关在 Amazon SageMaker Studio 中进行搜索的信息,请参阅使用 Studio 搜索实验

用于管理 ML 实验的示例笔记本

有关使用 Amazon SageMaker 模型跟踪功能管理机器学习实验的示例笔记本,请参阅使用 Amazon SageMaker 模型跟踪功能管理机器学习实验

有关如何创建和访问可用于在 SageMaker 中运行示例的 Jupyter 笔记本实例的说明,请参阅使用 Amazon SageMaker 笔记本实例。创建笔记本实例并打开它后,选择 SageMaker Examples (示例) 选项卡以查看所有SageMaker示例的列表。用于管理机器学习实验的笔记本位于高级功能部分。要打开笔记本,请选择其 Use (使用) 选项卡,然后选择 Create copy (创建副本)。如果您有任何疑问,请将其发布到 Amazon Machine Learning 开发人员论坛

组织、查找和评估训练作业(控制台)

要组织训练作业,请为其分配一个或多个标签。

要查找特定训练作业、模型或资源,请使用模型跟踪功能以搜索分配给任意可搜索项的关键字。可搜索的项目包括训练作业、模型、超参数、元数据、标签和 URLs。要优化搜索结果,您可以使用多个条件进行搜索。

要选择最佳模型以进行部署,您需要针对一个或多个指标评估所有模型的性能。您可以使用模型跟踪结果来列出、排序和评估实验中模型的性能。

使用标签来跟踪训练作业(控制台)

要对训练作业进行分组,请创建标记以及描述性的密钥和值。例如,为以下各项创建标签键:项目、拥有者、客户和行业。

将标签添加至训练作业(控制台)

  1. 打开 Amazon SageMaker 控制台

  2. 在导航窗格中,选择 Training jobs (训练作业),然后选择 Create training job (创建训练作业)

  3. 滚动到页面底部,并输入标签的键和值。

  4. 要添加其他标签,请选择添加标签,然后添加另一个键值对。

查找训练作业(控制台)

您可以使用各种作业属性搜索训练作业。请注意,仅当您创建了具有该属性的训练作业时,某些搜索参数才会显示。例如,仅当您为训练作业添加了标记时,才会显示 Tags (标记)

查找训练作业(控制台)

  1. 打开 Amazon SageMaker 控制台

  2. 在导航窗格中,选择 Search

  3. 添加 Parameters (参数)

    1. 在搜索框中,输入参数并选择参数类型,例如 TrainingJobName

    2. 选择条件操作。对于数字值,使用运算符,例如 is equals to (等于)lesser than (小于)greater than (大于)。对于基于文本的值,使用运算符,例如 equals to (等于)contains (包含)

    3. 为参数输入值。

  4. (可选)要细化您的搜索,请添加额外的搜索条件。选择添加行并输入参数值。

  5. 选择搜索

评估 Models (控制台)

要评估模型的性能,请查看其元数据、超参数和指标。要突出显示指标,请调整视图以仅显示指标和重要超参数。

评估模型(控制台)

  1. 打开 Amazon SageMaker 控制台

  2. 在导航窗格中,选择搜索并通过指定相关参数来搜索训练作业。结果将显示在表中。

  3. 通过选择搜索结果表中的设置图标打开首选项窗口。

  4. 要显示或隐藏超参数或指标,请通过选择 HyperparameterMetric 来打开或关闭它。

  5. 进行必要的更改,然后选择更新视图

  6. 在查看指标和重要的超参数后,您可以比较和对比结果。然后,您可以选择最佳模型来托管或调查性能较差的模型。

查找和评估训练作业 (API)

要查找和评估训练作业或获取在实验中使用的可搜索项的建议,您可以使用 Search API。

查找训练作业 (API)

要查找训练作业,请使用 search_params 参数创建搜索参数。然后,在 AWS 的 smclient 子进程中使用搜索函数适用于 Python (Boto3) 的开发工具包。

以下示例说明如何使用 Search API 查找训练作业。

import boto3 search_params={ "MaxResults": 10, "Resource": "TrainingJob", "SearchExpression": { "Filters": [{ "Name": "Tags.Project", "Operator": "Equals", "Value": "Project_Binary_Classifier" }]}, "SortBy": "Metrics.train:binary_classification_accuracy", "SortOrder": "Descending" } smclient = boto3.client(service_name='sagemaker') results = smclient.search(**search_params)

评估模型 (API)

要评估模型,请按照中所述运行搜索查找训练作业 (API),查看模型指标,然后使用 AWS 适用于 Python (Boto3) 的开发工具包 创建表并绘制表。

以下示例显示如何评估模型并在表中显示结果。

import pandas headers=["Training Job Name", "Training Job Status", "Batch Size", "Binary Classification Accuracy"] rows=[] for result in results['Results']: trainingJob = result['TrainingJob'] metrics = trainingJob['FinalMetricDataList'] rows.append([trainingJob['TrainingJobName'], trainingJob['TrainingJobStatus'], trainingJob['HyperParameters']['mini_batch_size'], metrics[[x['MetricName'] for x in metrics].index('train:binary_classification_accuracy')]['Value'] ]) df = pandas.DataFrame(data=rows,columns=headers) from IPython.display import display, HTMLdisplay(HTML(df.to_html()))

获取搜索建议 (API)

要获取搜索建议,请使用 GetSearchSuggestions API。

AWS 的以下示例适用于 Python (Boto3) 的开发工具包是针对get_search_suggestions包含 的项目的请求linear

search_suggestion_params={ "Resource": "TrainingJob", "SuggestionQuery": { "PropertyNameQuery": { "PropertyNameHint": "linear" } } }

以下是 get_search_suggestions 请求的示例响应。

{ 'PropertyNameSuggestions': [{'PropertyName': 'hyperparameters.linear_init_method'}, {'PropertyName': 'hyperparameters.linear_init_value'}, {'PropertyName': 'hyperparameters.linear_init_sigma'}, {'PropertyName': 'hyperparameters.linear_lr'}, {'PropertyName': 'hyperparameters.linear_wd'}] }

获得搜索建议后,您可以在搜索中使用其中一个属性名称。

验证您的训练作业使用的数据集

您可以使用模型跟踪功能来验证训练中使用了哪些数据集,holdout 数据集用于哪些地方,以及其他有关训练作业的详细信息。例如,使用模型跟踪功能验证在训练作业中使用了某个特定数据集进行审计或验证合规性。

要检查训练作业中是否使用了特定的数据集,请在 Amazon Simple Storage Service (Amazon S3) 中搜索指向其位置的 URL。模型跟踪功能将返回使用您指定的数据集的训练作业。如果搜索未返回数据集(结果为空),则数据集未用于训练作业中。例如,空结果可确认未使用保留数据集。

跟踪模型谱系

您可以使用模型跟踪功能来获取有关训练作业的谱系以及用于它们的模型资源的信息,包括数据集、算法、超参数和指标。例如,如果您发现托管模型的性能已下降,您可以查看其训练作业和所用资源来确定导致此问题的原因。

跟踪模型谱系(控制台)

跟踪模型的谱系(控制台)

  1. 打开 Amazon SageMaker 控制台

  2. 在导航窗格中,选择终端节点,然后选择相关的终端节点。

  3. 滚动到 Endpoint configuration settings (终端节点配置设置) 部分。本节列出了在终端节点上部署的所有模型版本,以及指向创建每个模型版本的训练作业的超链接。

跟踪模型谱系 (API)

要跟踪模型的谱系,请获取模型的名称,然后使用它搜索训练作业。

以下示例说明如何使用 API 跟踪模型的谱系。

# Get the name of model deployed at endpoint endpoint_config = smclient.describe_endpoint_config(EndpointConfigName=endpointName) model_name = endpoint_config['ProductionVariants'][0]['ModelName'] # Get the model's name model = smclient.describe_model(ModelName=model_name) # Search the training job by the location of model artifacts in Amazon S3 search_params={ "MaxResults": 1, "Resource": "TrainingJob", "SearchExpression": { "Filters": [ { "Name": "ModelArtifacts.S3ModelArtifacts", "Operator": "Equals", "Value": model['PrimaryContainer']['ModelDataUrl'] }]}, } results = smclient.search(**search_params)

查找训练作业后,您可以查看用于训练模型的资源。