SageMaker Studio で Amazon SageMaker Python SDK ローカルモードを 使用するにはどうすればよいですか?
SageMaker Studio で Amazon SageMaker Python SDK ローカルモードを使いたいです。
簡単な説明
SageMaker Studio Docker CLI と (オプションの) SageMaker Studio Docker UI 拡張をインストールして、SageMaker Studio にローカルモードと Docker 機能を追加します。
解決方法
前提条件
開始する前に、次のことを必ず完了してください。
- SageMaker Studio のドメイン設定は VpcOnly モードになっています (PublicInternetOnly モードはサポートされていないことに注意してください)。
- お客様のドメインは、DNS ホスト名と DNS 解決オプションが有効になっている Amazon VPC に接続されています。
- SageMaker Studio ユーザープロファイルの実行ロールには次のアクセス許可があります。
sagemaker:DescribeDomain sagemaker:DescribeUserProfile sagemaker:ListTags elasticfilesystem:DescribeMountTargets elasticfilesystem:DescribeMountTargetSecurityGroups elasticfilesystem:ModifyMountTargetSecurityGroups ec2:RunInstances ec2:TerminateInstances ec2:DescribeInstances ec2:DescribeInstanceTypes ec2:DescribeImages ec2:DescribeSecurityGroups ec2:DescribeNetworkInterfaces ec2:DescribeNetworkInterfaceAttribute ec2:CreateSecurityGroup ec2:AuthorizeSecurityGroupIngress ec2:ModifyNetworkInterfaceAttribute ec2:CreateTags
- Docker CLI 拡張がインストールされました。(UI 拡張を使用するには Docker CLI が必要であることに注意してください。)
- Docker Compose がインストールされました。
- PpYAML, 5.4.1 がインストールされました。
SageMaker Studio ライフサイクル設定スクリプトの作成
1. JupyterServer アプリ用の Studio ライフサイクル設定スクリプトを作成して、次の 2 つの方法のいずれかで拡張機能をインストールします。
CLI 拡張と UI 拡張の両方をインストールする
#!/bin/bash set -ex cd ~ if cd sagemaker-studio-docker-cli-extension then git reset --hard git pull else git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git cd sagemaker-studio-docker-cli-extension fi nohup ./setup.sh > docker_setup.out 2>&1 & if cd ~/sagemaker-studio-docker-ui-extension then git reset --hard git pull cd else cd git clone https://github.com/aws-samples/sagemaker-studio-docker-ui-extension.git fi nohup ~/sagemaker-studio-docker-ui-extension/setup.sh > docker_setup.out 2>&1 &
CLI 拡張のみをインストールする
#!/bin/bash set -ex cd ~ if cd sagemaker-studio-docker-cli-extension then git reset --hard git pull else git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git cd sagemaker-studio-docker-cli-extension fi nohup ./setup.sh > docker_setup.out 2>&1 &
2. KernelGateway アプリ用の SageMaker Studio ライフサイクル設定スクリプトを作成します。
#!/bin/bash set -eux STATUS=$(python3 -c "import sagemaker_dataprep";echo $?) if [ "$STATUS" -eq 0 ] then echo 'Instance is of Type Data Wrangler' else echo 'Instance is not of Type Data Wrangler' cd ~ if cd sagemaker-studio-docker-cli-extension then git reset --hard git pull else git clone https://github.com/aws-samples/sagemaker-studio-docker-cli-extension.git cd sagemaker-studio-docker-cli-extension fi nohup ./setup.sh > docker_setup.out 2>&1 & fi
3. ターミナルから、両方のスクリプトコンテンツを base64 エンコーディングでエンコードします。
$ LCC_JS_CONTENT=`openssl base64 -A -in <LifeCycle script file for JupyterServer>` $ LCC_KG_CONTENT=`openssl base64 -A -in <LifeCycle script file for KernelGateway>`
4. 次の AWS コマンドラインインターフェイス (CLI) コマンドを使用して、環境変数 LCC_JS_CONTENT と LCC_KG_CONTENT から Studio ライフサイクル設定を作成します。
$ aws sagemaker create-studio-lifecycle-config --studio-lifecycle-config-name sdocker-js --studio-lifecycle-config-content $LCC_JS_CONTENT --studio-lifecycle-config-app-type JupyterServer $ aws sagemaker create-studio-lifecycle-config --studio-lifecycle-config-name sdocker-kg --studio-lifecycle-config-content $LCC_KG_CONTENT --studio-lifecycle-config-app-type KernelGateway
注: CLI コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。「AWS CLI に関連するエラーのトラブルシューティング - AWS コマンドラインインターフェイス」を参照してください。
Studio ドメインの更新 (オプション)
Studioドメインを更新して、LCC をデフォルトのユーザー設定に追加します。
$ aws sagemaker update-domain --domain-id <domain-id> --default-user-settings '{"JupyterServerAppSettings": {"DefaultResourceSpec": {"InstanceType": "system", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"}}, "KernelGatewayAppSettings": {"DefaultResourceSpec": {"InstanceType": "<default instance type>", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"}}}'
Studio ユーザープロファイルの更新
Studio ユーザープロファイルの設定を次のように更新します。
$ aws sagemaker update-user-profile --domain-id <domain-id> --user-profile-name <user profile> --user-settings '{"JupyterServerAppSettings ": {"DefaultResourceSpec": {"InstanceType": "system", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"}, "LifecycleConfigArns": ["arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-js"]}, "KernelGatewayAppSettings": {"DefaultResourceSpec": {"InstanceType": "<default instance type>", "LifecycleConfigArn": "arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"}, "LifecycleConfigArns": ["arn:aws:sagemaker:<region>:<AWS account ID>:studio-lifecycle-config/sdocker-kg"]}}'
新しい JuypterServer アプリを起動する
JupyterServer アプリで実行中のインスタンスをすべて削除して、設定を完了します。次に、新しい JupyterServer アプリを起動します。完了すると、新しいアプリに InService ステータスが表示されます。
UI 拡張機能を使用している場合は、インストールが完了するまでお待ちください。新しい JupyterServer アプリを起動してから約 10 分程度で完了します。完了したら、ブラウザを更新して拡張機能を確認してください。
(オプション) 一部の Studio カーネルは PyYAML>=6.0 で、pgrep や procps の Python パッケージを備えていません。ローカルモードではこの機能が使えなくなるため、PyYAML==5.4.1 が必要です。また、ローカルエンドポイントを削除するには pgrep が必要です。必要に応じて、次のコマンドを使用して Studio ノートブックからこれらの要件をインストールします。インストールが完了したら、カーネルを再起動します。
!conda update --force -y conda !conda install -y pyyaml==5.4.1 !apt-get install -y procps
Docker ホストを作成する
次に、先にインストールした CLI 拡張機能を使用して Docker ホストを作成します。次のように、任意の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスタイプ (c5.xlarge など) を使用してください。
!sdocker create-host --instance-type c5.xlarge
出力は次のようになります。
Successfully launched DockerHost on instance i-xxxxxxxxxxxxxxxxx with private DNS ip-xxx-xxx-xxx-xxx.ec2.internal Waiting on docker host to be ready Docker host is ready! ip-xxx-xxx-xxx-xxx.ec2.internal Successfully created context "ip-xxx-xxx-xxx-xxx.ec2.internal " ip-xxx-xxx-xxx-xxx.ec2.internal Current context is now "ip-xxx-xxx-xxx-xxx.ec2.internal "
UI 拡張をインストールした場合は、UI からインスタンスタイプを選択し、Start Hostボタンを選択します。新しいホストが Docker Hosts リストの緑の円の横に表示されます。
ローカルモードで実行する
SageMaker Python SDK をローカルモードで使用します。
重要: 追加料金が発生しないようにするため、ローカルモードが終了し、Docker を使用する必要がなくなった後、起動した Docker ホストをすべて閉じてください。CLI 拡張を使用して Docker ホストを閉じるには、次のように入力します。
!sdocker terminate-current-host
または、UI 拡張の Docker ホストで、各 Docker ホストの横にある電源アイコンを選択します。このアクションにより、Docker ホストがシャットダウンされ、Docker ホストリストから削除されます。
注: CLI 拡張の使用方法の詳細については、GitHub ウェブサイトの「SageMaker Docker CLI 拡張 - SageMaker Studio の Docker 統合」を参照してください。
関連するコンテンツ
- 質問済み 6年前lg...
- 質問済み 1年前lg...
- 質問済み 9ヶ月前lg...
- 質問済み 9ヶ月前lg...
- AWS公式更新しました 1年前
- AWS公式更新しました 5ヶ月前