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

Amazon SageMaker Experiments 集成

Amazon SageMaker 建模管线与 Amazon SageMaker Experiments 紧密集成。默认情况下,当 SageMaker Pipelines 创建和执行管道时,会创建以下 SageMaker Experiments 实体(如果它们不存在):

  • 管道的实验

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

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

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

以下示例显示了 Amazon SageMaker Python SDK管道类的相关参数。

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

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

注意

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

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

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

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

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

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

注意

删除创建了实验实体的管道时,不会删除这些实体。可以使用 SageMaker Experiments API 删除实体。有关更多信息,请参阅 清理 Amazon SageMaker 实验资源

有关如何查看与管道关联的 SageMaker 实验实体的信息,请参阅查看 SageMaker Pipelines 创建的实验实体。有关 SageMaker Experiments 的更多信息,请参阅使用 Amazon SageMaker Experiments 管理机器学习

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

默认行为

创建管道

省略了 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": [...] }