執行管道 - Amazon SageMaker

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

執行管道

將管道的步驟定義為導向非循環圖 (DAG) 之後,您可以執行管道,執行 中定義的步驟DAG。下列逐步解說說明如何使用 Amazon SageMaker Studio 或 drag-and-drop Amazon SageMaker Python 中的視覺化編輯器執行 Amazon SageMaker 管道SDK。

若要啟動管道的新執行,請執行下列動作:

Studio
  1. 按照啟動 Amazon SageMaker Studio 中的說明開啟 Studio。 SageMaker

  2. 在左側導覽窗格中,選取管道

  3. (選用) 若要依名稱篩選管道清單,請在搜尋欄位中輸入完整或部分管道名稱。

  4. 選取管道名稱。

  5. 選擇執行索引標籤。

  6. 輸入或更新下列必填資訊:

    • 名稱 – 您 AWS 區域中帳戶的唯一名稱。

    • 描述 – 執行的選用描述。

    • ProcessingInstanceType – 用於處理任務的 Amazon EC2執行個體類型。

    • TrainingInstanceType – 用於訓練任務的 Amazon EC2執行個體類型

    • InputData – URI輸入資料的 Amazon S3。

    • PreprocessScript – Amazon S3 URI 至預先處理指令碼。

    • EvaluateScript – 模型評估指令碼的 URI Amazon S3。

    • AccuracyConditionThreshold – 將模型註冊到登錄檔時,要達到的模型準確度閾值。

    • ModelGroup – 要註冊模型的登錄檔。

    • MaximumParallelTrainingJobs – 平行執行的訓練任務數目上限。

    • MaximumTrainingJobs – 要執行的訓練任務數目上限。

  7. 選擇 Create (建立)。

注意

如果您的管道失敗,狀態橫幅會顯示失敗狀態。對失敗步驟進行故障診斷後,請在狀態橫幅上選擇重試,以從該步驟繼續執行管道。

Studio Classic
  1. 登入 Amazon SageMaker Studio Classic。如需詳細資訊,請參閱啟動 Amazon SageMaker Studio Classic

  2. 在 Studio Classic 側邊欄中,選擇首頁圖示 ( Black square icon representing a placeholder or empty image. )。

  3. 從功能表中選取 管道

  4. 若要依名稱縮小管道清單,請在搜尋欄位中輸入完整或部分管道名稱。

  5. 選取管道名稱。

  6. 從執行清單的執行圖表標籤中,選擇建立執行

  7. 輸入或更新下列必填資訊:

    • 名稱 – 在 AWS 區域中,此名稱必須是您的帳戶獨有的。

    • ProcessingInstanceCount – 用於處理的執行個體數目。

    • ModelApprovalStatus – 為了您的方便。

    • InputDataUrl – URI輸入資料的 Amazon S3。

  8. 選擇 開始使用

管道執行後,您可以選擇狀態橫幅上的檢視詳細資訊,以檢視執行的詳細資訊

若要停止執行,請在狀態橫幅上選擇停止。若要從停止的位置繼續執行,請在狀態橫幅上選擇繼續

注意

如果您的管道失敗,狀態橫幅會顯示失敗狀態。對失敗步驟進行故障診斷後,請在狀態橫幅上選擇重試,以從該步驟繼續執行管道。

使用 SageMaker Python 建立管道定義之後SDK,您可以將其提交至 SageMaker 以開始執行。下列教學課程展示如何提交管道、開始執行、檢查執行的結果,以及刪除管道。

必要條件

本教學課程要求如下:

  • SageMaker 筆記本執行個體。 

  • 管道管道定義。本教學課程假設您使用的完成定義管道教學課程後建立的管道定義。

第 1 步:啟動管道

首先,您需要啟動管道。

啟動管道
  1. 檢查JSON管道定義,以確保其格式良好。

    import json json.loads(pipeline.definition())
  2. 將管道定義提交至管道服務,以在管道不存在時建立管道,或更新管道。管道會使用傳入的角色來建立步驟中定義的所有任務。

    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. 管道執行完成後,從 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 步:取代管道執行的預設參數

您可以透過指定不同的管道參數來覆寫預設值,來啟動管道的額外執行。

覆寫預設參數
  1. 建立管道執行。這會在模型批准狀態覆寫設為 “已批准” 的情況下啟動另一個管道執行。這表示 RegisterModel 步驟產生的模型套件版本會自動準備好透過 CI/CD 管道進行部署,例如使用 SageMaker Projects。如需詳細資訊,請參閱MLOps 使用 SageMaker 專案自動化

    execution = pipeline.start( parameters=dict( ModelApprovalStatus="Approved", ) )
  2. 等候執行完成。

    execution.wait()
  3. 列出執行步驟及狀態。

    execution.list_steps()
  4. 管道執行完成後,從 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 步:停止並刪除管道執行

管道完成後,您可以停止任何正在進行的執行並刪除管道。

停止和刪除管道執行
  1. 停止管道執行。

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

    pipeline.delete()