SageMaker Python SDK を使用してノートブックジョブを作成する - Amazon SageMaker

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

SageMaker Python SDK を使用してノートブックジョブを作成する

SageMaker Python SDK を使用してスタンドアロンノートブックを実行するには、ノートブックJob ステップを作成してパイプラインにアタッチし、 SageMaker パイプラインが提供するユーティリティを使用してジョブをオンデマンドで実行するか、オプションで 1 つ以上のfuture ジョブをスケジュールする必要があります。

以下のセクションでは、オンデマンドまたはスケジュールされたノートブックジョブを作成し、実行状況を追跡するための基本的な手順について説明します。また、ノートブックジョブにパラメータを渡す必要がある場合や、ノートブックで Amazon EMR に接続する必要がある場合は、以下の説明を参照してください。このような場合は、Jupyter ノートブックをさらに準備する必要があります。NotebookJobStepの引数のサブセットにデフォルトを適用することもできるので、ノートブックJob ステップを作成するたびにそれらを指定する必要がありません。

SageMakerPython SDK を使用してノートブックジョブをスケジュールする方法を示すサンプルノートブックを表示するには、「ノートブックジョブのサンプルノートブック」を参照してください。

ノートブックジョブの作成手順

すぐに実行されるノートブックジョブを作成することも、スケジュールに従って実行することもできます。以下の説明では、両方の方法について説明します。

ノートブックジョブをスケジュールするには、以下の基本ステップを完了してください。
  1. NotebookJobStep インスタンスを作成します。NotebookJobStepパラメーターの詳細については、sagemaker.workflow.steps を参照してください。 NotebookJobStep。少なくとも、以下のコードスニペットに示すように、以下の引数を指定できます。

    重要

    SageMaker Python SDK を使用してノートブックジョブをスケジュールする場合、ノートブックジョブを実行する特定のイメージのみを指定できます。詳細については、「 SageMakerPython SDK ノートブックジョブのイメージ制約」を参照してください。

    notebook_job_step = NotebookJobStep( input_notebook=input-notebook, image_uri=image-uri, kernel_name=kernel-name )
  2. 次のスニペットに示すように、1 つのステップでパイプラインを作成します。NotebookJobStep

    pipeline = Pipeline( name=pipeline-name, steps=[notebook_job_step], sagemaker_session=sagemaker-session, )
  3. パイプラインをオンデマンドで実行するか、オプションでfuture パイプライン実行をスケジュールします。即時実行を開始するには、以下のコマンドを使用します。

    execution = pipeline.start( parameters={...} )

    オプションで、future の 1 回のパイプライン実行をスケジュールすることも、あらかじめ決められた間隔で複数の実行をスケジュールすることもできます。PipelineScheduleでスケジュールを指定し、put_triggersを使用してスケジュールオブジェクトをパイプラインに渡します。パイプラインのスケジューリングについて詳しくは、を参照してください SageMaker Python SDK を使用してパイプラインをスケジュールする

    次の例では、2023 年 12 月 12 日 10:31:32 UTC にパイプラインを 1 回実行するようにスケジュールしています。

    my_schedule = PipelineSchedule( name="my-schedule“, at=datetime(year=2023, month=12, date=25, hour=10, minute=31, second=32) ) pipeline.put_triggers(triggers=[my_schedule])

    次の例では、2022 ~ 2023 年の各月の最終金曜日の午前 10 時 15 分 (UTC) にパイプラインが実行されるようにスケジュールしています。cron ベースのスケジューリングについて詳しくは、「CRON ベースのスケジュール」を参照してください。

    my_schedule = PipelineSchedule( name="my-schedule“, cron="15 10 ? * 6L 2022-2023" ) pipeline.put_triggers(triggers=[my_schedule])
  4. (オプション) ノートブックジョブダッシュボードでノートブックジョブを表示します。 SageMaker tagsノートブックジョブステップの引数に指定する値によって、Studio UI がジョブをキャプチャして表示する方法が制御されます。詳細については、「Studio UI ダッシュボードでノートブックジョブを表示します。」を参照してください。

Studio UI ダッシュボードでノートブックジョブを表示します。

パイプラインステップとして作成したノートブックジョブは、特定のタグを指定すると Studio Notebook Job ダッシュボードに表示されます。

注記

Studio JupyterLab またはローカル環境で作成されたノートブックジョブのみがジョブ定義を作成します。したがって、 SageMaker Python SDK を使用してノートブックジョブを作成した場合、ノートブックジョブダッシュボードにジョブ定義は表示されません。ただし、で説明されているように、ノートブックジョブは表示できますノートブックジョブを表示

以下のタグを使用して、どのチームメンバーがノートブックジョブを閲覧できるかを制御できます。

ダッシュボードにジョブを表示するために必要なタグを設定したら、ノートブックジョブを表示ジョブの表示方法や出力のダウンロード方法については、を参照してください。

Studio でパイプライングラフを表示します。

ノートブックジョブステップはパイプラインの一部であるため、Studio でパイプライングラフ (DAG) を表示できます。パイプライングラフでは、パイプライン実行のステータスを確認したり、系統を追跡したりできます。詳細については、「パイプラインの実行を表示する」を参照してください。

ノートブックにパラメーターを渡します。

ノートブックジョブに (parametersの引数を使用してNotebookJobStep) パラメーターを渡す場合は、パラメーターを受け取れるように入力ノートブックを準備する必要があります。

PaperMill ベースのノートブックジョブエグゼキューターは、タグが付けられた Jupyter セルを検索し、parametersこのセルの直後に新しいパラメーターまたはパラメーターオーバーライドを適用します。詳細については、「ノートブックをパラメータ化する」を参照してください。

このステップを実行したら、次の例のようにパラメータをに渡します。NotebookJobStep

notebook_job_parameters = { "company": "Amazon" } notebook_job_step = NotebookJobStep( image_uri=image-uri, kernel_name=kernel-name, role=role-name, input_notebook=input-notebook, parameters=notebook_job_parameters, ... )

入力ノートブックの Amazon EMR クラスターへの接続

Studio の Jupyter ノートブックから Amazon EMR クラスターに接続する場合、Jupyter ノートブックをさらに変更する必要がある場合があります。ノートブックから Amazon EMR クラスターConnect するノートブックで以下のタスクのいずれかを実行する必要があるかどうかを確認してください。

  • Amazon EMR 接続コマンドにパラメータを渡します。Studio では Papermill を使用してノートブックを実行します。 SparkMagicカーネルでは、Papermill が情報を渡す方法が原因で、Amazon EMR 接続コマンドに渡すパラメータが期待どおりに動作しない場合があります。 SparkMagic

  • Kerberos、LDAP、または HTTP ベーシック認証を受けた Amazon EMR クラスターにユーザー認証情報を渡します。ユーザー認証情報はを介して渡す必要があります。 AWS Secrets Manager

デフォルトオプションを設定します。

SageMaker SDK にはパラメータのサブセットにデフォルトを設定するオプションが用意されているため、NotebookJobStepインスタンスを作成するたびにこれらのパラメータを指定する必要がありません。これらのパラメータはrole、、s3_root_uris3_kms_keyvolume_kms_keysubnetssecurity_group_idsおよびです。 SageMaker 設定ファイルを使用して、ステップのデフォルトを設定します。 SageMaker 設定ファイルについて詳しくは、「 SageMaker Python SDK でのデフォルトの設定と使用」を参照してください。

ノートブックジョブのデフォルトを設定するには、次のスニペットに示すように、設定ファイルのノートブックジョブセクションに新しいデフォルトを適用します。

SageMaker: PythonSDK: Modules: NotebookJob: RoleArn: 'arn:aws:iam::555555555555:role/IMRole' S3RootUri: 's3://my-bucket/my-project' S3KmsKeyId: 's3kmskeyid' VolumeKmsKeyId: 'volumekmskeyid1' VpcConfig: SecurityGroupIds: - 'sg123' Subnets: - 'subnet-1234'