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

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

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

SageMaker Python を使用してスタンドアロンノートブックを実行するにはSDK、ノートブックジョブステップを作成し、パイプラインにアタッチし、パイプラインが提供するユーティリティを使用してオンデマンドでジョブを実行するか、オプションで 1 つ以上の将来のジョブをスケジュールする必要があります。以下のセクションでは、オンデマンドまたはスケジュールされたノートブックジョブを作成し、実行を追跡する基本的な手順について説明します。さらに、ノートブックジョブにパラメータを渡すか、ノートブックEMRで Amazon に接続する必要がある場合は、次の説明を参照してください。このような場合は、Jupyter ノートブックの追加の準備が必要です。の引数のサブセットにデフォルトを適用NotebookJobStepして、ノートブックジョブステップを作成するたびにそれらを指定する必要がないようにすることもできます。

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

ノートブックジョブを作成する手順

ノートブックジョブは、すぐに実行するか、スケジュールに従って実行できます。以下の手順では、両方の方法を説明します。

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

    重要

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

    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. パイプラインをオンデマンドで実行するか、オプションで将来のパイプライン実行をスケジュールします。即時実行を開始するには、次のコマンドを使用します。

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

    オプションで、1 回の将来のパイプライン実行または複数の実行を事前定義された間隔でスケジュールできます。でスケジュールを指定しPipelineSchedule、 を使用してスケジュールオブジェクトをパイプラインに渡しますput_triggers。パイプラインスケジューリングの詳細については、「」を参照してください SageMaker Python を使用してパイプラインをスケジュールする SDK

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

    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 年の間、毎月UTCの最終金曜日の午前 10:15 にパイプラインを実行するようにスケジュールしています。cron ベースのスケジューリングの詳細については、「Cron ベースのスケジュール」を参照してください。

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

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

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

注記

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

次のタグを使用して、ノートブックジョブを表示できるチームメンバーを制御できます。

  • ドメイン内のすべてのユーザープロファイルまたはスペースにノートブックを表示するには、ドメイン名でドメインタグを追加します。例を以下に示します。

    • キー: sagemaker:domain-name、値: d-abcdefghij5k

  • ノートブックジョブをドメイン内の特定のユーザープロファイルに表示するには、ユーザープロファイルとドメインタグの両方を追加します。ユーザープロファイルタグの例を次に示します。

    • キー: sagemaker:user-profile-name、値: studio-user

  • ノートブックジョブをスペース に表示するには、スペースタグとドメインタグの両方を追加します。スペースタグの例を次に示します。

    • キー: sagemaker:shared-space-name、値: my-space-name

  • ドメイン、ユーザープロファイル、スペースタグをアタッチしない場合、Studio UI にはパイプラインステップによって作成されたノートブックジョブは表示されません。この場合、基礎となるトレーニングジョブをトレーニングジョブコンソールで表示することも、パイプライン実行のリストでステータスを表示することもできます。

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

Studio でパイプライングラフを表示する

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

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

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

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

このステップを実行したら、次の例に示すように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クラスターに接続するかどうかを確認します。

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

  • ユーザー認証情報を Kerberos、LDAP、または HTTP Basic Auth 認証 Amazon EMRクラスターに渡します。ユーザー認証情報を に渡す必要があります AWS Secrets Manager。

デフォルトのオプションを設定する

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

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

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