View a markdown version of this page

HyperPod 推論モデルのデプロイのリクエスト制限を設定する - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

HyperPod 推論モデルのデプロイのリクエスト制限を設定する

Amazon SageMaker HyperPod 推論モデルのデプロイでリクエスト制限を設定して、各ポッドが受け入れる同時リクエストの数を制御できます。制限に達すると、超過リクエストは設定可能な HTTP エラーレスポンスを受け取り、フェイルファスト動作を有効にし、ロードバランサーがトラフィックを他のポッドにリダイレクトできるようにします。

リクエストの制限は、モデルコンテナと一緒に実行される nginx サイドカープロキシによって適用されます。これには、デプロイでメトリクスを有効にする必要があります。

前提条件

リクエスト制限を設定する前に、以下を確認してください。

  • メトリクスはデプロイ () で有効になっていますmetrics.enabled: true。リクエスト制限を適用する nginx サイドカープロキシは、メトリクスが有効になっている場合にのみ作成されます。

デプロイ YAML でリクエスト制限を設定する

YAML InferenceEndpointConfigworkerrequestLimitsセクションを追加します。次の例では、各ポッドを 5 のキューを持つ 10 個の同時リクエストに制限し、制限を超えると 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 サイドカープロキシがポッドごとに受け入れる同時リクエストの最大数。制限に達すると、新しいリクエストはキューに入れられるか ( maxQueueSize が設定されている場合)、オーバーフローステータスコードですぐに拒否されます。最小値: 1。設定または 0 に設定しない場合、同時実行数の制限は適用されません。

maxQueueSize (オプション、整数)

同時リクエスト制限に達したときにキューに入れるリクエストの最大数。キューに入れられたリクエストは、処理中のリクエストが完了するまで待機します。キューがいっぱいになると、新しいリクエストはオーバーフローステータスコードレスポンスを受け取ります。最小値: 0。設定または 0 に設定しない場合、キューイングは適用されません。同時リクエスト制限に達すると、リクエストはすぐに拒否されます。

overflowStatusCode (オプション、整数)

リクエスト制限を超えたときに返される HTTP ステータスコード。400~599 の範囲である必要があります。デフォルト: 429 (リクエストが多すぎます)。共通の値:

  • 429 — リクエストが多すぎます (デフォルト)。レート制限の標準 HTTP ステータス。

  • 503 — サービスを使用できません。ロードバランサーが別のポッドで再試行する場合に役立ちます。

リクエスト制限の仕組み

推論リクエストが nginx サイドカープロキシに到着すると、次のようになります。

  1. アクティブなリクエストの数が を下回るとmaxConcurrentRequests、リクエストはモデルコンテナに転送されます。

  2. 制限に達し、0 より大きいmaxQueueSize場合、リクエストはキューに入れられ、アクティブなスロットが利用可能になるまで (最大 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 を受け取ります。