翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
HyperPod 推論モデルのデプロイのリクエスト制限を設定する
Amazon SageMaker HyperPod 推論モデルのデプロイでリクエスト制限を設定して、各ポッドが受け入れる同時リクエストの数を制御できます。制限に達すると、超過リクエストは設定可能な HTTP エラーレスポンスを受け取り、フェイルファスト動作を有効にし、ロードバランサーがトラフィックを他のポッドにリダイレクトできるようにします。
リクエストの制限は、モデルコンテナと一緒に実行される nginx サイドカープロキシによって適用されます。これには、デプロイでメトリクスを有効にする必要があります。
前提条件
リクエスト制限を設定する前に、以下を確認してください。
-
メトリクスはデプロイ () で有効になっています
metrics.enabled: true。リクエスト制限を適用する nginx サイドカープロキシは、メトリクスが有効になっている場合にのみ作成されます。
デプロイ YAML でリクエスト制限を設定する
YAML InferenceEndpointConfig の workerに requestLimitsセクションを追加します。次の例では、各ポッドを 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 サイドカープロキシに到着すると、次のようになります。
-
アクティブなリクエストの数が を下回ると
maxConcurrentRequests、リクエストはモデルコンテナに転送されます。 -
制限に達し、0 より大きい
maxQueueSize場合、リクエストはキューに入れられ、アクティブなスロットが利用可能になるまで (最大 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 を受け取ります。