翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SageMaker HyperPod 推論用の推論ゲートウェイ
Amazon SageMaker HyperPod Inference Gateway は、Amazon EKS 上の HyperPod クラスター用の Kubernetes ネイティブの大規模言語モデル (LLM) 対応ルーティングおよびオーケストレーションレイヤーです。推論リクエストを検査し、各リクエストからモデル名を読み取り、GPU 負荷に基づいてモデル提供ポッドを選択すると、複数のモデルのトラフィックが単一のゲートウェイエンドポイントを介して効率的にルーティングされます。
ゲートウェイは、各リクエストを 3 つのレイヤーにルーティングします。共有コンポーネントである本文ベースのルーター (BBR) は、リクエスト本文から modelフィールドを読み取り、LoRA アダプター名をベースモデルに解決し、 X-Gateway-Model-Name ヘッダーと X-Gateway-Base-Model-Nameヘッダーを設定します。次に、ゲートウェイはこれらのヘッダーを HTTPRoute に照合し、リクエストされたモデルの InferencePool にリクエストを転送します。このプール内で、Endpoint Picker (EPP/スケジューラ) は、キューの深さや KV キャッシュ使用率などのモデルサーバーメトリクスの候補をプレフィックスキャッシュや LoRA アダプターのアフィニティとともにスコアリングすることで、モデルサービスを提供するポッドを選択します。で定義する各エントリは独自の Endpoint Picker spec.schedulersを実行するため、このトピックでは Endpoint Picker、EPP、スケジューラという用語を同じ意味で使用します。
Inference Gateway は、置き換える代わりに HyperPod Inference Operator 上に構築されます。オペレーターがモデルのデプロイをオーケストレーションし続ける間、ゲートウェイはモデル提供ポッドの前に LLM 対応ルーティングレイヤーを導入します。ゲートウェイは、特定のモデルサーバーまたはオーケストレーションレイヤーに依存しず、HyperPod Inference Amazon EKS アドオンを介して配信されます。
InferenceGatewayConfig カスタムリソースを使用してゲートウェイを定義します。単一の は、共有ボディベースルーター、TLS 終了、リクエスト認証、ゲートウェイが機能するモデルごとに 1 つのスケジューラという 1 つのゲートウェイをInferenceGatewayConfig記述します。スキーマの詳細については、「」を参照してくださいInferenceGatewayConfig CRD リファレンス。
重要
前提条件とデプロイ
Inference Gateway は、HyperPod Inference Amazon EKS アドオンの一部として配信されます。アドオンをインストールするとゲートウェイが使用可能になるため、別途インストールする必要はありません。次に、モデルのInferenceEndpointConfigリソースの spec.inferenceGateway.enabledフィールドを通じてモデルのゲートウェイルーティングを有効にします。機能が導入されたバージョンについては、「」を参照してくださいAmazon SageMaker HyperPod Inference リリースノート。
ゲートウェイ経由でトラフィックをルーティングする前に、以下を確認してください。
- デプロイされたモデル提供ポッド
-
各スケジューラは、ラベルセレクタによって選択されたモデル提供ポッドにルーティングされます。HyperPod Inference Operator を使用してモデルをデプロイし、ポッドに適用されるラベルを書き留めて、ゲートウェイ設定で参照できるようにします。モデルポッドのラベルを一覧表示するには、次のコマンドを実行します。
kubectl get pods -n NAMESPACE --show-labels - モデルサーバーバージョン
-
Inference Gateway には、vLLM v0.9.2 以降と SGLang v0.3.5.post1 以降が必要です。以前の vLLM バージョンでは、KV キャッシュメトリクスはゲートウェイが読み取るものとは異なる名前で発行されます。リクエストは残りのシグナルを使用してルーティングされますが、KV キャッシュ使用率は無視され、エラーは報告されません。以前の SGLang バージョンは
--enable-metricsフラグをサポートしておらず、コンテナの起動に失敗します。ゲートウェイがルーティングの決定に必要なメトリクスを読み取れるように、このフラグで SGLang を起動します。 - [アドオンバージョン]
-
Inference Gateway はAmazon SageMaker HyperPod Inference アドオン
v2.0.0-eksbuild.2のバージョンから使用できます。利用可能な最新バージョンのアドオンをインストールまたは更新します。クラスターがInferenceGatewayConfigリソースを認識しない場合、アドオンはゲートウェイを含まない以前のバージョンを実行しています。 - クラスターの依存関係
-
-
cert-manager は、自動発行 TLS パスのクラスターにインストールする必要があります。これは、 が なしで設定されている場合にゲートウェイ
spec.tlsが使用しますacmArn。 -
Application AWS Load Balancer エンドポイントタイプにはApplication Load Balancerコントローラーをインストールする必要があります。
-
ゲートウェイは
hyperpod-inference-system名前空間を使用します。
-
- TLS 証明書
-
ゲートウェイで HTTPS を終了するには、既存の ACM 証明書 ARN を指定するか、ゲートウェイに証明書を自動発行させます。自動発行では、cert-manager を使用して証明書を ACM にインポートします。このフローでは、オペレーター実行ロールに IRSA を介した
acm:ImportCertificate、acm:DescribeCertificate、、およびacm:AddTagsToCertificateアクセスacm:DeleteCertificate許可が必要です。 - 認証のリクエスト (推奨)
-
spec.auth.jwtで を設定して、すべてのゲートウェイで JWT 認証を有効にすることを強くお勧めしますInferenceGatewayConfig。spec.authを省略すると、ゲートウェイにはリクエストレベルの認証がなく、アクセスは VPC とネットワークコントロールによってのみ制限されます。JWT 認証を有効にするには、 を作成する前に、OIDCInferenceGatewayConfig発行者 URL、発行者の署名キーを発行する HTTPS JWKS エンドポイント、およびこのゲートウェイのトークンが保持する必要があるオーディエンス値 (または必要なクレーム) を用意します。スキーマの詳細については、仕様フィールド「」のspec.auth「」を参照してください。
証明書発行者の IAM ロールを設定する
ゲートウェイが TLS 証明書を自動発行すると、cert-manager はクラスターに証明書を生成し、ゲートウェイコントローラーはそれを ACM にインポートします。インポートは AWS API コールであるため、コントローラーには AWS 認証情報が必要です。これらを提供するには、hyperpod-inference-system名前空間inference-gateway-controllerのサービスアカウントがサービスアカウント (IRSA) の IAM ロールを通じて引き受ける IAM ロールを作成します。
重要
TLS 自動発行はデフォルトで有効になっており、ゲートウェイコントローラーは起動時にこのロールを読み取ります。アドオンをインストールする前にロールを作成します。
次の環境変数を設定し、クラスターの OIDC 発行者を取得します。
export CLUSTER=EKS_CLUSTER_NAME export REGION=REGION export ACCOUNT=AWS_ACCOUNT_ID export ROLE_NAME=CERT_ISSUER_ROLE_NAME export OIDC_ID=$(aws eks describe-cluster --name $CLUSTER --region $REGION \ --query 'cluster.identity.oidc.issuer' --output text | sed 's|https://||')
ゲートウェイコントローラーサービスアカウントがロールを引き受けることを許可する信頼ポリシーを作成します。
cat > trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::${ACCOUNT}:oidc-provider/${OIDC_ID}" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "${OIDC_ID}:sub": "system:serviceaccount:hyperpod-inference-system:inference-gateway-controller", "${OIDC_ID}:aud": "sts.amazonaws.com" } } }] } EOF
ロールを作成し、 AmazonSageMakerHyperPodInferenceGatewayAccess 管理ポリシーをアタッチします。このポリシーは、コントローラーが作成する証明書をインポート、タグ付け、記述、削除するために必要な ACM アクセス許可を付与します。
aws iam create-role --role-name $ROLE_NAME --assume-role-policy-document file://trust-policy.json aws iam attach-role-policy --role-name $ROLE_NAME --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerHyperPodInferenceGatewayAccess
アドオンをインストールするinferenceGateway.serviceAccount.roleArnときに、このロール ARN を として指定します。
注記
ロールが別のクラスターから既に存在する場合は、その信頼ポリシーにこのクラスターの OIDC プロバイダーが含まれていることを確認します。
アドオンをインストールする
HyperPod Inference アドオンは、Inference Operator と Inference Gateway の両方をインストールします。次のコマンドを使用してインストールします。にはinferenceGateway.serviceAccount.roleArn、前のセクションで作成した証明書発行者ロールを使用します。残りのプレースホルダー値を、アカウントのロールとバケットに置き換えます。
aws eks create-addon \ --cluster-name $CLUSTER --region $REGION \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v2.0.0-eksbuild.2 \ --configuration-values '{ "executionRoleArn": "arn:aws:iam::<ACCOUNT>:role/<EXEC_ROLE>", "tlsCertificateS3Bucket": "<TLS_BUCKET>", "inferenceOperator": { "enabled": true }, "inferenceGateway": { "enabled": true, "serviceAccount": { "roleArn": "arn:aws:iam::<ACCOUNT>:role/<CERT_ISSUER_ROLE_NAME>" } }, "keda": { "enabled": true, "auth": { "aws": { "irsa": { "enabled": true, "roleArn": "arn:aws:iam::<ACCOUNT>:role/<KEDA_IRSA_ROLE>" } } } }, "alb": { "enabled": true, "serviceAccount": { "create": true, "roleArn": "arn:aws:iam::<ACCOUNT>:role/<ALB_IRSA_ROLE>" } }, "jumpstartGatedModelDownloadRoleArn": "arn:aws:iam::<ACCOUNT>:role/<JUMPSTART_ROLE>" }'
アドオンがクラスターに既にインストールされている場合は、 create-addonを に置き換えupdate-addonて を追加します--resolve-conflicts OVERWRITE。コマンドの残りの部分は変更されません。 はコマンドの設定値を既存のアドオン設定OVERWRITEに適用します。
ゲートウェイコントローラーが実行されていること、およびゲートウェイリソースが登録されていることを確認します。
kubectl rollout status deploy/inference-gateway-controller \ -n hyperpod-inference-system --timeout=150s kubectl get crd inferencegatewayconfigs.inference.sagemaker.aws.amazon.com kubectl get gatewayclass inference-gateway
アドオン自体がアクティブであり、ヘルスの問題がないことを確認します。
aws eks describe-addon \ --cluster-name $CLUSTER --region $REGION \ --addon-name amazon-sagemaker-hyperpod-inference \ --query 'addon.{version:addonVersion,status:status,health:health.issues}'
HyperPod Inference Operator との統合
HyperPod Inference Operator と Inference Gateway には個別の責任があります。オペレーターは、モデルのデプロイ、オーケストレーション、およびモデルをゲートウェイにアタッチするワイヤリングを所有します。ゲートウェイはリクエストルーティングを所有し、各スケジューラのルーティングリソースを生成します。演算子を使用したモデルのデプロイの詳細については、「」を参照してくださいAmazon SageMaker HyperPod にモデルをデプロイする。
- HyperPod 推論演算子
-
モデルのカスタムリソース
InferenceEndpointConfigとJumpStartModel(グループinference.sagemaker.aws.amazon.com、バージョンv1) を調整します。オペレーターは、モデルのデプロイとサービス、Application Load Balancer、KEDA 自動スケーリング、cert-manager 証明書、SageMaker AI エンドポイント登録を作成します。モデルに対してゲートウェイを有効にすると、オペレーターはそのモデルをゲートウェイにワイヤ接続します。 - 推論ゲートウェイ
-
ゲートウェイ経由の Body-Based Router から Endpoint Picker HTTPRoute へのリクエストルーティングを所有し、各スケジューラのダウンストリームルーティングリソース
InferencePool、Endpoint Picker 設定、HTTPRoute、および を生成しますEnvoyExtensionPolicy。
注記
オペレーターのモデルカスタムリソースはバージョン を使用しv1、ゲートウェイのInferenceGatewayConfigリソースはバージョン を使用しますv1alpha1。どちらも inference.sagemaker.aws.amazon.comグループに属します。
演算子、モデルの InferenceEndpointConfig (または JumpStartModel) リソース、 spec.inferenceGatewayフィールドを使用して、モデルをゲートウェイにアタッチします。
spec.inferenceGateway.enabled(オプション、ブール値)このモデルがゲートウェイにアタッチされているかどうか。デフォルト:
false。spec.inferenceGateway.name(オプション、文字列)アタッチする
InferenceGatewayConfigリソースの名前。名前空間と名前空間を共有するモデルは、1 つのゲートウェイを共有します。このフィールドが空の場合、演算子は という形式の名前を生成しますinf-igw-<uuid>。
次のスニペットは、 InferenceEndpointConfigリソースのオinferenceGatewayプトインを示しています。
apiVersion: inference.sagemaker.aws.amazon.com/v1 kind: InferenceEndpointConfig metadata: name: my-model spec: # ... model deployment fields ... inferenceGateway: enabled: true name: my-gateway # Optional. When empty, the operator generates inf-igw-<uuid>.
演算子は、、Pending、Readyまたは Stateの Failedとstatus.inferenceGateway、アタッチされた Nameの をレポートする のモデルリソースのアタッチ状態をミラーリングしますInferenceGatewayConfig。同じモデルintelligentRoutingSpec.enabledで をinferenceGateway.enabled一緒に設定することはできません。これらのフィールドは相互に排他的です。
モデルに対してゲートウェイを有効にすると、オペレータは単一のInferenceGatewayConfigリソースを作成または更新し、モデルのエントリをそのspec.schedulersリストにマージします。演算子は、スケジューラ name、modelName、targetPort、および を設定しmodelSelector、エントリを最初に作成llm-dするときにデフォルトを schedulerに設定します。後の照合では、演算子は scheduler、、 weightsなどのお客様が指定した値を保持しますloraAdapters。複数のスケジューラが存在する場合、本文ベースのルーターは自動的に有効になります。
オペレーターは、InferenceGatewayConfigリソースまたはダウンストリームルーティングリソースを削除しません。モデルのゲートウェイを無効にするか、モデルを削除すると、オペレーターはそのモデルのスケジューラエントリのみを削除します。ゲートウェイコントローラーは、ルーティングリソースのクリーンアップを所有しています。
は 2 つのInferenceGatewayConfig方法で作成でき、2 つのパスは同じリソースに共存します。
-
モデルの
spec.inferenceGateway.enabledで を設定して、 演算子を使用してモデルごとにゲートウェイを有効にしますInferenceEndpointConfig。オペレーターは、モデルのスケジューラエントリを作成して維持します。 -
「」に示すように、
InferenceGatewayConfigリソースを直接作成します例。
ゲートウェイコンポーネントと InferenceGatewayConfig CRD は、ゲートウェイが有効になっているモデルリソースを照合する前に、HyperPod Inference Amazon EKS アドオンを介してインストールする必要があります。オペレータアドオンのインストールについては、「」を参照してくださいEKS アドオンを使用した推論演算子のインストール。スケジューラがルーティングするモデル提供ポッドのデプロイについては、「」を参照してください基盤モデルとカスタムファインチューニングされたモデルをデプロイする。
注記
SageMaker HyperPod Inference Operator の正常性を維持することは、 AWS とお客様の責任を共有します。 AWS は SageMaker HyperPod Inference Operator の配信と維持に責任を負います。インストール後、お客様はクラスター内のオペレーターの運用状態をモニタリングする責任があります。
InferenceGatewayConfig CRD リファレンス
Inference Gateway は 1 つのInferenceGatewayConfigカスタムリソースで設定します。リソースは、特定のゲートウェイのシングルトンです。共有ボディベースのルーター設定とモデルごとのスケジューラのリストを保持します。コントローラーはInferencePool、各スケジューラの基盤となる 、エンドポイントピッカー、HTTPRoute、およびEnvoyExtensionPolicyリソースを生成します。リソースのみを作成しますInferenceGatewayConfig。
| プロパティ | 値 |
|---|---|
| [Kind] (種類) | InferenceGatewayConfig |
| Group | inference.sagemaker.aws.amazon.com |
| バージョン | v1alpha1 |
| 複数 | inferencegatewayconfigs |
| 短縮名 | igwc |
| スコープ | 名前空間 |
| ステータスサブリソース | /status |
仕様フィールド
InferenceGatewayConfig リソースの specフィールドには、共有ボディベースのルーター設定、TLS 設定、スケジューラの必須リスト、オプションのオブザーバビリティとポッドのデフォルト設定が含まれます。
bbr(必須)-
共有ボディベースルーターの設定。以下のフィールドが含まれています。
bbr.enabled(必須、ブール値)本文ベースのルーターが有効になっているかどうか。複数のスケジューラが設定されている場合、ルーターを有効にする必要があります。
bbr.replicas(オプション、整数)本文ベースのルーターレプリカの数。最小:
1。デフォルト:2。bbr.defaultBackend(オプション)ルーターがスケジューラと照合できないリクエストを受け取るバックエンド。
name文字列とport整数 (デフォルト:8000) が含まれます。bbr.maxRequestBodyBytes(オプション、整数)modelフィールドを読み取るためにルーターがバッファするリクエスト本文の最大サイズ。バイト単位。デフォルトと最大値:268435456(256 MiB)。
tls-
ゲートウェイの HTTPS 終了設定。既存の ACM 証明書を参照する
acmArnフィールドが含まれます。tlsが空の で設定されている場合acmArn、ゲートウェイは証明書を cert-manager で自動発行し、ACM にインポートします。 auth(オプション、推奨)-
認証設定をリクエストします。すべてのゲートウェイで JWT ベアラートークン認証を有効にすることを強くお勧めします。省略すると、ゲートウェイにはリクエストレベルの認証はありません。ロードバランサーのヘルスチェックルートは認証されていないままであるため、ヘルスプローブはトークンなしで成功します。
次のフィールド
auth.jwt.providerを含む が含まれます。name(必須、文字列)プロバイダーの一意の名前。
issuer(必須、文字列)OIDC 発行者 URL (
https://...)。ゲートウェイはこの値に対してトークンのissクレームを検証します。remoteJWKS.uri(必須、文字列)JWT 署名の検証に使用される HTTPS JWKS エンドポイント。
audiences(オプション、一覧表示)許容される
audクレーム値 (最大 8)。または の少なくとも 1 つを設定audiencesrequiredClaimsする必要があります。requiredClaims(オプション、一覧表示)クレームベースの認可 (最大 16 エントリ)。各エントリには、
name、valueType(StringまたはStringArray)、およびvalues(1~128 エントリ、各 1~1024 文字) があります。設定すると、ゲートウェイはデフォルトでリクエストを拒否し、クレーム値が一致するトークンのみを許可します。
observability(オプション)-
オブザーバビリティ設定。OpenTelemetry メトリクスのサイドカー
metrics.enabledを制御する が含まれています。メトリクスはデフォルトで有効になっています。 podDefaults(オプション)-
本文ベースのルーターポッドと Endpoint Picker ポッドの両方に適用されるデフォルトのポッド設定。
resources、nodeSelector、、tolerations、affinity、labels、annotationsenv、および をサポートしますenvFrom。 schedulers(必須、一覧表示)-
によってキー指定されたモデルごとのスケジューラ設定のリスト
name。少なくとも 1 つのスケジューラが必要で、最大 100 個まで定義できます。各エントリはSchedulerSpec、「」で説明されている ですSchedulerSpec フィールド。
SchedulerSpec フィールド
の各エントリは、1 つのモデルに対してルーティングとエンドポイントの選択spec.schedulersを設定します。スケジューラは、生成された InferencePool、エンドポイントピッカー、HTTPRoute、およびEnvoyExtensionPolicyリソースに名前を付けます。
name(必須、文字列)スケジューラ名。生成された
InferencePool、エンドポイントピッカー、HTTPRoute、およびEnvoyExtensionPolicyリソースに名前を付けるために使用されます。最大長: 63 文字。modelSelector(必須)このスケジューラがルーティングするモデル提供ポッドを選択する Kubernetes ラベルセレクタ。
modelName(必須、文字列)モデル名がリクエスト本文の
modelフィールドと一致し、HTTPRoute ヘッダーの一致として使用されます。スケジューラ間で一意である必要があります。最大長: 253 文字。targetPort(オプション、整数)転送されたトラフィックを受信するモデル提供ポッドのポート。範囲: 1~65535。デフォルト:
8000。appProtocol(オプション、文字列)モデル提供ポッドに到達するために使用されるアプリケーションプロトコル。有効な値:
http、kubernetes.io/h2c。デフォルト:http。scheduler(オプション、文字列)Endpoint Picker イメージを選択するスケジューラタイプ。有効な値:
llm-d、epp。デフォルト:llm-d。engineType(オプション、文字列)モデル提供ポッドで実行されている推論エンジン。この値は、Endpoint Picker がスクレイピングする Prometheus メトリクス名のセットを選択します。有効な値:
vllm、sglang。デフォルト:vllm。weights(オプション)-
Endpoint Picker が候補ポッドのランク付けに使用する重み付け。すべての重みは負以外の整数です。
configMapRefと同時に使用することはできません。サポートされている重み:queue保留中のリクエストキューの深さの重み。デフォルト:
2。kvCacheKV キャッシュ使用率の重み。デフォルト:
2。prefixプレフィックスキャッシュアフィニティの重み。デフォルト:
3。lruleast-recently-usedスコアリングの重み。
schedulerがllm-dの場合にのみ有効です。loraAffinityLoRA アダプターのアフィニティの重み。
runningRequestsポッドで実行中のリクエスト数の重み。
predictedLatency予測リクエストレイテンシーの重み。
configMapRef(オプション)の代わりに、カスタム Endpoint Picker 設定を提供する ConfigMap への参照
weights。必須nameと が含まれますkey(デフォルト:default-plugins.yaml)。weightsと同時に使用することはできません。replicas(オプション、整数)このスケジューラの Endpoint Picker レプリカの数。最小:
1。デフォルト:2。replicasが 1 より大きい場合、Endpoint Picker はリーダー選択で高可用性で実行されます。envおよびenvFrom(オプション)このスケジューラの Endpoint Picker コンテナに追加された環境変数。
loraAdapters(オプション、リスト)このスケジューラのモデルの背後にある LoRA アダプター名。最大: 50 項目、それぞれ最大 253 文字。
routeTimeout(オプション、文字列)Gateway API 期間としての HTTPRoute リクエストのタイムアウト (例:
30sまたは5m)。0sに設定するとタイムアウトが無効になります。logLevel(オプション、整数)Endpoint Picker ログの詳細度。範囲: 0~5。
検証ルール
InferenceGatewayConfig リソースは、次の検証ルールを適用します。これらのルールのいずれかに違反するリソースは拒否されます。
-
複数のスケジューラが設定されている場合、本文ベースのルーターを有効にする必要があります (
bbr.enabled: true)。 -
modelNameは、すべてのスケジューラで一意である必要があります。 -
スケジューラ内では、
weightsとconfigMapRefは相互に排他的です。 -
weights.lru重みは、スケジューラschedulerのタイプが の場合にのみ有効ですllm-d。
ステータスフィールド
コントローラーは、statusサブリソース内のゲートウェイの観測状態を報告します。
conditionsゲートウェイ設定の全体的な状態を説明する標準 Kubernetes 条件。
schedulers-
スケジューラごとのステータス。各エントリには以下が含まれます。
nameスケジューラ名。
conditionsこのスケジューラの状態を記述する条件。
currentSchedulerこのエントリで現在有効なスケジューラタイプ。
rolloutStateスケジューラのロールアウト状態。
Pending、Progressing、Available、Degradedのいずれか。
observedGenerationコントローラーによって最近調整されたリソースの生成。
tlsTLS ステータス。自動発行モードでのみ報告されます。
acmArn、issuedAt、および が含まれますdnsNames。
Kubernetes RBAC アクセス許可
Inference Gateway は、hyperpod-inference-system名前空間の Kubernetes サービスアカウントinference-gateway-controllerで単一のコントローラーとして実行されます。本文ベースのルーター、スケジューラごとのエンドポイントピッカー、ゲートウェイコントローラー、InferenceGatewayConfigおよびリコンシラーはすべて、この 1 つのコントローラーで実行されます。クラスタースコープのアクセス許可は、 ClusterRoleという名前の sagemaker-inference-gateway-controller-supplementと一致する によって付与されますClusterRoleBinding。これらは、バンドルされた Gateway チャートが既に提供しているサービスアカウントとアクセス許可を補完します。これらのアクセス許可はスコープと最小特権であり、コントローラーはクラスター管理者として実行されません。
次の表は、コントローラーのクラスタースコープのアクセス許可を目的別にグループ化したものです。この表では、フルアクセスとは、create、、get、list、watch、updatepatch、およびdelete動詞を意味します。
| API グループ | リソース | 動詞 | 目的 |
|---|---|---|---|
inference.sagemaker.aws.amazon.com |
inferencegatewayconfigs、 statusおよび finalizersサブリソースを含む |
getpatchの場合は 、listwatch、、update、、および inferencegatewayconfigsget、 patchの場合は update、、および 、 updateの場合は status、 finalizers |
InferenceGatewayConfig リソースの調整、ステータスの書き込み、ファイナライザーの管理を行います。 |
gateway.networking.k8s.io |
httproutes, gateways,
gatewayclasses |
httproutes および のフルアクセスget、gateways、、create、、および list watchpatchのフルアクセス gatewayclasses |
Gateway API を介したプログラムリクエストルーティング。 |
inference.networking.k8s.io |
inferencepools |
フル アクセス | スケジューラごとにルーティングバックエンドを作成します。 |
inference.networking.x-k8s.io |
inferencepools, inferenceobjectives,
inferencemodelrewrites |
get, list, watch |
エンドポイント選択の読み取りルーティングインテント。 |
gateway.envoyproxy.io |
envoyextensionpolicies, envoyproxies,
httproutefilters, clienttrafficpolicies,
securitypolicies |
フル アクセス | ゲートウェイデータプレーンとそのテレメトリを設定します。 |
コア ("") |
configmaps, services,
serviceaccounts, events, secrets,
pods |
configmaps、、および のフルアクセスservices、 serviceaccounts create および patchのフルアクセスlist、 および events getwatchのフルアクセス secrets pods |
生成されたワークロードと読み取りルーティングと配信状態を管理します。 |
apps |
deployments |
フル アクセス | ボディベースのルーターとエンドポイントピッカーのデプロイを管理します。 |
rbac.authorization.k8s.io |
roles, rolebindings |
フル アクセス | スケジューラごとの Endpoint Picker を作成しますRole。 |
discovery.k8s.io, coordination.k8s.io |
endpointslices; leases |
getwatchの場合は 、list、、および、 endpointslicespatchの場合は getlist、watch、、createupdate、、および leases |
エンドポイント検出と Endpoint Picker リーダーの選択。 |
networking.k8s.io |
ingresses, networkpolicies |
フル アクセス | ロードApplication Load Balancer AWS Load Balancer パスをプロビジョニングします。 |
cert-manager.io |
issuers、 certificates (コア watchで get、list、および を使用secrets) |
フル アクセス | が なしで設定されている場合spec.tls、TLS 証明書を自動発行しますacmArn。 |
apiextensions.k8s.io |
customresourcedefinitions |
create、、get、patch、および は、リソース名によってゲートウェイが管理する特定の Gateway API CRDs updatedeleteに制限されます。 |
ゲートウェイが依存するカスタムリソース定義をインストールします。 |
注記
のcreate動customresourcedefinitions詞は、特定のリソース名に制限されません。コントローラーは、ゲートウェイ API カスタムリソース定義をインストールします。このカスタムリソース定義は、合計サイズが Amazon EKS アドオンペイロードの制限を超えているため、独自のコンテナイメージから起動時に適用します。Kubernetes create では、動詞を名前付きリソースに制限できないため、このアクセス許可は必ずしも広範です。カスタムリソース定義に対する他のすべてのオペレーション -get、update、patch、および delete- は、ゲートウェイが管理する特定のカスタムリソース定義に制限されます。このアクセス許可により、これらの CRD タイプのみを定義できます。カスタムリソースのデータへのアクセスは許可されません。
また、コントローラーは、ゲートウェイの設定に応じて、実行時に次の名前空間ロールを作成します。
-
Body-Based Router - LoRA アダプターを解決するためにルーターが読み取る
get、configmaps、listをwatchにRole付与する名前空間。ルーターが複数の名前空間で実行される場合、これはClusterRole代わりに です。 -
Endpoint Picker — への読み取りアクセス
Roleを許可する名前空間pods。Endpoint Picker が複数のレプリカで実行されると、コントローラーはleasesとRoleのリーダー選択も作成しますevents。Prometheus メトリクスを有効にするsubjectaccessreviewsと、コントローラーは、/metricsエンドポイントcreateに対するtokenreviewsおよびClusterRoleの読み取りアクセスを許可するオプションの を作成します。
注記
HyperPod Inference Operator を介してゲートウェイを有効にすると、オペレーター独自のコントローラーはInferenceGatewayConfigリソースを作成および更新するアクセス許可を保持します。オペレーターがモデルをゲートウェイに接続する方法については、「」を参照してくださいHyperPod Inference Operator との統合。
これらのアクセス許可の一部は、対応する機能が有効になっている場合にのみ適用されます。
オブザーバビリティ
Inference Gateway は、すべてのゲートウェイコンポーネントから Prometheus メトリクスを出力します。Body-Based Router と各 Endpoint Picker の両方が、ポッド上の標準の Prometheus /metricsエンドポイントを公開します。本文ベースのルーターポッドは hyperpod-inference-system名前空間で実行され、Endpoint Picker ポッドは と同じ名前空間で実行されますInferenceGatewayConfig。メトリクスは、モデルごとのリクエストカウンターと期間、Endpoint Picker 内のスケジューリングレイテンシーとプラグインごとの実行時間、平均 KV キャッシュ使用率やキュー深度などの集計プールメトリクスを対象としています。Model-server ポッドメトリクス (vLLM や SGLang など) は、モデルサーバー自体によって出力されます。Endpoint Picker はそれらをスクレイプして候補ポッドをスコアリングします。
spec.observability.metrics.enabled が true (デフォルト) の場合、ゲートウェイコントローラーは OpenTelemetry Collector サイドカーをすべての本文ベースのルーターおよびエンドポイントピッカーポッドに挿入します。サイドカーは、これらのメトリクスを HyperPod 推論オブザーバビリティスタックに転送します。このスタックでは、組み込みの Grafana ダッシュボードがモデルサーバーとクラスターのメトリクスとともに表示します。セットアップとダッシュボードの詳細については、「」を参照してくださいHyperPod クラスターでの推論オブザーバビリティの実装。サイドカーインジェクションをスキップfalseするには、 フィールドを に設定します。フィールドリファレンスについては、「」のobservability「」を参照してください仕様フィールド。
Amazon Managed Grafana でゲートウェイメトリクスを表示するには、推論ダッシュボードフォルダを開き、推論ゲートウェイダッシュボードを選択します。ダッシュボードには、各モデルのゲートウェイ全体の可用性、リクエストレート、end-to-endのレイテンシー、スケジューラごとのスループット、レイテンシー、エラー、およびボディベースルーターがリクエスト本文からモデル名を解決するレートがレポートされます。
例
次の例は、一般的なInferenceGatewayConfig設定とゲートウェイを呼び出す方法を示しています。
最小限のマルチモデル設定
この例では、TLS が自動発行された llm-d スケジューラにルーティングします。tls は空のオブジェクトに設定されているため、ゲートウェイは証明書を自動的に発行し、ACM にインポートします。
apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1 kind: InferenceGatewayConfig metadata: name: inference-gateway-demo namespace: inference-gateway spec: bbr: enabled: true tls: {} # Auto-issue a certificate via cert-manager and import to ACM. schedulers: - name: llama modelName: "meta-llama/Llama-3.2-1B-Instruct" modelSelector: matchLabels: app: vllm-llama targetPort: 8000 scheduler: llm-d
明示的な重みを持つ SGLang スケジューラ
この例では、sglangエンジンで スeppケジューラタイプを使用し、明示的な Endpoint Picker スコアリングの重みを設定します。
spec: bbr: enabled: true schedulers: - name: qwen7b modelName: "Qwen/Qwen2.5-7B-Instruct" modelSelector: matchLabels: app: sglang-qwen7b targetPort: 8000 scheduler: epp engineType: sglang logLevel: 4 weights: kvCache: 2 prefix: 3 runningRequests: 2
LoRA アダプター ConfigMap
本文ベースのルーターは、BBR 管理用にラベル付けされた ConfigMap から LoRA アダプターとそのベースモデルを検出します。ルーターはこのマッピングを使用して、リクエスト本文のアダプター名をベースモデルに解決します。
apiVersion: v1 kind: ConfigMap metadata: name: deepseek-adapters labels: inference.networking.k8s.io/bbr-managed: "true" data: baseModel: deepseek/vllm-deepseek-r1 adapters: | - ski-resorts - movie-critique
ゲートウェイを呼び出す
ゲートウェイは OpenAI 互換の推論エンドポイントを提供します。これは、ゲートウェイを介して推論リクエストを送信するためのランタイム呼び出し契約であり、 AWS API オペレーションではありません。model フィールドをターゲットスケジューラmodelNameの に設定して、ゲートウェイエンドポイントにリクエストを送信します。本文ベースのルーターは、このフィールドを読み取り、リクエストをルーティングします。
curl https://your-gateway-endpoint/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "meta-llama/Llama-3.1-8B-Instruct", "messages": [ {"role": "user", "content": "Hello"} ] }'