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

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

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

重要

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

AWS Amazon のマネージドポリシー SageMaker SageMaker リソースを作成するアクセス許可を付与する には、これらのリソースの作成中にタグを追加するアクセス許可が既に含まれています。

ライフサイクル設定 (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 環境変数の値である作業ディレクトリは、/ です。

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

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

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

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

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

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

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

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

重要

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

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

  • SageMaker ノートブックインスタンスはconda、環境を使用して Jupyter ノートブックに異なるカーネルを実装します。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 以外のオペレーティングシステムからテキストをコピーすると、互換性のない改行が含まれ、予期しないエラーが発生する可能性があります。