View a markdown version of this page

为您的 HyperPod 推理模型部署配置请求限制 - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为您的 HyperPod 推理模型部署配置请求限制

您可以在 Amazon SageMaker HyperPod 推理模型部署中配置请求限制,以控制每个 Pod 接受的并发请求数。当达到限制时,超出的请求会收到可配置的 HTTP 错误响应,从而实现快速失败行为,并允许负载均衡器将流量重定向到其他 pod。

请求限制由与模型容器一起运行的 nginx sidecar 代理强制执行。这需要在您的部署中启用指标。

先决条件

在配置请求限制之前,请验证:

  • 指标已在您的部署中启用 (metrics.enabled: true)。只有在启用指标时才会创建强制执行请求限制的 nginx sidecar 代理。

在部署 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 sidecar 代理每个 pod 接受的最大并发请求数。达到限制后,新请求要么排队(如果已配置)maxQueueSize,要么立即拒绝并显示溢出状态代码。最小值:1。如果未设置或设置为 0,则不强制执行并发限制。

maxQueueSize(可选,整数)

达到并发请求限制时要排队的最大请求数。排队的请求会等到正在处理的请求完成。队列已满时,新请求会收到溢出状态码响应。最小值:0。如果未设置或设置为 0,则不应用排队——当达到并发请求限制时,请求会立即被拒绝。

overflowStatusCode(可选,整数)

超出请求限制时返回的 HTTP 状态码。必须介于 400 和 599 之间。默认:429(请求过多)。常见取值:

  • 429— 请求过多(默认)。用于速率限制的标准 HTTP 状态。

  • 503— 服务不可用。当您希望负载均衡器在不同的 pod 上重试时很有用。

请求限制的工作原理

当推理请求到达 nginx sidecar 代理时:

  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。