SageMaker 스튜디오에서 Amazon SageMaker Python SDK 로컬 모드를 사용하려면 어떻게 해야 하나요?
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_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(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 통합을 참조하세요.

관련 콘텐츠
- 질문됨 24일 전lg...
- 질문됨 2달 전lg...
- 질문됨 한 달 전lg...
- AWS 공식업데이트됨 7달 전