

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

# パイプラインを実行する
<a name="run-pipeline"></a>

パイプラインのステップを有向非巡回グラフ (DAG) として定義した後、パイプラインを実行して、DAG で定義したステップを実行できます。次のウォークスルーでは、Amazon SageMaker Studio のドラッグアンドドロップビジュアルエディタまたは Amazon SageMaker Python SDK を使用して、Amazon SageMaker AI パイプラインを実行する方法を説明します。

## パイプラインを実行する (Pipeline デザイナー)
<a name="run-pipeline-designer"></a>

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

------
#### [ Studio ]

1. 「[Launch Amazon SageMaker Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-launch.html)」の手順に従って、SageMaker Studio を開きます。

1. 左のナビゲーションペインの [**パイプライン**] を選択します。

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

1. パイプラインを選択して、パイプラインの詳細ビューを開きます。

1. 右上の **[ビジュアルエディタ]** を選択します。

1. 最新バージョンから実行を開始するには、**[実行]** をクリックします。

1. 特定のバージョンから実行を開始するには、次の手順に従います。
   + 下部のツールバーのバージョンアイコンをクリックして、バージョンパネルを開きます。
   + 実行するパイプラインのバージョンを選択します。
   + バージョン項目にカーソルを合わせると、スリードットメニューが表示されます。**[実行]** を選択します。
   + (オプション) パイプラインの以前のバージョンを表示するには、バージョンパネルのスリードットメニューから**[プレビュー]** を選択します。通知バーで **[編集]** をクリックしてバージョンを編集することもできます。

**注記**  
パイプラインが正常に完了しない場合、ステータスバナーに **[失敗]** ステータスが表示されます。失敗したステップをトラブルシューティングして、ステータスバナーの **[Retry]** (再試行) を選択し、パイプラインの実行を失敗したステップから再開します。

------
#### [ Studio Classic ]

1. Amazon SageMaker Studio Classic にサインインします。詳細については、「[Launch Amazon SageMaker Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-launch.html)」を参照してください。

1. Studio Classic サイドバーで、**[ホーム]** アイコン ( ![](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/studio/icons/house.png)) をクリックします。

1. メニューから **[パイプライン]** を選択します。

1. (オプション) パイプラインのリストを名前で絞り込むには、検索フィールドにパイプライン名全体または一部を入力します。

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

1. 実行リストの **[実行]** または **[グラフ]** タブで、**[実行の作成]** を選択します。

1. 以下の必須情報を入力または更新します。
   + **Name** (名前) - AWS リージョンのアカウントに固有のものである必要があります。
   + **ProcessingInstanceCount** - 処理に使用するインスタンスの数。
   + **ModelApprovalStatus** - 参考情報。
   + **InputDataUrl** – 入力データの Amazon S3 URI

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

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

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

**注記**  
パイプラインが正常に完了しない場合、ステータスバナーに **[失敗]** ステータスが表示されます。失敗したステップをトラブルシューティングして、ステータスバナーの **[Retry]** (再試行) を選択し、パイプラインの実行を失敗したステップから再開します。

------

## パイプラインを実行する (SageMaker Python SDK)
<a name="run-pipeline-sdk"></a>

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

**Topics**
+ [前提条件](#run-pipeline-prereq)
+ [ステップ 1: パイプラインを開始する](#run-pipeline-submit)
+ [ステップ 2: パイプラインの実行を確認する](#run-pipeline-examine)
+ [ステップ 3: パイプラインの実行のデフォルトパラメータをオーバーライドする](#run-pipeline-parametrized)
+ [ステップ 4: パイプラインの実行を停止して削除する](#run-pipeline-delete)

### 前提条件
<a name="run-pipeline-prereq"></a>

このチュートリアルでは、以下が必要です。
+  SageMaker ノートブックインスタンス。  
+  Pipelines パイプライン定義。このチュートリアルは、「[パイプラインを定義する](define-pipeline.md)」チュートリアルを実行して作成したパイプライン定義を使用することを前提としています。

### ステップ 1: パイプラインを開始する
<a name="run-pipeline-submit"></a>

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

**パイプラインを開始するには**

1. JSON パイプラインの定義を調べて、フォーマットに誤りがないことを確認します。

   ```
   import json
   
   json.loads(pipeline.definition())
   ```

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

   ```
   pipeline.upsert(role_arn=role)
   ```

1. パイプラインの実行を開始します。

   ```
   execution = pipeline.start()
   ```

### ステップ 2: パイプラインの実行を確認する
<a name="run-pipeline-examine"></a>

次に、パイプラインの実行を確認する必要があります。

**パイプラインの実行を確認するには**

1.  パイプラインの実行ステータスを書き留め、パイプラインが正常に作成され、開始されたことを確認します。

   ```
   execution.describe()
   ```

1. 実行が終了するまで待ちます。

   ```
   execution.wait()
   ```

1. 実行ステップとそのステータスをリストします。

   ```
   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'}}}]
   ```

1. パイプラインの実行が完了したら、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: パイプラインの実行のデフォルトパラメータをオーバーライドする
<a name="run-pipeline-parametrized"></a>

異なるパイプラインパラメータを指定して追加のパイプラインの実行を動作させると、デフォルトをオーバーライドできます。

**デフォルトパラメータをオーバーライドするには**

1. パイプラインの実行を作成します。これにより、モデル承認ステータスのオーバーライドが「承認済み」に設定された状態で別のパイプライン実行が開始されます。つまり、SageMaker プロジェクトなどの CI/CD パイプラインを通じて、`RegisterModel` ステップで生成されたモデルパッケージバージョンを自動的にデプロイする準備が整います。詳細については、「[SageMaker プロジェクトを使用した MLOps の自動化](sagemaker-projects.md)」を参照してください。

   ```
   execution = pipeline.start(
       parameters=dict(
           ModelApprovalStatus="Approved",
       )
   )
   ```

1. 実行が終了するまで待ちます。

   ```
   execution.wait()
   ```

1. 実行ステップとそのステータスをリストします。

   ```
   execution.list_steps()
   ```

1. パイプラインの実行が完了したら、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: パイプラインの実行を停止して削除する
<a name="run-pipeline-delete"></a>

パイプラインの処理が終了したら、継続中の実行を停止し、パイプラインを削除できます。

**パイプラインの実行を停止して削除するには**

1. パイプラインの実行を停止します。

   ```
   execution.stop()
   ```

1. パイプラインを削除します。

   ```
   pipeline.delete()
   ```