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_config
的 ExperimentName
和 TrialName
参数指定的内容,应用以下命名规则:
-
如果不指定
ExperimentName
,则将管道name
用作实验名称。如果指定
ExperimentName
,则将其用作实验名称。如果存在具有该名称的实验,则管道创建的运行组将添加到现有实验中。如果不存在具有该名称的实验,则会创建一个新的实验。 -
如果不指定
TrialName
,则将管道执行 ID 用作运行组名称。如果指定
TrialName
,则将其用作运行组名称。如果存在具有该名称的运行组,则管道创建的运行将添加到现有的运行组中。如果不存在具有该名称的运行组,则会创建一个新的运行组。
注意
删除创建了实验实体的管道时,不会删除这些实体。可以使用 SageMaker Experiments API 删除实体。有关更多信息,请参阅 清理 Amazon SageMaker 实验资源。
有关如何查看与管道关联的 SageMaker 实验实体的信息,请参阅查看 SageMaker Pipelines 创建的实验实体。有关 SageMaker Experiments 的更多信息,请参阅使用 Amazon SageMaker Experiments 管理机器学习。
下面几节将展示上述规则的示例,以及如何在管道定义文件中表示这些规则。有关管道定义文件的更多信息,请参阅 SageMaker Pipelines 概述。
默认行为
创建管道
省略了 pipeline_experiment_config
。ExperimentName
默认为管道 name
。TrialName
默认为执行 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": [...] }