View a markdown version of this page

Configure los límites de solicitud para la implementación de su modelo de HyperPod inferencia - Amazon SageMaker AI

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 maxQueueSize se 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:

  1. Si el número de solicitudes activas es inferiormaxConcurrentRequests, la solicitud se reenvía al contenedor modelo.

  2. Si se alcanza el límite y maxQueueSize es superior a 0, la solicitud se pone en cola y espera (hasta 60 segundos) a que quede disponible un espacio activo.

  3. Si la cola está llena (o no hay ninguna cola configurada), la solicitud se rechaza inmediatamente con la configuración overflowStatusCode y 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.