亚马逊 SageMaker 实验集成 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

亚马逊 SageMaker 实验集成

亚马逊 SageMaker 模型构建管道与亚马逊 SageMaker 实验紧密集成。默认情况下,当 SageMaker Pipelines 创建并执行管道时,如果不存在,则会创建以下 SageMaker 实验实体:

  • 管道的实验

  • 每次执行管道时的运行组

  • 为在管道执行步骤中创建的每个 SageMaker 作业添加到运行组的运行

您可以比较多个管道执行中的模型训练准确性等指标,就像在 SageMaker 模型训练实验的多个运行组中比较此类指标一样。

以下示例显示了 Amaz SageMaker on Python 软件开发工具包中 Pip elin e 类的相关参数。

Pipeline( name="MyPipeline", parameters=[...], pipeline_experiment_config=PipelineExperimentConfig( ExecutionVariables.PIPELINE_NAME, ExecutionVariables.PIPELINE_EXECUTION_ID ), steps=[...] )

如果您不想为管道创建实验和运行组,则将 pipeline_experiment_config 设置为 None

注意

Amaz SageMaker on Python SDK v2.41.0 中引入了实验集成。

根据为 pipeline_experiment_configExperimentNameTrialName 参数指定的内容,应用以下命名规则:

  • 如果不指定 ExperimentName,则将管道 name 用作实验名称。

    如果指定 ExperimentName,则将其用作实验名称。如果存在具有该名称的实验,则管道创建的运行组将添加到现有实验中。如果不存在具有该名称的实验,则会创建一个新的实验。

  • 如果不指定 TrialName,则将管道执行 ID 用作运行组名称。

    如果指定 TrialName,则将其用作运行组名称。如果存在具有该名称的运行组,则管道创建的运行将添加到现有的运行组中。如果不存在具有该名称的运行组,则会创建一个新的运行组。

注意

删除创建了实验实体的管道时,不会删除这些实体。您可以使用 SageMaker 实验 API 来删除实体。

有关如何查看与管道关联的 SageMaker 实验实体的信息,请参阅查看 SageMaker 管道创建的实验实体。有关 SageMaker 实验的更多信息,请参阅在 Studio 经典版中管理亚马逊 SageMaker 实验

下面几节将展示上述规则的示例,以及如何在管道定义文件中表示这些规则。有关管道定义文件的更多信息,请参阅 SageMaker 管道概述

默认行为

创建管道

省略了 pipeline_experiment_configExperimentName 默认为管道 nameTrialName 默认为执行 ID。

pipeline_name = f"MyPipeline" pipeline = Pipeline( name=pipeline_name, parameters=[...], steps=[step_train] )

管道定义文件

{ "Version": "2020-12-01", "Parameters": [ { "Name": "InputDataSource" }, { "Name": "InstanceCount", "Type": "Integer", "DefaultValue": 1 } ], "PipelineExperimentConfig": { "ExperimentName": {"Get": "Execution.PipelineName"}, "TrialName": {"Get": "Execution.PipelineExecutionId"} }, "Steps": [...] }

禁用实验集成

创建管道

pipeline_experiment_config 设置为 None

pipeline_name = f"MyPipeline" pipeline = Pipeline( name=pipeline_name, parameters=[...], pipeline_experiment_config=None, steps=[step_train] )

管道定义文件

这与前面的默认示例相同,但没有 PipelineExperimentConfig

指定自定义实验名称

使用了自定义实验名称。与默认行为一样,运行组名称设置为执行 ID。

创建管道

pipeline_name = f"MyPipeline" pipeline = Pipeline( name=pipeline_name, parameters=[...], pipeline_experiment_config=PipelineExperimentConfig( "CustomExperimentName", ExecutionVariables.PIPELINE_EXECUTION_ID ), steps=[step_train] )

管道定义文件

{ ..., "PipelineExperimentConfig": { "ExperimentName": "CustomExperimentName", "TrialName": {"Get": "Execution.PipelineExecutionId"} }, "Steps": [...] }

指定自定义运行组名称

使用了自定义运行组名称并附加了执行 ID。与默认行为一样,实验名称设置为管道名称。

创建管道

pipeline_name = f"MyPipeline" pipeline = Pipeline( name=pipeline_name, parameters=[...], pipeline_experiment_config=PipelineExperimentConfig( ExecutionVariables.PIPELINE_NAME, Join(on="-", values=["CustomTrialName", ExecutionVariables.PIPELINE_EXECUTION_ID]) ), steps=[step_train] )

管道定义文件

{ ..., "PipelineExperimentConfig": { "ExperimentName": {"Get": "Execution.PipelineName"}, "TrialName": { "On": "-", "Values": [ "CustomTrialName", {"Get": "Execution.PipelineExecutionId"} ] } }, "Steps": [...] }