SageMaker 스튜디오에서 Amazon SageMaker Python SDK 로컬 모드를 사용하려면 어떻게 해야 하나요?

5분 분량
0

SageMaker 스튜디오에서 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를 설치했습니다.
  • PyYAML, 5.4.1을 설치했습니다.

SageMaker Studio 수명 주기 구성 스크립트 생성

1.    JupyterServer 앱용 Studio 수명 주기 구성 스크립트를 생성하여 다음 두 가지 방법 중 하나로 확장 프로그램을 설치합니다.

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과 함께 제공되며 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(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(Docker 호스트) 목록에서 녹색 원 옆에 표시됩니다.

로컬 모드에서 실행

로컬 모드에서 SageMaker Python SDK를 사용합니다.

중요: 추가 요금을 피하려면 로컬 모드를 완료하고 더 이상 Docker를 사용할 필요가 없어지면 시작한 Docker 호스트를 모두 닫습니다. CLI 확장 프로그램을 사용하여 Docker 호스트를 닫으려면 다음을 입력합니다.

!sdocker terminate-current-host

또는 UI 확장 프로그램의 **Docker Hosts(Docker 호스트)**에서 각 Docker 호스트 옆에 있는 전원 아이콘을 선택합니다. 이 작업을 수행하면 Docker 호스트가 종료되고 Docker Hosts(Docker 호스트) 목록에서 제거됩니다.

참고: CLI 확장 프로그램을 사용하는 방법에 대한 자세한 정보는 GitHub 웹 사이트에서 SageMaker Docker CLI 확장 프로그램 - SageMaker Studio용 Docker 통합을 참조하세요.


AWS 공식
AWS 공식업데이트됨 일 년 전