

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

# HyperPod 推論モデルのデプロイのリクエスト制限を設定する
<a name="sagemaker-hyperpod-model-deployment-request-limits"></a>

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

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

## 前提条件
<a name="sagemaker-hyperpod-model-deployment-request-limits-prereqs"></a>

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

## デプロイ YAML でリクエスト制限を設定する
<a name="sagemaker-hyperpod-model-deployment-request-limits-configure"></a>

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"
```

## フィールドの説明
<a name="sagemaker-hyperpod-model-deployment-request-limits-fields"></a>

`maxConcurrentRequests` (オプション、整数)  
nginx サイドカープロキシがポッドごとに受け入れる同時リクエストの最大数。制限に達すると、新しいリクエストはキューに入れられるか ( `maxQueueSize` が設定されている場合）、オーバーフローステータスコードですぐに拒否されます。最小値: 1。設定または 0 に設定しない場合、同時実行数の制限は適用されません。

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

`overflowStatusCode` (オプション、整数)  
リクエスト制限を超えたときに返される HTTP ステータスコード。400～599 の範囲である必要があります。デフォルト: 429 (リクエストが多すぎます）。共通の値:  
+ `429` — リクエストが多すぎます (デフォルト）。レート制限の標準 HTTP ステータス。
+ `503` — サービスを使用できません。ロードバランサーが別のポッドで再試行する場合に役立ちます。

## リクエスト制限の仕組み
<a name="sagemaker-hyperpod-model-deployment-request-limits-how-it-works"></a>

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

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

1. 制限に達し、0 より大きい`maxQueueSize`場合、リクエストはキューに入れられ、アクティブなスロットが利用可能になるまで (最大 60 秒) 待機します。

1. キューがいっぱいの場合 (またはキューが設定されていない場合）、リクエストは設定済みの `overflowStatusCode` と JSON エラーレスポンスですぐに拒否されます。

   ```
   {
     "error": "Too many concurrent requests",
     "max_concurrent": 10,
     "max_queue_size": 5,
     "current": 10
   }
   ```

## 例
<a name="sagemaker-hyperpod-model-deployment-request-limits-examples"></a>

**キューに入れない厳密な同時実行制限**

キューに入れずに余分なリクエストをすぐに拒否するには:

```
requestLimits:
  maxConcurrentRequests: 5
  overflowStatusCode: 429
```

**キューイングでの同時実行数の制限**

拒否する前に小さなキューを許可するには:

```
requestLimits:
  maxConcurrentRequests: 10
  maxQueueSize: 5
  overflowStatusCode: 503
```

この設定では、最大 10 個のリクエストが同時に処理されます。11 ～ 15 番目のリクエストが到着すると、キューに入れられ、アクティブなスロットが待機します。16 番目のリクエスト以降は HTTP 503 を受け取ります。