View a markdown version of this page

Configure limites de solicitação para a implantação do seu modelo de HyperPod inferência - SageMaker IA da Amazon

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á.

Configure limites de solicitação para a implantação do seu modelo de HyperPod inferência

Você pode configurar a limitação de solicitações em suas implantações do modelo de SageMaker HyperPod inferência da Amazon para controlar o número de solicitações simultâneas que cada pod aceita. Quando o limite é atingido, as solicitações em excesso recebem uma resposta de erro HTTP configurável, permitindo um comportamento rápido e permitindo que o balanceador de carga redirecione o tráfego para outros pods.

A limitação de solicitações é aplicada pelo proxy auxiliar nginx que é executado junto com seu contêiner de modelo. Isso exige que as métricas sejam habilitadas em sua implantação.

Pré-requisitos

Antes de configurar os limites de solicitação, verifique se:

  • As métricas são ativadas em sua implantação (metrics.enabled: true). O proxy auxiliar nginx que impõe limites de solicitação só é criado quando as métricas estão habilitadas.

Configure limites de solicitação em seu YAML de implantação

Adicione a requestLimits seção abaixo worker em seu InferenceEndpointConfig YAML. O exemplo a seguir limita cada pod a 10 solicitações simultâneas com uma fila de 5, retornando HTTP 503 quando os limites são excedidos.

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"

Explicação dos campos

maxConcurrentRequests (opcional, inteiro)

Número máximo de solicitações simultâneas que o proxy auxiliar nginx aceita por pod. Quando o limite é atingido, as novas solicitações são colocadas na fila (se maxQueueSize estiverem configuradas) ou imediatamente rejeitadas com o código de status de estouro. Mínimo: 1. Se não for definido ou definido como 0, nenhum limite de simultaneidade será imposto.

maxQueueSize (opcional, inteiro)

Número máximo de solicitações a serem enfileiradas quando o limite de solicitações simultâneas for atingido. As solicitações em fila aguardam até que uma solicitação em voo seja concluída. Quando a fila está cheia, as novas solicitações recebem a resposta do código de status de estouro. Mínimo: 0. Se não for definido ou definido como 0, nenhuma fila será aplicada — as solicitações serão rejeitadas imediatamente quando o limite de solicitações simultâneas for atingido.

overflowStatusCode (opcional, inteiro)

Código de status HTTP retornado quando os limites de solicitação são excedidos. Deve estar entre 400 e 599. Padrão: 429 (Muitas solicitações). Valores comuns:

  • 429— Muitas solicitações (padrão). Status HTTP padrão para limitação de taxa.

  • 503— Serviço indisponível. Útil quando você deseja que o balanceador de carga tente novamente em um pod diferente.

Como funciona a limitação de solicitações

Quando uma solicitação de inferência chega ao proxy auxiliar nginx:

  1. Se o número de solicitações ativas estiver abaixomaxConcurrentRequests, a solicitação será encaminhada para o contêiner modelo.

  2. Se o limite for atingido e maxQueueSize for maior que 0, a solicitação será colocada na fila e aguardará (até 60 segundos) até que um slot ativo fique disponível.

  3. Se a fila estiver cheia (ou nenhuma fila estiver configurada), a solicitação será imediatamente rejeitada com a resposta de erro configurada overflowStatusCode e com uma resposta de erro JSON:

    { "error": "Too many concurrent requests", "max_concurrent": 10, "max_queue_size": 5, "current": 10 }

Exemplos

Limite estrito de simultaneidade sem filas

Para rejeitar solicitações em excesso imediatamente sem colocar na fila:

requestLimits: maxConcurrentRequests: 5 overflowStatusCode: 429

Limite de simultaneidade com filas

Para permitir uma pequena fila antes de rejeitar:

requestLimits: maxConcurrentRequests: 10 maxQueueSize: 5 overflowStatusCode: 503

Nessa configuração, até 10 solicitações são processadas simultaneamente. Quando as solicitações da 11ª à 15ª chegam, elas ficam na fila e aguardam por um slot ativo. A 16ª solicitação e versões posteriores recebem HTTP 503.