Gateway with Inference Extension基於推理擴充實現了針對產生式AI推理服務的一系列增強管理能力。您可以通過配置註解調整路由策略,或通過建立ConfigMap來修改或覆蓋擴充的部署配置。本文主要介紹如何通過增加註解和建立ConfigMap來修改推理擴充的部署配置。
功能介紹
在Gateway API Inference Extension中,InferencePool資源代表一組共用相同計算配置、加速器類型、基本模型和模型伺服器的Pod,在邏輯上對AI模型服務資源進行分組和管理。組件和InferencePool資源的綁定關係,可通過InferencePool資源上的註解對路由策略進行自訂配置,也可以通過部署自訂ConfigMap,來覆蓋推理擴充Deployment的部署配置。兩種方式有以下區別:
對比項 | 註解方式 | ConfigMap方式 |
覆蓋範圍 | 支援變更負載平衡策略、請求排隊策略和推理架構及對應的策略配置參數。 | 可以完全覆蓋推理擴充的預設配置,包括Deployment、Service和PodDisruptionBudget。 |
更新方式 | 熱更新,即時生效。 | 熱更新,即時生效。 |
配置複雜度 | 與要修改的配置數量成正比。即覆蓋的配置越多,要增加的註解越多。 | 僅需要部署ConfigMap並為InferencePool增加 |
組件版本依賴 | 支援所有版本。 | 需要組件版本在1.4.0-aliyun.2及以上。 |
若您只需要更新推理擴充的負載平衡策略或變更推理架構支援,推薦使用註解方式進行配置。若您需要對推理擴充進行更精細的配置調整,則推薦使用ConfigMap方式。
通過配置註解修改推理擴充路由策略
您可以通過為InferencePool資源增加inference.networking.x-k8s.io/routing-strategy註解,將推理擴充使用的負載平衡策略變更為首碼感知的負載平衡。樣本如下:
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支援的配置註解說明
推理擴充支援通過InferencePool註解在多方面進行自訂配置,以下是支援的註解分類說明。
負載平衡策略
註解 | 類型 | 預設值 | 說明 |
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 | 此參數用於限制推理請求隊列的總容量(即所有Prompt的位元組數之和)。 一旦隊列總大小超出此上限,最早進入的請求將被丟棄,以確保隊列不會因請求積壓而導致記憶體溢出。 |
inference-epp-env.networking.x-k8s.io/queue-ttl | Duration | 30s | 此參數用於佈建要求在隊列中的最大等待時間。等待時間超過該上限的請求將被丟棄,以避免用戶端無謂的等待並及時釋放系統資源。 說明 此參數的值是一個可能帶有符號的十進位數字序列,每個數字可以帶有可選的小數部分和單位尾碼,例如 "300ms"、"-1.5h" 或 "2h45m"。有效時間單位包括 "ns"、"us"(或 "µs")、"ms"、"s"、"m"、"h"。 |
推理架構支援
註解 | 類型 | 預設值 | 說明 |
inference.networking.x-k8s.io/model-server-runtime | string | vllm | 聲明InferencePool後端的模型伺服器推理架構,以啟用推理擴充對特定推理架構的支援,有三種取值:
更多資訊,請參見推理服務架構支援說明。 |
使用 ConfigMap 管理推理擴充配置
此方式依賴Gateway with Inference Extension組件版本在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=default以下樣本展示具體的配置步驟。
建立並部署ConfigMap。
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修改了推理擴充的容器資源配置並加入了Pod的
podAntiAffinity配置。為InferencePool增加註解,指定應用自訂的配置ConfigMap,以對指定的推理擴充應用自訂覆蓋配置。
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