View a markdown version of this page

Configure os limites de solicitação para a implantação do seu modelo de HyperPod inferência - SageMaker Inteligência Artificial 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 os limites de solicitação para a implantação do seu modelo de HyperPod inferência

Você pode configurar a limitação de solicitações nas 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 é imposta pelo proxy auxiliar nginx que é executado junto com o contêiner do modelo. Isso exige que as métricas sejam habilitadas em sua implantação.

Pré-requisitos

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

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

Configure os 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 nginx sidecar aceita por pod. Quando o limite é atingido, as novas solicitações são enfileiradas (se estiverem maxQueueSize 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 na fila quando o limite de solicitações simultâneas é atingido. 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, nenhum enfileiramento será aplicado — 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 da 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ê quer 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 secundário 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á enfileirada 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 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 enfileirar:

requestLimits: maxConcurrentRequests: 5 overflowStatusCode: 429

Limite de simultaneidade com filas

Para permitir uma fila pequena 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 são colocadas na fila e aguardam por um slot ativo. A 16ª solicitação e versões posteriores recebem HTTP 503.