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.
Configure los límites de solicitud para la implementación de su modelo de HyperPod inferencia
Puede configurar la limitación de solicitudes en las implementaciones del modelo de SageMaker HyperPod inferencia de Amazon para controlar la cantidad de solicitudes simultáneas que acepta cada pod. Cuando se alcanza el límite, el exceso de solicitudes recibe una respuesta de error HTTP configurable, lo que permite un comportamiento a prueba de errores y permite que el balanceador de cargas redirija el tráfico a otros pods.
El proxy sidecar nginx que se ejecuta junto con el contenedor de modelos impone la limitación de solicitudes. Esto requiere que las métricas estén habilitadas en tu implementación.
Requisitos previos
Antes de configurar los límites de solicitudes, compruebe que:
-
Las métricas están habilitadas en su implementación (
metrics.enabled: true). El proxy sidecar nginx que impone los límites de solicitud solo se crea cuando las métricas están habilitadas.
Configura los límites de solicitudes en tu implementación (YAML).
Agrega la siguiente requestLimits sección worker en tu InferenceEndpointConfig YAML. El siguiente ejemplo limita cada pod a 10 solicitudes simultáneas con una cola de 5, y devuelve HTTP 503 cuando se superan los límites.
apiVersion: inference.sagemaker.aws.amazon.com/v1 kind: InferenceEndpointConfig metadata: name: my-model namespace: ns-team-a spec: modelName: my-model-name instanceType: ml.g5.8xlarge invocationEndpoint: invocations modelSourceConfig: modelSourceType: s3 s3Storage: bucketName: my-model-bucket region: us-east-2 modelLocation: models/my-model worker: image: my-model-image:latest modelInvocationPort: containerPort: 8080 name: http modelVolumeMount: mountPath: /opt/ml/model name: model-weights resources: limits: nvidia.com/gpu: "1" requests: cpu: "4" memory: "32Gi" nvidia.com/gpu: "1" requestLimits: maxConcurrentRequests: 10 maxQueueSize: 5 overflowStatusCode: 503 metrics: enabled: true tlsConfig: tlsCertificateOutputS3Uri: "s3://my-tls-bucket/certs"
Explicación de los campos
maxConcurrentRequests(opcional, entero)-
Número máximo de solicitudes simultáneas que el proxy sidecar nginx acepta por pod. Cuando se alcanza el límite, las nuevas solicitudes se ponen en cola (si están configuradas) o
maxQueueSizese rechazan inmediatamente con el código de estado de desbordamiento. Mínimo: 1. Si no se establece o se establece en 0, no se aplica ningún límite de simultaneidad. maxQueueSize(opcional, entero)-
Número máximo de solicitudes que se pondrán en cola cuando se alcance el límite de solicitudes simultáneas. Las solicitudes en cola esperan hasta que se complete una solicitud en curso. Cuando la cola está llena, las nuevas solicitudes reciben la respuesta del código de estado desbordante. Mínimo: 0. Si no se establece o se establece en 0, no se aplica ninguna cola: las solicitudes se rechazan inmediatamente cuando se alcanza el límite de solicitudes simultáneas.
overflowStatusCode(opcional, entero)-
Se devuelve el código de estado HTTP cuando se superan los límites de solicitudes. Debe estar entre 400 y 599. Predeterminado: 429 (demasiadas solicitudes). Valores comunes:
-
429— Demasiadas solicitudes (predeterminado). Estado HTTP estándar para limitar la velocidad. -
503— Servicio no disponible. Útil cuando quieres que el balanceador de carga se vuelva a intentar en un pod diferente.
-
Cómo funciona la limitación de solicitudes
Cuando llega una solicitud de inferencia al proxy de sidecar de nginx:
-
Si el número de solicitudes activas es inferior
maxConcurrentRequests, la solicitud se reenvía al contenedor modelo. -
Si se alcanza el límite y
maxQueueSizees superior a 0, la solicitud se pone en cola y espera (hasta 60 segundos) a que quede disponible un espacio activo. -
Si la cola está llena (o no hay ninguna cola configurada), la solicitud se rechaza inmediatamente con la configuración
overflowStatusCodey una respuesta de error de JSON:{ "error": "Too many concurrent requests", "max_concurrent": 10, "max_queue_size": 5, "current": 10 }
Ejemplos
Límite estricto de simultaneidad sin hacer cola
Para rechazar inmediatamente el exceso de solicitudes sin hacer cola:
requestLimits: maxConcurrentRequests: 5 overflowStatusCode: 429
Límite de simultaneidad con las colas
Para permitir una cola pequeña antes de rechazar:
requestLimits: maxConcurrentRequests: 10 maxQueueSize: 5 overflowStatusCode: 503
En esta configuración, se procesan hasta 10 solicitudes de forma simultánea. Cuando llegan las solicitudes undécima a decimoquinta, se ponen en cola y esperan a que se active un espacio. La decimosexta solicitud y las posteriores reciben HTTP 503.