推論拡張機能付きゲートウェイは、拡張管理機能を通じて生成 AI 推論サービスを強化します。InferencePool リソースにアノテーションを追加するか、ConfigMap を作成してデフォルトのデプロイメント設定をオーバーライドすることで、ルーティングポリシーをカスタマイズできます。このトピックでは、両方の方法を使用して推論拡張機能をカスタマイズする方法について説明します。
設定方法の概要
推論拡張機能付きゲートウェイは InferencePool リソースに関連付けられており、AI モデルサービスのリソースを論理的にグループ化して管理します。InferencePool のルーティングポリシーは、次の 2 つの方法でカスタマイズできます。
アノテーションの使用: 特定のアノテーションを InferencePool リソースに直接適用します。
ConfigMap の使用: カスタム ConfigMap を作成し、InferencePool にリンクします。
次の表は、これら 2 つの方法を比較したものです。
側面 | アノテーションの使用 | ConfigMap の使用 |
スコープ | 負荷分散ポリシー、リクエストキューイング戦略、および推論フレームワークの設定を変更できます。 | Deployment、Service、PodDisruptionBudget など、推論拡張機能のデフォルト設定を完全にオーバーライドできます。 |
更新メカニズム | ホットアップデート。変更はリアルタイムで動的に適用されます。 | ホットアップデート。変更はリアルタイムで適用されます。 |
複雑さ | 単一の変更にはシンプルですが、設定項目に応じてスケールします。変更したい設定ごとに新しいアノテーションを追加する必要があります。 | ConfigMap を作成し、InferencePool に 1 つのアノテーションを追加する必要があります。その後のすべての変更は、ConfigMap ファイルを更新することで管理されます。 |
バージョン要件 | すべてのバージョンがサポートされています。 | 推論拡張機能付きゲートウェイのバージョン 1.4.0-aliyun.2 以降が必要です。 |
推奨事項: 負荷分散ポリシーやサポートされている推論フレームワークの更新など、単純な変更にはアノテーションを使用します。より高度で包括的なカスタマイズには ConfigMap を使用します。
方法 1:アノテーションによるカスタマイズ
inference.networking.x-k8s.io/routing-strategy アノテーションを InferencePool リソースに追加することで、ルーティングポリシーを変更できます。たとえば、次のアノテーションは、負荷分散ポリシーをプレフィックス認識に変更します。
apiVersion: inference.networking.x-k8s.io/v1alpha2
kind: InferencePool
metadata:
name: vllm-app-pool
annotations:
# 負荷分散ポリシーをプレフィックス認識に設定
inference.networking.x-k8s.io/routing-strategy: "PREFIX_CACHE"
spec:
targetPortNumber: 8000
selector:
app: vllm-app
extensionRef:
name: inference-gateway-ext-procサポートされているアノテーション
次の表は、推論拡張機能付きゲートウェイでサポートされているアノテーションを示しています。
負荷分散ポリシー
アノテーション | タイプ | デフォルト値 | 説明 |
inference.networking.x-k8s.io/routing-strategy | string | DEFAULT | 推論拡張機能が使用する負荷分散ポリシーを指定します。有効な値:
プレフィックス認識の負荷分散の詳細については、「インテリジェントな推論ルーティングを使用してプレフィックス認識の負荷分散を実装する」をご参照ください。 |
inference-epp-env.networking.x-k8s.io/prefix-cache-hash-block-size | int64 | 64 | プレフィックス認識の負荷分散を使用する場合、推論拡張機能はリクエストを固定サイズのブロックに分割し、キャッシュ内のプレフィックスと照合します。 このパラメーターは、各ブロックの文字列の長さを指定します。最適な負荷分散のためには、モデルサーバーの内部ブロックスプリットポリシーに合わせてこの値を調整してください。 |
inference-epp-env.networking.x-k8s.io/prefix-cache-max-prefix-blocks | int64 | 128 | このパラメーターは、単一のリクエストが一致できるプレフィックスブロックの最大数を制限します。 実際の一致数がこの制限を超えた場合、システムは制限に基づいてリクエストを処理し、余分な一致部分は無視します。 |
inference-epp-env.networking.x-k8s.io/prefix-cache-lru-capacity | int64 | 50000 | このパラメーターは、キャッシュ内の単一のプレフィックスレコードが含むことができるブロックの最大数を指定します。 値が大きいほど、キャッシュに必要なメモリが多くなることに注意してください。 |
リクエストキューイング
アノテーション | タイプ | デフォルト値 | 説明 |
inference.networking.x-k8s.io/queueing | string | disabled | 推論リクエストキューイング機能を有効にするかどうかを指定します。推論リクエストキューイング機能の詳細については、「インテリジェントな推論ルーティングを使用して推論リクエストのキューイングと優先度スケジューリングを実装する」をご参照ください。 |
inference-epp-env.networking.x-k8s.io/total-queue-capacity | int64 | 104857600 | このパラメーターは、推論リクエストキューの総容量 (すべてのプロンプトのバイト数の合計) を制限します。 キューの合計サイズがこの制限を超えると、リクエストのバックログによるメモリオーバーフローを防ぐために、最も古いリクエストが破棄されます。 |
inference-epp-env.networking.x-k8s.io/queue-ttl | Duration | 30s | このパラメーターは、リクエストがキューで待機できる最大時間を指定します。この制限を超えて待機するリクエストは、クライアントが不必要に待機するのを防ぎ、システムリソースをタイムリーに解放するために破棄されます。 説明 このパラメーターの値は、符号付き 10 進数のシーケンスで、それぞれにオプションの小数と単位サフィックス (「300ms」、「-1.5h」、「2h45m」など) が付きます。有効な時間単位は、「ns」、「us」(または「µs」)、「ms」、「s」、「m」、「h」です。 |
推論フレームワークのサポート
アノテーション | タイプ | デフォルト値 | 説明 |
inference.networking.x-k8s.io/model-server-runtime | string | vllm | InferencePool のバックエンドにあるモデルサーバーの推論フレームワークを宣言して、推論拡張機能が特定の推論フレームワークをサポートできるようにします。有効な値:
詳細については、「推論サービスフレームワークのサポート」をご参照ください。 |
方法 2:ConfigMap によるカスタマイズ
この方法には、推論拡張機能付きゲートウェイ バージョン 1.4.0-aliyun.2 以降が必要です。
推論拡張機能とゲートウェイは、envoy-gateway-system 名前空間にデプロイされます。ラベルセレクターを使用して、関連するリソースを見つけることができます。たとえば、default 名前空間にある qwen-pool という名前の InferencePool の推論拡張機能 deployment を見つけるには、次のコマンドを実行します。
kubectl get deployments -n envoy-gateway-system -l inference-pool=qwen-pool,inference-pool-namespace=defaultConfigMap を使用してカスタム設定を適用するには、次の手順に従います。
ConfigMap を作成してデプロイします。
次の ConfigMap は、デフォルトのコンテナーリソース設定をオーバーライドし、
podAntiAffinityルールを追加します。apiVersion: v1 data: deployment: |- spec: replicas: 1 template: spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchLabels: inference-pool: qwen-pool inference-pool-namespace: default topologyKey: kubernetes.io/hostname containers: - name: inference-gateway-ext-proc resources: limits: cpu: '4' memory: 4G requests: cpu: 500m memory: 1G kind: ConfigMap metadata: name: custom-eppカスタム設定を含む ConfigMap の名前を指定するために、
InferencePoolにアノテーションを追加します。apiVersion: inference.networking.x-k8s.io/v1alpha2 kind: InferencePool metadata: annotations: inference.networking.x-k8s.io/epp-overlay: custom-epp # 推論拡張機能のオーバーライド設定を指定 name: qwen-pool spec: extensionRef: group: '' kind: Service name: qwen-ext-proc selector: app: qwen targetPortNumber: 8000