Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configura i limiti di richiesta per la distribuzione del tuo modello di inferenza HyperPod
Puoi configurare la limitazione delle richieste sulle implementazioni del tuo modello di SageMaker HyperPod inferenza Amazon per controllare il numero di richieste simultanee accettate da ogni pod. Quando viene raggiunto il limite, le richieste in eccesso ricevono una risposta di errore HTTP configurabile, che consente un comportamento rapido e consente al sistema di bilanciamento del carico di reindirizzare il traffico verso altri pod.
La limitazione delle richieste viene applicata dal proxy sidecar nginx che funziona insieme al contenitore del modello. Ciò richiede che le metriche siano abilitate nella distribuzione.
Prerequisiti
Prima di configurare i limiti delle richieste, verifica che:
-
Le metriche sono abilitate nella distribuzione ()
metrics.enabled: true. Il proxy sidecar nginx che impone i limiti delle richieste viene creato solo quando le metriche sono abilitate.
Configura i limiti di richiesta nella tua implementazione (YAML)
Aggiungi la requestLimits sezione sottostante worker nel tuo InferenceEndpointConfig YAML. L'esempio seguente limita ogni pod a 10 richieste simultanee con una coda di 5, restituendo HTTP 503 quando i limiti vengono superati.
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"
Spiegazione dei campi
maxConcurrentRequests(Facoltativo, Numero intero)-
Numero massimo di richieste simultanee che il proxy nginx sidecar accetta per pod. Quando viene raggiunto il limite, le nuove richieste vengono messe in coda (se configurato) o immediatamente rifiutate con
maxQueueSizeil codice di stato dell'overflow. Minimo: 1. Se non è impostato o impostato su 0, non viene applicato alcun limite di concorrenza. maxQueueSize(Facoltativo, Numero intero)-
Numero massimo di richieste da mettere in coda quando viene raggiunto il limite di richieste simultanee. Le richieste in coda attendono il completamento di una richiesta in corso. Quando la coda è piena, le nuove richieste ricevono la risposta del codice di stato dell'overflow. Minimo: 0 Se non è impostata o è impostata su 0, non viene applicata alcuna coda: le richieste vengono rifiutate immediatamente quando viene raggiunto il limite di richieste simultanee.
overflowStatusCode(Facoltativo, Numero intero)-
Codice di stato HTTP restituito quando vengono superati i limiti di richiesta. Deve essere compreso tra 400 e 599. Valore predefinito: 429 (troppe richieste). Valori comuni:
-
429— Troppe richieste (impostazione predefinita). Stato HTTP standard per la limitazione della velocità. -
503— Servizio non disponibile. Utile quando si desidera che il load balancer riprovi su un altro pod.
-
Come funziona la limitazione delle richieste
Quando una richiesta di inferenza arriva al proxy sidecar nginx:
-
Se il numero di richieste attive è inferiore
maxConcurrentRequests, la richiesta viene inoltrata al contenitore del modello. -
Se il limite viene raggiunto ed
maxQueueSizeè maggiore di 0, la richiesta viene messa in coda e attende (fino a 60 secondi) che uno slot attivo diventi disponibile. -
Se la coda è piena (o non è configurata alcuna coda), la richiesta viene immediatamente rifiutata con la risposta di errore configurata
overflowStatusCodee JSON:{ "error": "Too many concurrent requests", "max_concurrent": 10, "max_queue_size": 5, "current": 10 }
Esempi
Limite di concorrenza rigoroso senza code
Per rifiutare immediatamente le richieste in eccesso senza metterle in coda:
requestLimits: maxConcurrentRequests: 5 overflowStatusCode: 429
Limite di concorrenza con accodamento
Per consentire una piccola coda prima di rifiutare:
requestLimits: maxConcurrentRequests: 10 maxQueueSize: 5 overflowStatusCode: 503
In questa configurazione, vengono elaborate contemporaneamente fino a 10 richieste. Quando arrivano le richieste dall'undicesima alla quindicesima, vengono messe in coda e attendono uno slot attivo. La sedicesima richiesta e oltre riceve HTTP 503.