Use um endpoint de vários contêineres com invocação direta - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Use um endpoint de vários contêineres com invocação direta

SageMaker endpoints de vários contêineres permitem que os clientes implantem vários contêineres para implantar modelos diferentes em um SageMaker endpoint. Você pode hospedar até 15 contêineres de inferência diferentes em um único endpoint. Quando usar a invocação direta, você pode enviar uma solicitação para um contêiner de inferência específico hospedado em um endpoint de vários contêineres.

Invoque um endpoint de vários contêineres com invocação direta

Para invocar um endpoint de vários contêineres com invocação direta, chame invoke_endpoint como você invocaria qualquer outro endpoint e especifique qual contêiner você deseja invocar usando o parâmetro TargetContainerHostname.

O exemplo a seguir invoca diretamente o secondContainer de um endpoint de vários contêineres para obter uma previsão.

import boto3 runtime_sm_client = boto3.Session().client('sagemaker-runtime') response = runtime_sm_client.invoke_endpoint( EndpointName ='my-endpoint', ContentType = 'text/csv', TargetContainerHostname='secondContainer', Body = body)

Para cada solicitação de invocação direta para um endpoint de vários contêineres, somente o contêiner com o TargetContainerHostname processa a solicitação de invocação. Você receberá erros de validação se fizer o seguinte:

  • Especifique um TargetContainerHostname que não exista no endpoint

  • Não especifique um valor para TargetContainerHostname em uma solicitação para um endpoint configurado para invocação direta

  • Especifique um valor para TargetContainerHostname em uma solicitação para um endpoint que não esteja configurado para invocação direta.

Segurança com um endpoint de vários contêineres com invocação direta

Para endpoints de vários contêineres com invocação direta, há vários contêineres hospedados em uma única instância por meio do compartilhamento de memória e um volume de armazenamento. É sua responsabilidade usar contêineres seguros, manter o mapeamento correto das solicitações para os contêineres de destino e fornecer aos usuários o acesso correto aos contêineres de destino. SageMakerusa funções do IAM para fornecer políticas baseadas em identidade do IAM que você usa para especificar se o acesso a um recurso é permitido ou negado a essa função e sob quais condições. Para obter informações sobre funções do IAM, consulte Funções do IAM no AWS Identity and Access Management Manual do usuário. Para obter informações sobre as políticas baseadas em identidade, consulte Políticas baseadas em identidade e políticas baseadas em recursos.

Por padrão, um principal do IAM com permissões InvokeEndpoint em um endpoint de vários contêineres com invocação direta pode invocar qualquer contêiner dentro do endpoint com o nome do endpoint que você especifica ao chamar invoke_endpoint. Se você precisar restringir o acesso invoke_endpoint a um conjunto limitado de contêineres dentro de um endpoint de vários contêineres, use a chave de condição do IAM sagemaker:TargetContainerHostname. As políticas a seguir mostram como limitar as chamadas para contêineres específicos em um endpoint.

A política a seguir permite solicitações invoke_endpoint somente quando o valor do campo TargetContainerHostname corresponde a uma das expressões regulares especificadas.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name", "Condition": { "StringLike": { "sagemaker:TargetContainerHostname": ["customIps*", "common*"] } } } ] }

A política a seguir nega solicitações invoke_endpoint somente quando o valor do campo TargetContainerHostname corresponde a uma das expressões regulares especificadas na declaração Deny.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name", "Condition": { "StringLike": { "sagemaker:TargetContainerHostname": ["*"] } } }, { "Action": [ "sagemaker:InvokeEndpoint" ], "Effect": "Deny", "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name", "Condition": { "StringLike": { "sagemaker:TargetContainerHostname": ["special*"] } } } ] }

Para obter informações sobre chaves de SageMaker condição, consulte Chaves de condição SageMaker no Guia AWS Identity and Access Management do usuário.

Métricas para endpoints de vários contêineres com invocação direta

Além das métricas de endpoint listadas emMonitore a Amazon SageMaker com a Amazon CloudWatch, SageMaker também fornece métricas por contêiner.

As métricas por contêiner para endpoints de vários contêineres com invocação direta estão localizadas CloudWatch e categorizadas em dois namespaces: e. AWS/SageMaker aws/sagemaker/Endpoints O AWS/SageMaker namespace inclui métricas relacionadas à invocação, e o namespace aws/sagemaker/Endpoints inclui métricas de utilização de memória e CPU.

A tabela a seguir lista as métricas por contêiner para endpoints de vários contêineres com invocação direta. Todas as métricas usam a dimensão [EndpointName, VariantName, ContainerName], que filtra as métricas em um endpoint específico, para uma variante específica e corresponde a um contêiner específico. Essas métricas compartilham os mesmos nomes das métricas dos pipelines de inferência, mas em um nível por contêiner [EndpointName, VariantName, ContainerName].

Nome da métrica Descrição Dimensão NameSpace
Invocations O número de solicitações InvokeEndpoint enviadas para um contêiner dentro de um endpoint. Para obter o número total de solicitações enviadas para esse contêiner, use a estatística Sum. Unidades: nenhuma estatística válida: Sum, Sample Count EndpointName, VariantName, ContainerName AWS/SageMaker
Invocation4XX Errors O número de solicitações InvokeEndpoint em que o modelo retornou um código de resposta HTTP 4xx para um contêiner específico. Para cada 4xx resposta, SageMaker envia um1. Unidades: nenhuma estatística válida: Average, Sum EndpointName, VariantName, ContainerName AWS/SageMaker
Invocation5XX Errors O número de solicitações InvokeEndpoint em que o modelo retornou um código de resposta HTTP 5xx para um contêiner específico. Para cada 5xx resposta, SageMaker envia um1. Unidades: nenhuma estatística válida: Average, Sum EndpointName, VariantName, ContainerName AWS/SageMaker
ContainerLatency O tempo necessário para que o contêiner de destino respondesse conforme visualizado SageMaker. ContainerLatencyinclui o tempo necessário para enviar a solicitação, buscar a resposta do contêiner do modelo e concluir a inferência no contêiner. Unidades: estatísticas válidas em microssegundos:Average, Sum,Min, Max, Sample Count EndpointName, VariantName, ContainerName AWS/SageMaker
OverheadLatency O tempo adicionado ao tempo gasto para responder a uma solicitação do cliente devido SageMaker à sobrecarga. OverheadLatencyé medido a partir do momento em que SageMaker recebe a solicitação até que ela retorne uma resposta ao cliente, menos o. ModelLatency A latência de sobrecarga pode variar dependendo de tamanhos de carga útil de solicitações e respostas, frequência de solicitações e autenticação ou autorização da solicitação, entre outros fatores. Unidades: estatísticas válidas em microssegundos: `Contagem de amostras` Average, Sum, Min, Max EndpointName, VariantName, ContainerName AWS/SageMaker
CPUUtilization O percentual de unidades de CPU usadas por cada contêiner em execução em uma instância. O valor varia de 0% a 100% e é multiplicado pelo número de CPUs. Por exemplo, se houver quatro CPUs, CPUUtilization poderá variar de 0% a 400%. Para endpoints com invocação direta, o número de métricas de utilização da CPU é igual ao número de contêineres nesse endpoint. Unidades: percentual EndpointName, VariantName, ContainerName aws/sagemaker/Endpoints
MemoryUtilizaton O percentual de memória usada por cada contêiner em execução em uma instância. Esse valor varia de 0% a 100%. Semelhante à utilização da CPU, em endpoints com invocação direta, o número de MemoryUtilization métricas é igual ao número de contêineres nesse endpoint. Unidades: percentual EndpointName, VariantName, ContainerName aws/sagemaker/Endpoints

Todas as métricas na tabela anterior são específicas para endpoints de vários contêineres com invocação direta. Além dessas métricas especiais por contêiner, também há métricas no nível da variante com a dimensão [EndpointName, VariantName] de todas as métricas ContainerLatency esperadas na tabela.

Escalabilidade automática de endpoints com vários contêineres

Se você quiser configurar o escalonamento automático para um endpoint de vários contêineres usando a métrica InvocationsPerInstance, recomendamos que o modelo em cada contêiner exiba utilização e latência de CPU semelhantes em cada solicitação de inferência. Isso é recomendado porque, se o tráfego para o endpoint de vários contêineres mudar de um modelo de baixa utilização da CPU para um modelo de alta utilização da CPU, mas o volume geral de chamadas permanecer o mesmo, o endpoint não se expandirá e talvez não haja instâncias suficientes para lidar com todas as solicitações do modelo de alta utilização da CPU. Para obter informações sobre a endpoints de escalabilidade automática, consulte Dimensione automaticamente os SageMaker modelos da Amazon.

Solucionar problemas de endpoints de vários contêineres

As seções a seguir podem ajudar a solucionar erros em endpoints de vários contêineres.

Erros do Ping Health Check

Com vários contêineres, a memória do endpoint e a CPU estão sob maior pressão durante a criação do endpoint. Especificamente, as métricas MemoryUtilization e CPUUtilization são mais altas do que as dos terminais de um único contêiner, porque a pressão de utilização é proporcional ao número de contêineres. Por isso, recomendamos que você escolha tipos de instância com memória e CPU suficientes para garantir que haja memória suficiente na instância para carregar todos os modelos (a mesma orientação se aplica à implantação de um pipeline de inferência). Caso contrário, a criação do endpoint poderá falhar com um erro como XXX did not pass the ping health check.

Falta o accept-bind-to-port rótulo = verdadeiro do Docker

Os contêineres em endpoints de vários contêiners escutam na porta especificada na variável de ambiente SAGEMAKER_BIND_TO_PORT em vez da porta 8080. Quando um contêiner é executado em um endpoint de vários contêineres, fornece SageMaker automaticamente essa variável de ambiente ao contêiner. Se essa variável de ambiente não estiver presente, os contêineres padrão usam a porta 8080. Para indicar que o contêiner está em conformidade com esse requisito, use o comando a seguir para adicionar um rótulo ao Dockerfile:

LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true

Caso contrário, você verá uma mensagem de erro como Your Ecr Image XXX does not contain required com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true Docker label(s).

Se o seu contêiner precisar escutar em uma segunda porta, escolha uma porta no intervalo especificado pela variável de ambiente SAGEMAKER_SAFE_PORT_RANGE. Especifique o valor como um intervalo inclusivo no formato XXXX - AAAA, em que XXXX e AAAA são números inteiros de vários dígitos. SageMaker fornece esse valor automaticamente quando você executa o contêiner em um endpoint de vários contêineres.