Utilice un punto de conexión multicontenedor con invocación directa - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Utilice un punto de conexión multicontenedor con invocación directa

SageMaker Los puntos finales con varios contenedores permiten a los clientes implementar varios contenedores para implementar diferentes modelos en un punto final. SageMaker Puede alojar hasta 15 contenedores de inferencia diferentes en un único punto de conexión. Al utilizar la invocación directa, puede enviar una solicitud a un contenedor de inferencia específico alojado en un punto de conexión multicontenedor.

Invoque un punto de conexión multicontenedor con invocación directa

Para invocar un punto de conexión multicontenedor con invocación directa, llame a invoke_endpoint como lo haría con cualquier otro punto de conexión y especifique qué contenedor desea invocar mediante el parámetro TargetContainerHostname.

En el siguiente ejemplo, se invoca directamente el secondContainer de un punto de conexión multicontenedor para obtener una predicción.

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 solicitud de invocación directa a un punto de conexión multicontenedor, solo el contenedor con TargetContainerHostname procesa la solicitud de invocación. Se producirán errores de validación si realiza alguna de las siguientes acciones:

  • Especificar un TargetContainerHostname que no exista en el punto de conexión

  • No especifique un valor para TargetContainerHostname en una solicitud a un punto de conexión configurado para invocación directa

  • No especifique un valor para TargetContainerHostname en una solicitud a un punto de conexión configurado para invocación directa.

Seguridad con puntos de conexión multicontenedor con invocación directa

En el caso de puntos de conexión multicontenedor con invocación directa, hay varios contenedores alojados en una sola instancia que comparten memoria y un volumen de almacenamiento. Es su responsabilidad utilizar contenedores seguros, mantener el mapeo correcto de las solicitudes a los contenedores de destino y proporcionar a los usuarios el acceso correcto a los contenedores de destino. SageMakerutiliza las funciones de IAM para proporcionar políticas de IAM basadas en la identidad que se utilizan para especificar si se permite o deniega el acceso a un recurso a esa función y en qué condiciones. Para obtener más información acerca de los roles de IAM, consulte Roles de IAM en la AWS Identity and Access Management Guía del usuario. Para obtener más información acerca de las políticas basadas en recursos, consulte Políticas basadas en identidad y políticas basadas en recursos.

De forma predeterminada, una entidad principal de IAM con InvokeEndpoint permisos en un punto de conexión multicontenedor y con invocación directa puede invocar cualquier contenedor situado dentro del punto de conexión con el nombre que especifique al llamar a invoke_endpoint. Si necesita restringir el invoke_endpoint acceso a un conjunto limitado de contenedores dentro de un punto de conexión multicontenedor, utilice la clave de condición de IAM sagemaker:TargetContainerHostname. Las siguientes políticas muestran cómo limitar las llamadas a contenedores específicos dentro de un punto de conexión.

La siguiente política permite solicitudes invoke_endpoint solo cuando el valor del campo TargetContainerHostname coincide con una de las expresiones 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*"] } } } ] }

La siguiente política deniega solicitudes invoke_endpoint solo cuando el valor del campo TargetContainerHostname coincide con una de las expresiones regulares especificadas de la declaración 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 obtener información sobre las claves de SageMaker condición, consulte las claves de condición SageMaker en la Guía del usuario.AWS Identity and Access Management

Métricas de puntos de conexión multicontenedor con invocación directa

Además de las métricas de punto final que aparecen enSupervisa Amazon SageMaker con Amazon CloudWatch, SageMaker también proporciona métricas por contenedor.

Las métricas por contenedor para los puntos finales de varios contenedores con invocación directa se ubican en dos espacios de nombres y se clasifican en dos espacios de nombres: CloudWatch y. AWS/SageMaker aws/sagemaker/Endpoints El espacio de nombres AWS/SageMaker incluye métricas relacionadas con la invocación y el espacio de nombres aws/sagemaker/Endpoints incluye métricas de uso de memoria y CPU.

En la siguiente tabla, se enumeran las métricas por contenedor para los puntos de conexión multicontenedor con invocación directa. Todas las métricas utilizan la dimensión [EndpointName, VariantName, ContainerName], que filtra las métricas en un punto de conexión específico, para una variante específica y correspondientes a un contenedor específico. Estas métricas comparten los mismos nombres de métrica que las de las canalizaciones de inferencia, pero a nivel de contenedor [EndpointName, VariantName, ContainerName].

Nombre de métrica Descripción Dimensión NameSpace
Invocations El número de solicitudes InvokeEndpoint enviadas a un contenedor dentro de un punto de conexión. Para obtener el número total de solicitudes enviadas a un contenedor, utilice la estadística Sum. Unidades: ninguna Estadísticas válidas: Sum, Sample Count EndpointName, VariantName, ContainerName AWS/SageMaker
Invocation4XX Errors El número de solicitudes InvokeEndpoint para el que el modelo devolvió un código de respuesta HTTP en un contenedor específico 4xx. Para cada respuesta, envía un. 4xx SageMaker 1 Unidades: ninguna Estadísticas válidas: Average, Sum EndpointName, VariantName, ContainerName AWS/SageMaker
Invocation5XX Errors El número de solicitudes InvokeEndpoint para el que el modelo devolvió un código de respuesta HTTP en un contenedor específico 5xx. Para cada 5xx respuesta, SageMaker envía un1. Unidades: ninguna Estadísticas válidas: Average, Sum EndpointName, VariantName, ContainerName AWS/SageMaker
ContainerLatency El tiempo que tardó el contenedor de destino en responder visto desde SageMaker. ContainerLatencyincluye el tiempo que se tardó en enviar la solicitud, obtener la respuesta del contenedor del modelo y completar la inferencia en el contenedor. Unidades: microsegundos Estadísticas válidas: Average, Sum, Min, Max, Sample Count EndpointName, VariantName, ContainerName AWS/SageMaker
OverheadLatency El tiempo que se suma al tiempo necesario para responder a la solicitud de un cliente en concepto de gastos SageMaker generales. OverheadLatencyse mide desde el momento en que se SageMaker recibe la solicitud hasta que devuelve una respuesta al cliente, menos elModelLatency. La latencia de sobrecargas puede variar en función de los tamaños de carga de solicitud y respuesta, la frecuencia de solicitud y la autenticación o la autorización de la solicitud, entre otros factores. Unidades: microsegundos Estadísticas válidas: Average, Sum, Min, Max, “Recuento de muestras” EndpointName, VariantName, ContainerName AWS/SageMaker
CPUUtilization El porcentaje de unidades de CPU usadas por cada contenedor que se ejecutan en una instancia. El valor oscila entre 0 % y 100 %, y se multiplica por el número de CPU. Por ejemplo, si hay cuatro CPU, CPUUtilization puede oscilar entre 0 % y 400 %. En el caso de los puntos de conexión con invocación directa, el número de métricas de utilización de la CPU es igual al número de contenedores de ese punto de conexión. Unidades: porcentaje EndpointName, VariantName, ContainerName aws/sagemaker/Endpoints
MemoryUtilizaton El porcentaje de memoria que utiliza cada contenedor que se ejecuta en una instancia. Este valor oscila entre 0 % y 100 %. Al igual que la utilización de la CPU, en los puntos finales con invocación directa, el número de MemoryUtilization métricas es igual al número de contenedores de ese punto final. Unidades: porcentaje EndpointName, VariantName, ContainerName aws/sagemaker/Endpoints

Todas las métricas de la tabla anterior son específicas de los puntos de conexión multicontenedor con invocación directa. Además de estas métricas especiales por contenedor, también hay métricas a nivel de variante con dimensiones [EndpointName, VariantName] para todas las métricas de la tabla previstas ContainerLatency.

Puntos de conexión multicontenedor

Si desea configurar el escalado automático para un punto de conexión multicontenedor mediante la métrica InvocationsPerInstance, le recomendamos que el modelo de cada contenedor muestre un uso de la CPU y una latencia similares en cada solicitud de inferencia. Esto se recomienda porque si el tráfico al punto de conexión multicontenedor pasa de un modelo de bajo uso de CPU a un modelo de alto uso de CPU, pero el volumen total de llamadas sigue siendo el mismo, el punto de conexión no se amplía y es posible que no haya suficientes instancias para gestionar todas las solicitudes al modelo de alto uso de CPU. Para obtener información sobre la configuración del escalado automático de puntos de conexión, consulte Escala automáticamente los SageMaker modelos de Amazon.

Solución de problemas de puntos de conexión multicontenedor

Las siguientes secciones pueden ayudarle a solucionar errores de puntos de conexión multicontenedor.

Errores de comprobación de estado de ping

Con varios contenedores, la memoria y CPU del punto de conexión están sometidas a una mayor presión durante la creación del punto de conexión. En concreto, las métricas MemoryUtilization y CPUUtilization son más altas que las de los puntos de conexión de un solo contenedor, ya que la presión de utilización es proporcional al número de contenedores. Por este motivo, le recomendamos que elija tipos de instancias con suficiente memoria y CPU para asegurarse de que la instancia dispone de memoria suficiente para cargar todos los modelos (la misma guía se aplica a la implementación de una canalización de inferencia). De lo contrario, es posible que no se pueda crear el punto de conexión y se produzca un error como XXX did not pass the ping health check.

Falta la etiqueta Docker = true accept-bind-to-port

Los contenedores de un punto de conexión multicontenedor escuchan en el puerto especificado en la variable de entorno SAGEMAKER_BIND_TO_PORT en lugar de puerto 8080. Cuando un contenedor se ejecuta en un punto final con varios contenedores, proporciona SageMaker automáticamente esta variable de entorno al contenedor. Si esta variable de entorno no está presente, los contenedores de manera predeterminada asignan el uso del puerto 8080. Para indicar que el contenedor cumple con este requisito, ejecute el siguiente comando para añadir una etiqueta a su Dockerfile:

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

De lo contrario, aparecerá un mensaje de error como Your Ecr Image XXX does not contain required com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true Docker label(s).

Si su contenedor necesita escuchar en otro puerto, elija un puerto que esté en el intervalo especificado por la variable de entorno SAGEMAKER_SAFE_PORT_RANGE. Especifique el valor como un rango inclusivo en el formato XXXX - AAAA, donde XXXX y AAAA son números enteros de varios dígitos. SageMaker proporciona este valor automáticamente al ejecutar el contenedor en un punto final con varios contenedores.