View a markdown version of this page

設定 HyperPod 推論模型部署的請求限制 - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 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 附屬代理時:

  1. 如果作用中請求的數量低於 maxConcurrentRequests,則請求會轉送到模型容器。

  2. 如果達到限制且maxQueueSize大於 0,請求會排入佇列,並等待 (最多 60 秒) 作用中的插槽變成可用。

  3. 如果佇列已滿 (或未設定佇列),則會立即拒絕已設定 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。