Amazon SageMaker AI のライフサイクル設定 (LCC) スクリプトに関する問題をトラブルシューティングしたいです。
解決策
LCC スクリプトがタイムアウトする
LCC スクリプトの実行時間が 5 分のクォータを超えると、スクリプトはタイムアウトします。
スクリプトの実行時間を短縮するには、次の操作を行います。
- 必要なステップの数を減らす。例えば、大容量のパッケージをインストールする conda 環境を制限する。
- 並列プロセスでタスクを実行する。
- スクリプトで nohup コマンドを実行してハングアップシグナルを無視し、スクリプトが 5 分以内に完了するようにする。
nohup コマンドを実行するには、コードの特定の行でコマンドを初期化し、コードの行の末尾にアンパサンドを付けます。
スクリプト例:
===
#!/bin/bash
set -e
# OVERVIEW
# This script executes an existing Notebook file on the instance during start using nbconvert(https://github.com/jupyter/nbconvert)
# PARAMETERS
ENVIRONMENT=python3
NOTEBOOK_FILE=/home/ec2-user/SageMaker/test.ipynb
source /home/ec2-user/anaconda3/bin/activate "$ENVIRONMENT"
nohup jupyter nbconvert --to notebook --ExecutePreprocessor.timeout=-1 --ExecutePreprocessor.kernel_name=python3 --execute "$NOTEBOOK_FILE" &
source /home/ec2-user/anaconda3/bin/deactivate
====
既存の LLC は削除できません
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
SageMaker Studio ドメインに既にアタッチされている LCC スクリプトを削除しようとすると、次のエラーメッセージが表示されることがあります。
"Loading of domain lifecycle failed. [400] ResourceNotFound: LifecycleConfig does not exist."
この問題を解決するには、まず LCC スクリプトをデタッチしてから削除する必要があります。
または、ドメイン設定の LifecycleConfigArns パラメータを空のリストに設定することもできます。
ドメインを再設定するには、次の手順を実行します。
-
次の describe-domain コマンドを実行し、LifecycleConfigArns パラメータ内の関連する LCC スクリプトのリストを表示する。
aws sagemaker describe-domain —domain-id d-xxxxxxxxx
-
次の update-domain コマンドを実行し、パラメータに空のリストを設定する。
aws sagemaker update-domain --domain-id d-xxxxxxxxx \
--default-user-settings '{
"JupyterServerAppSettings": {
"DefaultResourceSpec": {
"InstanceType": "system"
},
"LifecycleConfigArns": []
}
}'
update-domain コマンドを再度実行すると、ドメインは LCC スクリプトを参照しなくなります。これで、新しい LCC スクリプトをドメインにアタッチできます。
LCC スクリプトはパッケージをインストールできません
LCC が SageMaker Studio ドメインやノートブックインスタンスにパッケージをインストールできない場合、LCC スクリプトがドメインやインスタンスにアクセスできない可能性があります。この問題を解決するには、関連する SageMaker Studio ドメインやノートブックインスタンスを Amazon 仮想プライベートクラウド (VPC) に接続する必要があります。VPC はインターネットアクセスも許可する必要があります。
PublicInternetOnly モードでは、VPC をインターネット経由のデフォルト通信に関連付けることもできます。または、VPC のみ モードでインターネットとの通信を設定することもできます。
VPC のみ モードを使用する場合は、以下のトラフィックを許可するインバウンドとアウトバウンドのルールを使用してセキュリティグループを設定します。
- ドメインと Amazon Elastic File System (Amazon EFS) ボリュームの間の、ポート 2049 を使用する TCP 経由の NFS トラフィック。
- セキュリティグループ内の TCP トラフィック。
注: Jupyter Server アプリケーションとカーネルゲートウェイアプリケーションを接続するには、セキュリティグループの TCP トラフィックが必要です。少なくとも 8192 ~ 65535 の範囲のポートへのアクセスを許可する必要があります。
インターネットアクセスを許可するには、インターネットにアクセスできる NAT ゲートウェイを使用する必要があります。
インスタンスが LCC スクリプトコンテンツを見つけることができません
アプリケーションインスタンスが LCC スクリプトの内容を見つけられない場合、次のエラーメッセージが表示されることがあります。
"stdbuf: failed to run command "/opt/ml/lifecycleconfig/lifecycle_script.sh": No such file or directory"
このエラーは、Windows 形式の記号と Unix 形式の記号との間に互換性がないために発生する可能性があります。Windows は行末に CRLF (\r\n) を使用し、Unix は行末に LF (\n) を使用します。
Amazon SageMaker AI ノートブックインスタンスは Amazon Linux 2 (AL2) オペレーティングシステム (OS) 上で実行されます。Windows OS にダウンロードして LLC に直接アタッチした LCC bash スクリプトは、Linux OS では無効です。
この問題を解決するには、次の手順を実行します。
- bash スクリプトを Notepad++ で開く。
- [表示] を選択し、[記号を表示] を選択する。
- [すべての記号を表示] を選択し、Windows (\r\n) 形式の行末を表示する。
- CRLF を LF (\n) に変更して、スクリプトを Unix で有効にする。
- スクリプトを LCC にアタッチする。
関連情報
ライフサイクル設定をデバッグする
VPC 内の Studio ノートブックを外部リソースに接続する