SageMaker Studio で Amazon SageMaker Python SDK ローカルモードを 使用するにはどうすればよいですか?

所要時間3分
0

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_CONTENTLCC_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 で、pgrepprocps の 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 統合」を参照してください。


AWS公式
AWS公式更新しました 1年前
コメントはありません