Amazon SageMaker AI ノートブックインスタンスに追加のライブラリをインストールしようとすると、タイムアウトエラーが発生します。
解決策
ライフサイクル設定スクリプトが 5 分を超えて実行されると、そのスクリプトは実行を完了できず、SageMaker AI はノートブックインスタンスを作成または起動しません。
次のいずれかの手順で、この問題を解決します。
nohup コマンドを実行する
一時的な解決策として、nohup コマンドを実行します。この方法では、パッケージをインストールするまで、ライフサイクル設定スクリプトはバックグラウンドで強制的に実行を継続します。
先頭に nohup、末尾にアンパサンド (&) を付けて次のコマンドを実行します。
#!/bin/bash
set -e
nohup pip install xgboost &
ライブラリのインストール後、スクリプトは実行を停止します。その際に、SageMaker AI は通知を行いません。ただし、ps コマンドを実行するとスクリプトの状態を確認できます。
注: nohup コマンドは、その他のスクリプトがタイムアウトするシナリオでも実行できます。たとえば、大容量の Amazon Simple Storage Service (Amazon S3) オブジェクトをダウンロードする場合が当てはまります。
ノートブックインスタンスのボリュームにカスタムの永続 Conda インストール環境を作成する
-
既存のノートブックインスタンスのターミナルで任意のエディタを使用し、次のコマンドを実行して .sh ファイルを作成します。
vim custom-script.sh
-
その .sh ファイルに作成時スクリプトの内容を追加します。スクリプトのコピーについては、GitHub のウェブサイトで amazon-sagemaker-notebook-instance-lifecycle-config-samples を参照してください。このスクリプトは、カスタム Conda インストール環境に新しい Conda 環境を作成します。このスクリプトでは、新しい Conda 環境に NumPy と Boto3 もインストールされます。
注: ノートブックインスタンスには、Miniconda インストーラーと ipykernel をダウンロードするためのインターネット接続が必要です。
-
次のコマンドを実行してスクリプトを実行可能としてマークし、スクリプトを実行します。
chmod +x custom-script.sh
./custom-script.sh
-
インストールの完了後、ノートブックインスタンスを停止します。
-
起動時スクリプトを .sh ファイルに追加します。スクリプトのコピーについては、GitHub のウェブサイトで amazon-sagemaker-notebook-instance-lifecycle-config-samples を参照してください。
-
停止したノートブックインスタンスにおいて、起動時スクリプトをライフサイクル設定として追加します。このスクリプトにより、ノートブックインスタンスを起動するたびに、カスタム環境を Jupyter のカーネルとして使用できます。
-
ノートブックインスタンスを起動し、カスタム環境にカスタムライブラリをインストールします。
たとえば、pyarrow をインストールするには、次のコマンドを実行します。
import sys
!conda install --yes --prefix {sys.prefix} -c conda-forge pyarrow
Notebook インスタンスを停止してから起動した場合も、カスタム Conda 環境とライブラリは引き続き使用できるため、再インストールの必要はありません。
Conda を更新する必要があることを示すエラーメッセージが表示された場合は、次のコマンドを実行します。
!conda install -p "/home/ec2-user/anaconda3" "conda>=4.8" --yes
!conda install -p "/home/ec2-user/SageMaker/custom-miniconda/miniconda" "conda>=4.8" --yes
Conda のインストールが完了した後、ライブラリをインストールします。
Neptune ノートブックを作成し、そのポリシーと接続を設定する
Amazon Neptune でノートブックを作成する際、Neptune は S3 オブジェクトを指すデフォルトのライフサイクル設定を使用します (例: aws s3 cp s3://aws-neptune-notebook/graph_notebook.tar.gz /tmp/graph_notebook.tar.gz)。Neptune の AWS Identity and Access Management (IAM) ロールには、arn:aws:s3:::aws-neptune-notebook と arn:aws:s3:::aws-neptune-notebook/ に対する s3:GetObject および s3:ListBucket アクションを付与する権限ポリシーが必要です。
また、Neptune の IAM ロールには、SageMaker AI に AssumeRole アクションを許可する信頼ポリシーも必要です。たとえば、ノートブックに関連付けた DB クラスターで IAM データベース認証を有効にした場合は、IAM ロールには、関連する DB クラスターに対する neptune-db: アクションを付与する権限ポリシーが必要です。
仮想プライベートクラウド (VPC) を使用して Neptune ノートブックをインターネットに接続する場合、VPC に NAT ゲートウェイをアタッチする必要があります。また、セキュリティグループの設定では、Amazon S3 と Python Package Index (PyPI) へのインターネットアクセスを許可する必要があります。PyPI の詳細については、Python Package Index のウェブサイトを参照してください。
注: ライフサイクル設定スクリプトの問題をトラブルシューティングするには、Amazon CloudWatch Logs を使用してください。ログは次の場所にあります。
- ロググループ: /aws/sagemaker/NotebookInstances
- ログストリーム: example_notebook_instance_name/LifecycleConfigOnStart
関連情報
Amazon SageMaker AI について
ライフサイクル設定をデバッグする