Ir para o conteúdo

How do I troubleshoot issues with lifecycle configuration scripts in Amazon SageMaker AI? (Como soluciono problemas com scripts de configuração do ciclo de vida no Amazon SageMaker AI?)

5 minuto de leitura
0

Quero solucionar problemas com scripts de configuração do ciclo de vida (LCC) no Amazon SageMaker AI.

Resolução

O tempo limite do script da LCC

Quando o script da LCC leva mais tempo para ser executado do que a cota de 5 minutos, o script atinge o tempo limite.

Para diminuir o runtime do script, execute as seguintes ações:

  • Reduza o número de etapas necessárias. Por exemplo, limite os ambientes conda nos quais você instala pacotes grandes.
  • Execute tarefas em processos paralelos.
  • Execute o comando nohup em seu script para ignorar os sinais de desligamento para que o script possa ser concluído em 5 minutos.

Para executar o comando nohup, inicialize o comando na linha de código específica e finalize a linha de código com um e comercial.

Exemplo de script:

===
#!/bin/bash

set -e

# OVERVIEW
# This script executes an existing Notebook file on the instance during start using nbconvert(https://github.com/jupyter/nbconvert)

# PARAMETERS

ENVIRONMENT=python3
NOTEBOOK_FILE=/home/ec2-user/SageMaker/test.ipynb

source /home/ec2-user/anaconda3/bin/activate "$ENVIRONMENT"
nohup jupyter nbconvert --to notebook --ExecutePreprocessor.timeout=-1 --ExecutePreprocessor.kernel_name=python3 --execute "$NOTEBOOK_FILE" &

source /home/ec2-user/anaconda3/bin/deactivate

====

Não é possível excluir uma LLC existente

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Ao tentar excluir um script de LCC que já está anexado a um domínio do SageMaker Studio, é possível receber a seguinte mensagem de erro:

"Loading of domain lifecycle failed. [400] ResourceNotFound: LifecycleConfig does not exist."

Para resolver esse problema, primeiro você deve desanexar o script da LCC e, em seguida, excluí-lo.

Ou é possível definir o parâmetro LifecycleConfigArns na configuração do seu domínio como uma lista vazia.

Para reconfigurar seu domínio, conclua as seguintes etapas:

  1. Execute o seguinte comando describe-domain para visualizar a lista de scripts de LCC associados no parâmetro LifecycleConfigArns:

    aws sagemaker describe-domain —domain-id d-xxxxxxxxx
  2. Execute o seguinte comando update-domain para definir o parâmetro como uma lista vazia:

    aws sagemaker update-domain --domain-id d-xxxxxxxxx \
    --default-user-settings '{
      "JupyterServerAppSettings": {
        "DefaultResourceSpec": {
          "InstanceType": "system"
        },
        "LifecycleConfigArns": []
      }
    }'

Quando você executa o comando update-domain novamente, o domínio não faz mais referência ao script da LCC. Em seguida, é possível anexar o novo script da LCC ao domínio.

O script LCC não pode instalar um pacote

Se a LCC não conseguir instalar pacotes em uma instância de domínio ou caderno do SageMaker Studio, talvez o script da LCC não tenha acesso ao domínio ou à instância. Para resolver esse problema, você deve conectar o domínio associado do SageMaker Studio ou a instância do caderno à Amazon Virtual Private Cloud (VPC). A VPC também deve permitir acesso à Internet.

É possível associar uma VPC à comunicação padrão pela Internet no modo PublicInternetOnly. Ou é possível configurar a comunicação com a Internet somente no modo VPC.

Se você usa apenas o modo VPC, configure grupos de segurança com regras de entrada e saída que permitam o seguinte tráfego:

  • Tráfego NFS via TCP na porta 2049 entre o domínio e o volume do Amazon Elastic File System (Amazon EFS).
  • Tráfego TCP dentro do grupo de segurança.
    Observação: o tráfego TCP no grupo de segurança é necessário para conectar a aplicação do Jupyter Server e as aplicações do Kernel Gateway. Você deve permitir o acesso a pelo menos portas no intervalo 8192–65535.

Para permitir o acesso à Internet, você deve usar um gateway NAT com acesso à Internet.

A instância não consegue encontrar o conteúdo do script da LCC

Quando a instância da aplicação não consegue encontrar o conteúdo que está no script da LCC, é possível receber a seguinte mensagem de erro:

"stdbuf: failed to run command "/opt/ml/lifecycleconfig/lifecycle_script.sh": No such file or directory"

Esse erro pode ocorrer devido à incompatibilidade entre os símbolos formatados do Windows e os símbolos formatados do Unix. Os caracteres da janela usam terminações de linha CRLF (\r\n) e o Unix usa terminações de linha LF (\n).

As instâncias do caderno do Amazon SageMaker AI são executadas no sistema operacional (SO) Amazon Linux 2 (AL2). Um script bash da LCC que você baixa em um sistema operacional Windows e anexa diretamente à LLC não é válido para o sistema operacional Linux.

Para solucionar esse problema, realize as etapas a seguir:

  1. Abra o script bash no Notepad++.
  2. Escolha Exibir e, em seguida, escolha Mostrar símbolo.
  3. Escolha Mostrar todos os símbolos para visualizar as terminações de linha do Windows (\r\n).
  4. Altere CRLF para LF (\n) para tornar o script válido no Unix.
  5. Anexe o script à LCC.

Informações relacionadas

Configuração de depuração do ciclo de vida

Conectar cadernos do Studio em uma VPC a recursos externos

AWS OFICIALAtualizada há 3 meses