パイプラインを実行する - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

パイプラインを実行する

パイプラインのステップを指向非循環グラフ (DAG) として定義した後、パイプラインを実行して、 で定義されたステップを実行できますDAG。次のチュートリアルでは、Amazon SageMaker Studio のビジュアルエディタまたは Amazon SageMaker Python を使用して drag-and-drop Amazon SageMaker パイプラインを実行する方法を示しますSDK。

パイプラインの新しい実行を開始するには、以下を実行します。

Studio
  1. Amazon SageMaker Studio を起動 の手順に従って SageMaker Studio を開きます。

  2. 左側のナビゲーションペインで、パイプライン を選択します。

  3. (オプション) パイプラインのリストを名前でフィルタリングするには、検索フィールドにパイプライン名の全部または一部を入力します。

  4. パイプライン名を選択します。

  5. Executions タブを選択します。

  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] (作成) を選択します。

注記

パイプラインが失敗すると、ステータスバナーに失敗ステータスが表示されます。失敗したステップをトラブルシューティングして、ステータスバナーの [Retry] (再試行) を選択し、パイプラインの実行を失敗したステップから再開します。

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. 以下の必須情報を入力または更新します。

    • Name (名前) - AWS リージョンのアカウントに固有のものである必要があります。

    • ProcessingInstanceCount – 処理に使用するインスタンスの数。

    • ModelApprovalStatus – ご参考までに。

    • InputDataUrl – URI入力データの Amazon S3。

  8. [開始] を選択します。

パイプラインが実行されたら、ステータスバナーで詳細を表示を選択して、実行の詳細を表示できます。

実行を停止するには、ステータスバナーで停止を選択します。停止した時点から実行を再開する場合は、ステータスバナーの [Resume] (再開) を選択します。

注記

パイプラインが失敗すると、ステータスバナーに失敗ステータスが表示されます。失敗したステップをトラブルシューティングして、ステータスバナーの [Retry] (再試行) を選択し、パイプラインの実行を失敗したステップから再開します。

SageMaker Python を使用してパイプライン定義を作成したらSDK、 に送信 SageMaker して実行を開始できます。以下のチュートリアルでは、パイプラインの送信、実行の開始、その実行結果の確認、パイプラインの削除方法を説明します。

前提条件

このチュートリアルでは、以下が必要です。

  • SageMaker ノートブックインスタンス。 

  • Pipelines パイプライン定義。このチュートリアルは、「パイプラインを定義する」チュートリアルを実行して作成したパイプライン定義を使用することを前提としています。

ステップ 1: パイプラインを開始する

最初に、パイプラインを開始する必要があります。

パイプラインを開始するには
  1. JSON パイプライン定義を調べて、適切に形成されていることを確認します。

    import json json.loads(pipeline.definition())
  2. パイプライン定義を Pipelines サービスに送信してパイプラインが存在しない場合はパイプラインを作成するか、パイプラインが存在しない場合はパイプラインを更新します。渡されたロールは、パイプラインによってステップで定義されたすべてのジョブを作成するために使用されます。

    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ステップによって生成されたモデルパッケージバージョンは、 SageMaker Projects などの CI/CD パイプラインを介して自動的にデプロイできる状態になります。詳細については、「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()