Por que meu endpoint do Amazon SageMaker entra no estado com falha quando crio ou atualizo um endpoint?

5 minuto de leitura
0

Desejo solucionar o motivo pelo qual a criação ou a atualização do meu endpoint do Amazon SageMaker apresenta falhas.

Resolução

Quando a criação ou a atualização do endpoint do SageMaker apresenta falhas, o SageMaker fornece o motivo da falha. Use uma das opções a seguir para analisar esse motivo:

  • Verificação do endpoint no console do SageMaker. O motivo da falha é relatado no console.
  • Execução do comando describe-endpoint da AWS Command Line Interface (AWS CLI). Verificação do campo FailureReason para descobrir o motivo da falha.

Observação: se você receber erros ao executar comandos da AWS CLI, confirme se está executando a versão mais recente da AWS CLI.

A seguir, estão alguns dos motivos que causam falhas e seus métodos de resolução.

Não foi possível provisionar a capacidade computacional de ML solicitada devido ao erro InsufficientInstanceCapacity

Você pode receber o seguinte erro ao tentar criar um endpoint:

Unable to provision requested ML compute capacity due to InsufficientInstanceCapacity error

Esse erro ocorre quando a AWS não tem capacidade suficiente para provisionar as instâncias solicitadas para o endpoint.

Você pode resolver esse erro tentando uma ou mais abordagens a seguir:

  • Aguardar alguns minutos e tentar novamente, pois a capacidade pode ser alterada com frequência.
  • Se você estiver usando diversas instâncias para seu endpoint, tente criar o endpoint com um número inferior de instâncias. Se você tiver o Auto Scaling configurado, o SageMaker poderá diminuir ou aumentar a escala verticalmente, conforme necessário e conforme a capacidade permitir.
  • Experimente outro tipo de instância que ofereça suporte à workload. Depois da criação de um endpoint, atualize-o com o tipo de instância desejado. Como o SageMaker usa um método de implantação azul/verde para maximizar a disponibilidade, é possível realizar a transição para um novo tipo de instância sem afetar suas workloads de produção atuais.

O contêiner da variante de produção <variant> não passou na verificação de integridade do ping. Verifique os logs do CloudWatch para este endpoint.

Os contêineres usados para endpoints do SageMaker devem implementar um servidor Web que responda aos endpoints /invocations e /ping. Com a criação de um endpoint, o SageMaker começa a enviar solicitações GET periódicas para o endpoint /ping após o início do contêiner.

No mínimo, um contêiner deve responder com um código de status HTTP 200 OK e um corpo em branco para indicar que o contêiner está preparado para aceitar solicitações de inferência. Esse erro ocorre quando o SageMaker não obtém respostas consistentes do contêiner em até quatro minutos após a inicialização do contêiner. O SageMaker não considera que o endpoint esteja íntegro, caso ele não responda à verificação de integridade. Portanto, o endpoint é marcado como Failed (Com falha).

A verificação de integridade também pode falhar quando você usa uma das imagens de contêineres de aprendizado profundo da AWS. Essas imagens usam TorchServe ou Multi Model Server para atender aos modelos que implementam os endpoints HTTP para inferência e verificações de integridade. Essas estruturas verificam se o modelo está carregado antes de responder ao SageMaker com uma resposta de 200 OK. Se o servidor não conseguir visualizar que o modelo está carregado, a verificação de integridade falhará. Um modelo pode não ser carregado por diversos motivos, incluindo uso de memória. As mensagens de erro correspondentes são registradas nos logs do Amazon CloudWatch para o endpoint. Se o código carregado no endpoint foi o responsável pela falha (por exemplo, model_fn para PyTorch), os erros serão registrados no AWS CloudTrail. Para aumentar o detalhamento desses logs, atualize a variável de ambiente SAGEMAKER_CONTAINER_LOG_LEVEL para o modelo com os níveis de log para o registro em log de Python.

Uma solicitação de verificação de integridade deve receber uma resposta em dois segundos para ocorrer com êxito. Certifique-se de testar a resposta iniciando o contêiner de modelo localmente e enviando uma solicitação GET a ele para verificar a resposta.

Falha ao extrair o arquivo de dados do modelo para o contêiner

O SageMaker espera um arquivo TAR com os dados do modelo para uso em seu endpoint. Após o SageMaker fazer o download do arquivo TAR, o arquivo de dados será extraído. Esse erro pode ocorrer caso o SageMaker não consiga extrair esse arquivo de dados. Por exemplo, o SageMaker não poderá extrair o arquivo de dados se o artefato do modelo contiver links simbólicos para arquivos localizados no arquivo TAR.

Ao criar um endpoint, certifique-se de que os artefatos do modelo não incluam links simbólicos no arquivo TAR. Para verificar se o arquivo TAR inclui links simbólicos, extraia os dados do modelo e execute o seguinte comando nos artefatos:

find . -type l -ls

Este comando retorna todos os links simbólicos encontrados após a pesquisa no diretório atual e em qualquer um de seus subdiretórios. Substitua qualquer link retornado pelas cópias reais do arquivo.

Erro CannotStartContainerError

Esse erro ocorre quando o SageMaker falha ao iniciar o contêiner para prepará-lo para inferência.

Quando o SageMaker inicia o endpoint, o contêiner é iniciado com o comando a seguir:

docker run <image-id> serve

Quando esse comando é executado, o contêiner deve iniciar o processo de atendimento.

Para resolver esse erro, use o modo local para o SDK do SageMaker para Python. Ou tente executar a imagem de inferência com o comando docker run. O SDK do SageMaker para Python realiza o carregamento do modelo de forma semelhante a um endpoint do SageMaker. No entanto, o Docker não realiza o carregamento do modelo, a menos que você configure o comando ou o contêiner para fazer isso. Você pode usar um comando semelhante ao seguinte para realizar o carregamento do modelo localmente:

docker run -v $(pwd)/test_dir:/opt/ml -p 8080:8080 --rm ${image} serve

AWS OFICIAL
AWS OFICIALAtualizada há um ano