本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 HyperPod 推論模型部署的請求限制
您可以在 Amazon SageMaker HyperPod 推論模型部署上設定請求限制,以控制每個 Pod 接受的並行請求數量。達到限制時,多餘的請求會收到可設定的 HTTP 錯誤回應,啟用快速故障行為,並允許負載平衡器將流量重新導向至其他 Pod。
請求限制是由與模型容器一起執行的 nginx 附屬代理強制執行。這需要在部署上啟用指標。
先決條件
在設定請求限制之前,請確認:
-
指標會在您的部署上啟用 (
metrics.enabled: true)。只有在啟用指標時,才會建立強制執行請求限制的 nginx 附屬代理。
在部署 YAML 中設定請求限制
在 InferenceEndpointConfig YAML worker中新增 下的 requestLimits區段。下列範例會將每個 Pod 限制為 10 個並行請求,佇列為 5,並在超過限制時傳回 HTTP 503。
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"
欄位說明
maxConcurrentRequests(選用,整數)-
nginx 附屬代理每個 Pod 接受的並行請求數目上限。達到限制時,新的請求會排入佇列 (如果
maxQueueSize已設定),或使用溢位狀態碼立即拒絕。下限:1。如果未設定或設定為 0,則不會強制執行並行限制。 maxQueueSize(選用,整數)-
達到並行請求限制時佇列的請求數量上限。佇列請求會等到處理中的請求完成。當佇列已滿時,新的請求會收到溢出狀態碼回應。下限:0。如果未將 設定為 0,則不會套用佇列 - 當達到並行請求限制時,會立即拒絕請求。
overflowStatusCode(選用,整數)-
超過請求限制時傳回的 HTTP 狀態碼。必須介於 400 到 599 之間。預設:429 (太多請求)。常見值:
-
429— 太多請求 (預設)。速率限制的標準 HTTP 狀態。 -
503— 服務無法使用。當您希望負載平衡器在不同的 Pod 上重試時很有用。
-
請求限制的運作方式
當推論請求送達 nginx 附屬代理時:
-
如果作用中請求的數量低於
maxConcurrentRequests,則請求會轉送到模型容器。 -
如果達到限制且
maxQueueSize大於 0,請求會排入佇列,並等待 (最多 60 秒) 作用中的插槽變成可用。 -
如果佇列已滿 (或未設定佇列),則會立即拒絕已設定
overflowStatusCode和 JSON 錯誤回應的請求:{ "error": "Too many concurrent requests", "max_concurrent": 10, "max_queue_size": 5, "current": 10 }
範例
無佇列的嚴格並行限制
若要立即拒絕多餘的請求而不進行佇列:
requestLimits: maxConcurrentRequests: 5 overflowStatusCode: 429
與佇列的並行限制
若要在拒絕之前允許小型佇列:
requestLimits: maxConcurrentRequests: 10 maxQueueSize: 5 overflowStatusCode: 503
在此組態中,最多會同時處理 10 個請求。當第 11 個到第 15 個請求送達時,它們會排入佇列並等待作用中的插槽。第 16 個請求及之後的請求會收到 HTTP 503。