Como soluciono problemas com meu endpoint de inferência do Amazon SageMaker AI sem servidor?
Recebo um erro quando uso um endpoint de inferência do Amazon SageMaker AI sem servidor para meu workload.
Resolução
Solucione o problema com base na mensagem de erro recebida.
Tamanho do contêiner de imagem muito grande para o endpoint de inferência sem servidor
Os endpoints de inferência sem servidor oferecem suporte ao Bring Your Own Container (BYOC), semelhante aos endpoints em tempo real. Como o AWS Lambda apoia esse tipo específico de inferência, o tamanho do contêiner deve ser menor que 10 GB para esse tipo específico de inferência.
Se seu contêiner exceder o limite de 10 GB, você receberá uma mensagem de erro semelhante à seguinte:
“Image size 11271073144 is greater than the supported size 10737418240”
Para resolver esse erro, realize uma das ações:
- Remova pacotes não utilizados e minimize o número de camadas em seu arquivo Docker para reduzir o tamanho da imagem e otimizar o contêiner do Docker.
- Use uma imagem base menor e crie uma nova configuração de endpoint. Especifique o tipo de instância desejado e outros parâmetros relevantes para hospedar o endpoint em tempo real.
- Transição de um endpoint sem servidor para um endpoint em tempo real. Crie uma nova configuração do endpoint para especificar seu tipo de instância e outros parâmetros para hospedar o endpoint em tempo real. Em seguida, atualize seu endpoint existente com a nova configuração.
- Para criar uma nova configuração de endpoint, use o seguinte modelo:
Observação: substitua YourVariantName pelo nome da variante da sua instância e YourModelName pelo nome do seu modelo. Substitua 1 pelo número inicial de sua contagem de instâncias. Substitua ml.m5.xlarge pelo seu tipo de instância. Substitua 1.0 pelo peso inicial da variante da sua instância.import boto3 client = boto3.client('sagemaker', region_name = 'us-east-1') endpoint_config_name = 'new-endpoint-config' production_variants = [ { 'VariantName': 'AllTraffic', 'ModelName': 'ModelName', 'InitialInstanceCount': 1, 'InstanceType': 'ml.m5.xlarge', 'InitialVariantWeight': 1.0 } ] create_endpoint_config_response = client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=production_variants ) - Crie um novo endpoint com a nova configuração para fazer a transição de um endpoint sem servidor para um endpoint em tempo real. Ou atualize um endpoint sem servidor existente com a nova configuração.
Crie um novo exemplo de endpoint:
Atualize um exemplo de endpoint existente:endpoint_name = 'new-endpoint' create_endpoint_response = client.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name )endpoint_name = 'my-old-endpoint' update_endpoint_response = client.update_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name )
Para determinar o tamanho do contêiner, recupere o URI da imagem do Amazon Elastic Container Registry (ECR). Em seguida, execute o seguinte comando do Docker para obter os detalhes da imagem do Docker:
docker images
Memória ou espaço em disco insuficientes no endpoint de inferência sem servidor
Os endpoints do SageMaker AI sem servidor têm uma alocação máxima de memória de 6 GB e uma capacidade efêmera de armazenamento em disco de 5 GB.
Se a memória do endpoint sem servidor exceder o limite, você receberá uma mensagem de erro semelhante à seguinte:
“UnexpectedStatusException: Error hosting endpoint: Failed. Reason: Ping failed due to insufficient memory.”
Para resolver o problema, escolha entre as seguintes opções:
- Ajuste o parâmetro MemorySizeInMB.
- Otimize a configuração do seu processamento.
- Implante o endpoint como um endpoint em tempo real e forneça os detalhes necessários da instância.
Ajuste o parâmetro MemorySizeInMB
- Crie uma nova configuração de endpoint sem servidor com MemorySizeInMB.
Exemplo:
Observação: substitua YourVariantName pelo nome da sua variante e YourModelName pelo nome do seu modelo. Substitua NewMemorySize pelo limite de tamanho de memória. O valor máximo que é possível usar é 6 GB.import boto3 client = boto3.client('sagemaker', region_name='us-east-1') endpoint_config_name = "new-endpoint-config" endpoint_config_response = client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": YourVariantName, "ModelName": YourModelName, "ServerlessConfig": { "MemorySizeInMB": NewMemorySize, "MaxConcurrency": 1, }, }, ], ) - Atualize o endpoint sem servidor com a nova configuração.
Exemplo:endpoint_name = 'my-old-endpoint' update_endpoint_response = client.update_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name )
Otimize a configuração do seu processamento
Para evitar um erro de memória, crie somente um processamento no contêiner que use todos os recursos de CPU disponíveis. Essa abordagem difere dos endpoints em tempo real, em que alguns contêineres do SageMaker AI podem criar um processamento para cada vCPU.
Para contêineres pré-criados com o kit de ferramentas de inferência SageMaker AI, modifique a criação do modelo para inferência definindo SAGEMAKER_MODEL_SERVER_WORKERS como 1.
Exemplo:
import boto3 client = boto3.client('sagemaker', region_name='us-east-1') response = client.create_model( ModelName='YourModelName', Containers=[ { 'Image': "YourImage" 'Mode': 'SingleModel', 'ModelDataUrl': "YourModelDataURL", 'Environment': { 'SAGEMAKER_CONTAINER_LOG_LEVEL': '20', 'SAGEMAKER_MODEL_SERVER_WORKERS': '1' } } ], ExecutionRoleArn=role )
Observação: substitua YourModelName pelo nome do seu modelo, YourImage pelo nome da sua imagem e YourModelDataUrl pelo URL de dados do modelo.
Implante o endpoint como um endpoint em tempo real e forneça os detalhes necessários da instância
Para obter informações sobre como implantar o endpoint como um endpoint em tempo real, consulte “Transição de um endpoint sem servidor para um endpoint em tempo real” neste artigo.
Espaço em disco insuficiente
Se o seu endpoint sem servidor não tiver espaço em disco disponível, você poderá receber a seguinte mensagem de erro:
“OSError: [Errno 28] No space left on device”
Para resolver esse problema, execute as seguintes ações:
- Certifique-se de que o tamanho do modelo compactado não exceda o espaço em disco disponível quando descompactado. Um arquivo é descompactado até três vezes seu tamanho compactado.
- Use um artefato de modelo menor e, em seguida, certifique-se de que todos os arquivos no arquivo .tar sejam essenciais em sua implantação.
- Se a inferência sem servidor não for viável, implante em um endpoint em tempo real para personalizar as especificações da instância.
Cenários de inicialização a frio em endpoints de inferência sem servidor
Devido à natureza sob demanda do provisionamento de recursos e às limitações da inferência do SageMaker AI sem servidor, não há um método definitivo para pré-aquecer um endpoint de inferência do SageMaker AI sem servidor. Para mais informações, consulte Minimizando cold starts.
Para a ProvisionedConcurrency alocada, o SageMaker AI mantém o endpoint em um estado quente para responder em milissegundos. Para minimizar os problemas de latência de inicialização a frio, atualize seu endpoint com ProvisionedConcurrency. Para obter mais informações, consulte Métricas para monitorar o Amazon SageMaker AI com o Amazon CloudWatch.
Conclua as etapas a seguir:
- Crie uma nova configuração de endpoint sem servidor com ProvisionedConcurrency menor ou igual a MaxConcurrency.
Exemplo de configuração:
Observação: substitua YourVariantName pelo nome da sua variante e YourModelName pelo nome do seu modelo. Substitua NewMemorySize pelo limite de tamanho de memória. O valor máximo que é possível usar é 6 GB.import boto3 client = boto3.client('sagemaker', region_name='us-east-1') endpoint_config_name = "new-endpoint-config" endpoint_config_response = client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": YourVariantName, "ModelName": YourModelName, "ServerlessConfig": { "MemorySizeInMB": NewMemorySize, "MaxConcurrency": 1, "ProvisionedConcurrency": 1, }, }, ], ) - Atualize o endpoint com a nova configuração.
Exemplo:endpoint_name = 'my-serverless-endpoint' update_endpoint_response = client.update_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name )
Observação: é uma prática recomendada usar o kit de ferramentas de benchmarking de inferência do SageMaker AI sem servidor para determinar a configuração de implantação mais eficiente para seu endpoint sem servidor.
Informações relacionadas
Implante modelos com Interferência Sem Servidor do Amazon SageMaker AI
- Tópicos
- Machine Learning & AIStorage
- Tags
- Amazon SageMaker
- Idioma
- Português

Conteúdo relevante
- feita há um ano
- feita há um ano