Personalização de uma instância do caderno SageMaker usando um script LCC - Amazon SageMaker

Personalização de uma instância do caderno SageMaker usando um script LCC

Importante

Políticas personalizadas do IAM que permitem que o Amazon SageMaker Studio ou o Amazon SageMaker Studio Classic criem recursos do Amazon SageMaker também devem conceder permissões para adicionar tags a esses recursos. A permissão para adicionar tags aos recursos é necessária porque o Studio e o Studio Classic marcam automaticamente todos os recursos que eles criam. Se uma política do IAM permitir que o Studio e o Studio Classic criem recursos, mas não permitir o uso de tags, erros de “AccessDenied” podem ocorrer ao tentar criar recursos. Para obter mais informações, consulte Fornecer permissões para adicionar tags aos recursos do SageMaker.

Políticas gerenciadas pela AWS para o Amazon SageMaker que dão permissões para criar recursos do SageMaker já incluem permissões para adicionar tags ao criar esses recursos.

Uma configuração de ciclo de vida (LCC) fornece scripts de shell que são executados apenas quando você cria ou inicia a instância de caderno. Ao criar uma instância de caderno, você pode criar uma nova LCC ou anexar uma LCC que você já tenha. Os scripts de configuração do ciclo de vida são úteis para os seguintes casos de uso:

  • Instalando pacotes ou cadernos de amostra em uma instância de caderno

  • Configurar rede e segurança para uma instância de caderno

  • Usar um script shell para personalizar uma instância de caderno

Também é possível usar um script de configuração do ciclo de vida para acessar os serviços da AWS do seu caderno. Por exemplo, você pode criar um script que permite usar seu caderno para controlar outros recursos da AWS, como uma instância do Amazon EMR.

Mantemos um repositório público de configurações de ciclo de vida de instâncias de cadernos que abordam casos de uso comuns para personalizar instâncias de cadernos em https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples.

nota

Cada script tem um limite de 16.384 caracteres.

O valor da variável de ambiente $PATH que está disponível para ambos os scripts é /usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin. O diretório de trabalho, que é o valor da variável de ambiente $PWD é /.

Visualize o CloudWatch Logs para configurações de ciclo de vida de instâncias de caderno no grupo de logs /aws/sagemaker/NotebookInstances, no fluxo de logs [notebook-instance-name]/[LifecycleConfigHook].

Scripts não podem ser executados por mais de 5 minutos. Se um script for executado por mais de 5 minutos, haverá falha e a instância de caderno não será criada nem iniciada. Para ajudar a diminuir o tempo de execução de scripts, tente o seguinte:

  • Reduza as etapas necessárias. Por exemplo, limite os ambientes conda nos quais instalar pacotes grandes.

  • Execute tarefas em processos paralelos.

  • Use o comando nohup no seu script.

Você pode ver uma lista das configurações de ciclo de vida de instâncias de caderno que criou anteriormente ao escolher Configuração de ciclo de vida no console do SageMaker. Você pode anexar uma configuração de ciclo de vida de instância de caderno ao criar uma nova instância de caderno. Para ter mais informações sobre como criar uma instância de caderno, consulte Criar uma instância de caderno do Amazon SageMaker.

Práticas recomendadas para configuração do ciclo de vida

Veja a seguir as melhores práticas para usar configurações de ciclo de vida:

Importante

Não recomendamos armazenar informações confidenciais em seu script de configuração do ciclo de vida.

  • As configurações de ciclo de vida são executadas como o usuário root. Se o seu script fizer alguma alteração no diretório /home/ec2-user/SageMaker (por exemplo, instalar um pacote com pip), use o comando sudo -u ec2-user para executar como o usuário ec2-user. Este é o mesmo usuário com o qual o Amazon SageMaker é executado.

  • Instâncias de caderno do SageMaker usam ambientes do conda para implementar kernels diferentes de cadernos Jupyter. Se quiser instalar pacotes disponíveis para um ou mais kernels de caderno, coloque os comandos para instalar os pacotes com comandos de ambiente conda que ativam o ambiente conda que contém o kernel no qual você deseja instalar os pacotes.

    Por exemplo, para instalar um pacote somente para o ambiente do python3, use o seguinte código:

    #!/bin/bash sudo -u ec2-user -i <<EOF # This will affect only the Jupyter kernel called "conda_python3". source activate python3 # Replace myPackage with the name of the package you want to install. pip install myPackage # You can also perform "conda install" here as well. source deactivate EOF

    Se você deseja instalar um pacote em todos os ambientes conda na instâncias de caderno, use o seguinte código:

    #!/bin/bash sudo -u ec2-user -i <<EOF # Note that "base" is special environment name, include it there as well. for env in base /home/ec2-user/anaconda3/envs/*; do source /home/ec2-user/anaconda3/bin/activate $(basename "$env") # Installing packages in the Jupyter system environment can affect stability of your SageMaker # Notebook Instance. You can remove this check if you'd like to install Jupyter extensions, etc. if [ $env = 'JupyterSystemEnv' ]; then continue fi # Replace myPackage with the name of the package you want to install. pip install --upgrade --quiet myPackage # You can also perform "conda install" here as well. source /home/ec2-user/anaconda3/bin/deactivate done EOF
  • Armazene todos os ambientes conda na pasta de ambientes padrão (/home/user/anaconda3/envs).

Importante

Ao criar ou alterar um script, recomendamos usar um editor de texto que forneça quebras de linha de estilo UNIX, como o editor de texto disponível no console quando um caderno é criado. Copiar texto de um sistema operacional que não seja Linux pode incluir quebras de linha incompatíveis e resultar em um erro inesperado.