Como uso o modo local do Amazon SageMaker Python SDK com o SageMaker Studio?
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.
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há um ano