本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
執行管道
將管道的步驟定義為導向非循環圖 (DAG) 之後,您可以執行管道,執行 中定義的步驟DAG。下列逐步解說說明如何使用 Amazon SageMaker Studio 或 drag-and-drop Amazon SageMaker Python 中的視覺化編輯器執行 Amazon SageMaker 管道SDK。
若要啟動管道的新執行,請執行下列動作:
使用 SageMaker Python 建立管道定義之後SDK,您可以將其提交至 SageMaker 以開始執行。下列教學課程展示如何提交管道、開始執行、檢查執行的結果,以及刪除管道。
必要條件
本教學課程要求如下:
-
SageMaker 筆記本執行個體。
-
管道管道定義。本教學課程假設您使用的完成定義管道教學課程後建立的管道定義。
第 1 步:啟動管道
首先,您需要啟動管道。
啟動管道
-
檢查JSON管道定義,以確保其格式良好。
import json json.loads(pipeline.definition())
-
將管道定義提交至管道服務,以在管道不存在時建立管道,或更新管道。管道會使用傳入的角色來建立步驟中定義的所有任務。
pipeline.upsert(role_arn=role)
-
啟動管道執行。
execution = pipeline.start()
第 2 步:檢查管道執行
接下來,您需要檢查管道的執行情況。
檢查管道執行
-
描述管道執行狀態,以確保已成功建立和啟動管道。
execution.describe()
-
等候執行完成。
execution.wait()
-
列出執行步驟及狀態。
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'}}}]
-
管道執行完成後,從 Amazon S3 下載產生的
evaluation.json
檔案以檢查報告。evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)
第 3 步:取代管道執行的預設參數
您可以透過指定不同的管道參數來覆寫預設值,來啟動管道的額外執行。
覆寫預設參數
-
建立管道執行。這會在模型批准狀態覆寫設為 “已批准” 的情況下啟動另一個管道執行。這表示
RegisterModel
步驟產生的模型套件版本會自動準備好透過 CI/CD 管道進行部署,例如使用 SageMaker Projects。如需詳細資訊,請參閱MLOps 使用 SageMaker 專案自動化。execution = pipeline.start( parameters=dict( ModelApprovalStatus="Approved", ) )
-
等候執行完成。
execution.wait()
-
列出執行步驟及狀態。
execution.list_steps()
-
管道執行完成後,從 Amazon S3 下載產生的
evaluation.json
檔案以檢查報告。evaluation_json = sagemaker.s3.S3Downloader.read_file("{}/evaluation.json".format( step_eval.arguments["ProcessingOutputConfig"]["Outputs"][0]["S3Output"]["S3Uri"] )) json.loads(evaluation_json)
第 4 步:停止並刪除管道執行
管道完成後,您可以停止任何正在進行的執行並刪除管道。
停止和刪除管道執行
-
停止管道執行。
execution.stop()
-
刪除管道。
pipeline.delete()