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.
Tópicos
- Invoque um endpoint de vários contêineres com invocação direta
- Segurança com um endpoint de vários contêineres com invocação direta
- Métricas para endpoints de vários contêineres com invocação direta
- Escalabilidade automática de endpoints com vários contêineres
- Solucionar problemas de endpoints 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_endpointTargetContainerHostname
.
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. ContainerLatency inclui 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.