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.
Temas
- Invoque un punto de conexión multicontenedor con invocación directa
- Seguridad con puntos de conexión multicontenedor con invocación directa
- Métricas de puntos de conexión multicontenedor con invocación directa
- Puntos de conexión multicontenedor
- Solución de problemas de puntos 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_endpointTargetContainerHostname
.
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. ContainerLatency incluye 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. OverheadLatency se 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.