LCC スクリプトを使用した SageMaker ノートブックインスタンスのカスタマイズ - Amazon SageMaker AI

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

LCC スクリプトを使用した SageMaker ノートブックインスタンスのカスタマイズ

重要

Amazon SageMaker Studio または Amazon SageMaker Studio Classic に Amazon SageMaker リソースの作成を許可するカスタム IAM ポリシーでは、これらのリソースにタグを追加するアクセス許可も付与する必要があります。Studio と Studio Classic は、作成したリソースに自動的にタグ付けするため、リソースにタグを追加するアクセス許可が必要になります。IAM ポリシーで Studio と Studio Classic によるリソースの作成が許可されていても、タグ付けが許可されていない場合は、リソースを作成しようとしたときに「AccessDenied」エラーが発生する可能性があります。詳細については、「SageMaker AI リソースにタグ付けするためのアクセス許可を提供する」を参照してください。

SageMaker リソースを作成するためのアクセス許可を付与する AWS Amazon SageMaker AI の マネージドポリシー には、それらのリソースの作成中にタグを追加するためのアクセス許可もあらかじめ含まれています。

ノートブックインスタンスの作成時または起動時にのみ実行されるシェルスクリプトは、ライフサイクル設定 (LCC) で提供されます。ノートブックインスタンスを作成するときは、新しい LCC を作成するか、既に保持している LCC をアタッチできます。ライフサイクル設定スクリプトは、次のユースケースに役立ちます。

  • ノートブックインスタンスへのパッケージまたはサンプルノートブックをインストールする

  • ノートブックインスタンスのネットワークとセキュリティを設定する

  • シェルスクリプトを使用してノートブックインスタンスをカスタマイズする

ライフサイクル設定スクリプトを使用して、ノートブックから AWS サービスにアクセスすることもできます。例えば、ノートブックを使用して Amazon EMR インスタンスなどの他の AWS リソースを制御できるスクリプトを作成できます。

ノートブックインスタンスをカスタマイズするための一般的なユースケースに対応するノートブックライフサイクル設定スクリプトのパブリックリポジトリは、https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples に保持されています。

注記

各スクリプトの長さは 16384 文字に制限されています。

両方のスクリプトで使用できる $PATH 環境変数の値は /usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin です。$PWD 環境変数の値である作業ディレクトリは、/ です。

ログストリーム [notebook-instance-name]/[LifecycleConfigHook] の、ロググループ /aws/sagemaker/NotebookInstances の、ノートブックインスタンスのライフサイクル設定の CloudWatch ログの表示。

スクリプトは 5 分以上実行できません。スクリプトが 5 分以上実行されると、スクリプトは失敗し、ノートブックインスタンスは作成または開始されません。スクリプトの実行時間を短縮できるように、次のことを試してください。

  • 必要なステップを削減します。例えば、大きなパッケージをインストールする Conda 環境を制限します。

  • 並列プロセスでタスクを実行します。

  • スクリプトで nohup コマンドを使用します。

SageMaker AI コンソールでライフサイクル設定を選択すると、以前に作成したノートブックインスタンスのライフサイクル設定のリストが表示されます。ノートブックインスタンス LCC は、新しいノートブックインスタンスを作成する際にアタッチできます。ノートブックインスタンスの作成の詳細については、「Amazon SageMaker ノートブックインスタンスを作成する」を参照してください。

ライフサイクル設定のベストプラクティス

以下は、ライフサイクル設定の使用に関するベストプラクティスです。

重要

ライフサイクル設定スクリプトに機密情報を保存することはお勧めしません。

  • ライフサイクル設定は、root ユーザーとして実行されます。スクリプトが /home/ec2-user/SageMaker ディレクトリ内で何らかの変更を行う場合 (例えば、pip を使用してパッケージをインストールする場合) は、ec2-user ユーザーとして sudo -u ec2-user コマンドを実行します。これは Amazon SageMaker AI が実行するのと同じユーザーです。

  • SageMaker AI ノートブックインスタンスは、conda環境を使用して Jupyter Notebook に異なるカーネルを実装します。1 つ以上のノートブックカーネルで使用可能なパッケージをインストールするには、インストールするパッケージのカーネルを含む conda 環境をアクティブにする conda 環境コマンドで、パッケージをインストールするためのコマンドを囲みます。

    例えば、python3 環境にのみパッケージをインストールする場合は、次のコードを使用します。

    #!/bin/bash sudo -u ec2-user -i <<EOF # This will affect only the Jupyter kernel called "conda_python3". source activate python3 # Replace myPackage with the name of the package you want to install. pip install myPackage # You can also perform "conda install" here as well. source deactivate EOF

    ノートブックインスタンス内のすべての conda 環境にパッケージをインストールする場合は、次のコードを使用します。

    #!/bin/bash sudo -u ec2-user -i <<EOF # Note that "base" is special environment name, include it there as well. for env in base /home/ec2-user/anaconda3/envs/*; do source /home/ec2-user/anaconda3/bin/activate $(basename "$env") # Installing packages in the Jupyter system environment can affect stability of your SageMaker # Notebook Instance. You can remove this check if you'd like to install Jupyter extensions, etc. if [ $env = 'JupyterSystemEnv' ]; then continue fi # Replace myPackage with the name of the package you want to install. pip install --upgrade --quiet myPackage # You can also perform "conda install" here as well. source /home/ec2-user/anaconda3/bin/deactivate done EOF
  • すべての conda 環境は、デフォルトの環境フォルダ (/home/user/anaconda3/envs) に保存する必要があります。

重要

スクリプトを作成または変更するときは、ノートブックの作成時にコンソールで使用できるテキストエディタなど、Unix スタイルの改行を提供するテキストエディタを使用することをお勧めします。Linux 以外のオペレーティングシステムからテキストをコピーすると、互換性のない改行が含まれ、予期しないエラーが発生する可能性があります。