Como uso o modo local do Amazon SageMaker Python SDK com o SageMaker Studio?

6 minuto de leitura
0

Quero usar o modo local do Amazon SageMaker Python SDK com o SageMaker Studio.

Breve descrição

Instale a CLI do Docker do SageMaker Studio e as extensões de interface do usuário do Docker do SageMaker Studio (opcional) para adicionar o modo local e a funcionalidade do Docker ao SageMaker Studio.

Resolução

Pré-requisitos

Antes de começar, certifique-se de concluir o seguinte:

  • Sua configuração de domínio do SageMaker Studio está no modo VpcOnly (observe que o modo PublicInternetOnly não é compatível).
  • Seu domínio está conectado à Amazon VPC com as opções de nome de host e resolução de DNS ativadas.
  • Sua função de execução de perfil de usuário do SageMaker Studio tem as seguintes permissões:
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
  • Você instalou a extensão da CLI do Docker. (Observe que a CLI do Docker é necessária para usar a extensão de UI.)
  • Você instalou o Docker Compose.
  • Você instalou o PPYaml, 5.4.1.

Criar scripts de configuração do ciclo de vida do SageMaker Studio

1.    Crie um script de configuração do ciclo de vida do Studio para a aplicação JupyterServer para instalar as extensões de uma das duas maneiras:

Instalar as extensões da CLI e da 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 &

Instalar somente a extensão da 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.    Crie um script de configuração do ciclo de vida do SageMaker Studio para a aplicação KernelGateway:

#!/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.    Em um terminal, codifique os dois conteúdos do script usando a codificação 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.    Crie configurações de ciclo de vida do Studio a partir das variáveis de ambiente LCC_JS_CONTENT e LCC_KG_CONTENT usando estes comandos da AWS Command Line Interface (CLI):

$ 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

Observação: se você receber erros ao executar os comandos da CLI, verifique se você está usando a versão mais recente da AWS CLI. Consulte Solução de problemas de erros da AWS CLI - Interface de linha de comando da AWS.

Atualizar o domínio do Studio (opcional)

Atualize o domínio do Studio para adicionar a LCC às configurações padrão do usuário:

$ 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"}}}'

Atualizar o perfil de usuário do Studio

Atualize suas configurações de perfil de uso do Studio da seguinte forma:

$ 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"]}}'

Iniciar a nova aplicação JuypterServer

Exclua qualquer instância em execução da aplicação JupyterServer para concluir a configuração. Em seguida, inicie a nova aplicação JupyterServer. Quando concluído, a nova aplicação mostra um status InService.

Se você estiver usando a extensão UI, aguarde até que ela seja instalada. Isso leva cerca de 10 minutos após o lançamento da nova aplicação JupyterServer. Quando terminar, atualize seu navegador para ver a extensão.

(Opcional) Alguns kernels do Studio vêm com PyYAML>=6.0 e não têm pacotes Python pgrep ou procps. O modo local requer PyYAML==5.4.1, pois as versões superiores quebram essa funcionalidade. Além disso, você precisa do pgrep para excluir um endpoint local. Se necessário, use os comandos a seguir para instalar esses requisitos do seu notebook Studio. Reinicie seu kernel após a conclusão da instalação.

!conda update --force -y conda
!conda install -y pyyaml==5.4.1
!apt-get install -y procps

Criar um host do Docker

Agora, crie um host Docker usando a extensão CLI que você instalou anteriormente. Use qualquer tipo de instância do Amazon Elastic Compute Cloud (EC2) (por exemplo, c5.xlarge) da seguinte forma:

!sdocker create-host --instance-type c5.xlarge

A saída deve ser semelhante à seguinte:

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 "

Se você instalou a extensão UI, selecione o tipo de instância na UI e escolha o botão Start Host (Iniciar host). O novo host aparece na lista Docker Hosts (Hosts do Docker), ao lado de um círculo verde.

Executar no modo local

Use o Python SDK do SageMaker no modo local.

Importante: para evitar cobranças extras, feche qualquer host do Docker que você iniciou depois de terminar o modo local e não precisar mais usar o Docker. Para fechar um host Docker usando a extensão CLI, digite:

!sdocker terminate-current-host

Ou, na extensão da interface do usuário, em Docker Hosts, escolha o ícone “Power” (Liga/desliga) ao lado de cada host do Docker. Essa ação desliga o host do Docker e o remove da lista Docker Hosts.

Observação: para obter mais informações sobre como usar a extensão da CLI, consulte SageMaker Docker CLI extension - Docker integration for SageMaker Studio (Extensão da CLI do SageMaker Docker - Integração do Docker com o SageMaker Studio) no site do GitHub.


AWS OFICIAL
AWS OFICIALAtualizada há um ano