运行管道 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

运行管道

使用创建管道定义后 SageMaker Python SDK,你可以将其提交到 SageMaker 开始执行。以下教程演示了如何提交管道、开始执行、检查该执行的结果以及删除管道。

先决条件

本教程要求以下项目:

  • 一个 SageMaker 笔记本实例。 

  • 一个 SageMaker 管道管道定义。本教程假定使用的是通过完成创建的管道定义。定义管道教程。

第 1 步:启动管道

首先,您需要启动管道。

启动管道

  1. 检查 JSON 管道定义以确保其格式良好。

    import json json.loads(pipeline.definition())
  2. 将管道定义提交到 SageMaker Pipeline 服务用于在管道不存在的情况下创建管道,或者如果存在,则更新管道。 传入的角色由 SageMaker 用于创建步骤中定义的所有作业的管道。

    pipeline.upsert(role_arn=role)
  3. 启动管道执行。

    execution = pipeline.start()

第 2 步:检查管道执行

接下来,你需要检查管道的执行情况。

检查管道执行

  1. 描述管道执行状态以确保管道已成功创建并启动。

    execution.describe()
  2. 请等待执行完成。

    execution.wait()
  3. 列出执行步骤及其状态。

    execution.list_steps()

    您的输出应与以下内容类似:

    [{'StepName': 'AbaloneTransform', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 870000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 45, 50, 492000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TransformJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:transform-job/pipelines-cfvy1tjuxdq8-abalonetransform-ptyjoef3jy'}}}, {'StepName': 'AbaloneRegisterModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 929000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 28, 15000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'RegisterModel': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model-package/abalonemodelpackagegroupname/1'}}}, {'StepName': 'AbaloneCreateModel', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 895000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 27, 708000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Model': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:model/pipelines-cfvy1tjuxdq8-abalonecreatemodel-jl94rai0ra'}}}, {'StepName': 'AbaloneMSECond', 'StartTime': datetime.datetime(2020, 11, 21, 2, 41, 25, 558000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 26, 329000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'Condition': {'Outcome': 'True'}}}, {'StepName': 'AbaloneEval', 'StartTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 767000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 41, 18, 80000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneeval-zfraozhmny'}}}, {'StepName': 'AbaloneTrain', 'StartTime': datetime.datetime(2020, 11, 21, 2, 34, 55, 867000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 37, 34, 34000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'TrainingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:training-job/pipelines-cfvy1tjuxdq8-abalonetrain-tavd6f3wdf'}}}, {'StepName': 'AbaloneProcess', 'StartTime': datetime.datetime(2020, 11, 21, 2, 30, 27, 160000, tzinfo=tzlocal()), 'EndTime': datetime.datetime(2020, 11, 21, 2, 34, 48, 390000, tzinfo=tzlocal()), 'StepStatus': 'Succeeded', 'CacheHitResult': {'SourcePipelineExecutionArn': ''}, 'Metadata': {'ProcessingJob': {'Arn': 'arn:aws:sagemaker:us-east-2:111122223333:processing-job/pipelines-cfvy1tjuxdq8-abaloneprocess-mgqyfdujcj'}}}]
  4. 管道执行完成后,下载结果evaluation.json从 Amazon S3 向其提供文件以检查报告。

    evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)

第 3 步:覆盖管道执行的默认参数

您可以通过指定不同的管道参数来覆盖默认值来运行管道的其他执行。

覆盖默认参数

  1. 创建管道执行。这将在计算优化的实例类型上启动另一个管道执行,并将模型批准状态设置为 “已批准”。这意味着由RegisterModelstep 已自动准备好通过 CI/CD 管道进行部署,例如 SageMaker 项目。有关更多信息,请参阅 使用实现自动化 mLOP SageMaker 项目

    execution = pipeline.start( parameters=dict( ProcessingInstanceType="ml.c5.xlarge", ModelApprovalStatus="Approved", ) )
  2. 请等待执行完成。

    execution.wait()
  3. 列出执行步骤及其状态。

    execution.list_steps()
  4. 管道执行完成后,下载结果evaluation.json从 Amazon S3 向其提供文件以检查报告。

    evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)

第 4 步:停止和删除管道执行

完成使用管道后,您可以停止任何正在进行的执行并删除管道。

停止和删除管道执行

  1. 停止管道执行。

    execution.stop()
  2. 删除管道。

    pipeline.delete()