本文列举了AI推理增强型网关(Gateway with Inference Extension)关联的相关组件核心配置示例及配置项说明
ACKTrafficFilter
ACKTrafficFilter能够为网关路由提供扩展的流量处理选项,如对接阿里云内容安全实现AI内容安全审查。
以下示例通过结合 ACKTrafficFilter 和 HTTPRoute,为网关接入阿里云内容安全服务,实现 AI 内容安全审查的能力,请参考使用Gateway with Inference Extension实现AI内容审查。
apiVersion: inferenceextension.alibabacloud.com/v1alpha1
kind: ACKTrafficFilter
metadata:
name: aisg
spec:
aiContentSecurity:
accessKey: XXXXXX
secretKey: XXXXXX
aliyunEndpoint: green-cip-vpc.cn-hangzhou.aliyuncs.com
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: mock-route
spec:
parentRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: mock-gateway
sectionName: llm-gw
rules:
- backendRefs:
- group: inference.networking.x-k8s.io
kind: InferencePool
name: mock-pool
filters:
- type: ExtensionRef
extensionRef:
group: inferenceextension.alibabacloud.com
kind: ACKTrafficFilter
name: aisg
matches:
- path:
type: PathPrefix
value: /配置项说明
ACKTrafficFilterSpec
字段 | 类型 | 必需 | 描述 |
aiContentSecurity | 否 | 指定AI内容安全检查的配置 | |
extensionDeploymentOverlay | 否 | 指定插件部署覆盖配置 |
AIContentSecurity
字段 | 类型 | 必需 | 描述 |
accessKey | string | 否 | 用于认证的ak |
secretKey | string | 否 | 用于认证的sk |
aliyunEndpoint | string | 否 | 阿里云内容安全服务的端点地址 |
checkRequest | boolean | 否 | 是否检查请求内容 |
checkResponse | boolean | 否 | 是否检查响应内容 |
requestCheckService | string | 否 | 请求检查的服务名称 |
responseCheckService | string | 否 | 响应检查的服务名称 |
requestContentJsonPath | string | 否 | 请求内容的JSON路径 |
responseContentJsonPath | string | 否 | 响应内容的JSON路径 |
responseStreamContentJsonPath | string | 否 | 响应流内容的JSON路径 |
denyMessage | string | 否 | 内容被拒绝时的默认消息 |
riskLevelBar | string | 否 | 风险等级阈值 |
timeout | integer | 否 | 超时时间(毫秒) |
ExtensionDeploymentOverlay
字段 | 类型 | 必需 | 描述 |
spec | json.RawMessage | 否 | 插件部署覆盖的原始JSON规范 |
InferenceTrafficPolicy
InferenceTrafficPolicy用于配置针对指定InferencePool内的推理工作负载进行路由时,Gateway with Inference Extension采用的路由策略,包括推理工作负载的部署形态信息、使用的路由算法及其参数等。
默认情况下,Gateway with Inference Extension将针对InferencePool后端的单机vLLM推理服务,采用基于KVCache利用率与排队请求数的智能路由负载均衡策略进行请求转发,具体内容参考使用Gateway with Inference Extension实现智能路由与流量管理。当推理服务使用其他部署形态、或需要调整Gateway with Inference Extension的路由算法以及相关算法参数时,可使用InferenceTrafficPolicy对智能路由策略进行调整。
示例一:对单机SGLang推理服务配置前缀感知的负载均衡(估算模式)
该策略针对同命名空间下名为 qwen-inference-pool 的InferencePool生效。
apiVersion: inferenceextension.alibabacloud.com/v1alpha1
kind: InferenceTrafficPolicy
metadata:
name: sglang-prefixcache-policy
spec:
poolRef:
name: qwen-inference-pool
modelServerRuntime: sglang
profile:
single:
trafficPolicy:
prefixCache:
mode: estimate示例二:对单机vLLM推理服务配置前缀感知的负载均衡(跟踪模式)
apiVersion: inferenceextension.alibabacloud.com/v1alpha1
kind: InferenceTrafficPolicy
metadata:
name: inference-policy
spec:
poolRef:
name: qwen-inference-pool
profile:
single:
trafficPolicy:
prefixCache:
mode: tracking
trackingConfig:
indexerConfig:
tokenProcessorConfig:
blockSize: 64
hashSeed: 42
model: Qwen/Qwen3-32B
kvEventsConfig:
zmqEndpoint: tcp://*:5557
topicFilter: kv@示例三:对SGLang PD分离推理服务配置路由
apiVersion: inferenceextension.alibabacloud.com/v1alpha1
kind: InferenceTrafficPolicy
metadata:
name: inference-policy
spec:
poolRef:
name: qwen-inference-pool
modelServerRuntime: sglang
profile:
pd:
pdRoleLabelName: rolebasedgroup.workloads.x-k8s.io/role
kvTransfer:
bootstrapPort: 34000配置项说明
spec
字段 | 类型 | 是否必填 | 说明 |
poolRef | PoolObjectReference | 是 | 指定此推理流量策略应用的InferencePool |
profile | DeploymentProfile | 否 | 指定后端推理服务的部署形态。可选值为 |
modelServerRuntime | string | 否 | 指定后端推理服务的模型服务器运行时,可选项 |
PoolObjectReference
字段 | 类型 | 是否必填 | 说明 |
group | string | 否 | 引用对象的组,默认为 |
kind | string | 否 | 引用对象的类型,默认为 |
name | string | 是 | 引用对象的名称 |
DeploymentProfile
字段 | 类型 | 是否必填 | 说明 |
single | SingleProfile | 否 | 单机部署的配置 |
pd | PDProfile | 否 | PD分离部署的配置 |
SingleProfile
字段 | 类型 | 是否必填 | 说明 |
trafficPolicy | TrafficPolicy | 否 | 独立部署的负载均衡路由策略,默认采用基于KVCache利用率与排队请求数的智能路由负载均衡策略。 |
burstLimitPerServer | BurstLimit | 否 | 每个后端服务器的突发请求软限制,超过限制时会降低对应服务器的负载均衡权重 |
PDProfile
字段 | 类型 | 是否必填 | 说明 |
trafficPolicy | TrafficPolicy | 否 | PD分离部署的路由策略声明 |
prefillPolicyRef | string | 否 | 预填充请求的路由策略名称引用 |
decodePolicyRef | string | 否 | 解码请求的路由策略名称引用 |
pdRoleLabelName | string | 是 | 用于区分PD角色的Pod标签名称,PD角色应为 |
pdThreshold | int | 否 | PD的阈值,当前缀缓存显示解码服务器已缓存超过阈值的prompt token时,将跳过PD。默认启用PD分离。 |
kvTransfer | KVTransfer | 否 | PD分离中KVCache传输的相关配置,需要根据实际部署中KVCache传输的方式确定。 |
burstLimitPerServer | BurstLimit | 否 | 每个后端服务器的突发请求软限制,超过限制时会降低对应服务器的负载均衡权重 |
KVTransfer
字段 | 类型 | 是否必填 | 说明 |
protocol | string | 否 | KVCache传输协议,可以是 |
bootstrapPort | int | 否 | KVCache传输时使用的bootstrap端口号,仅适用于sglang PD分离。 |
TrafficPolicy
字段 | 类型 | 是否必填 | 说明 |
simple | string | 否 | 简单路由策略。可选值只有DEFAULT,使用DEFAULT时,将采用基于KVCache利用率与排队请求数的智能路由负载均衡策略。 |
prefixCache | PrefixCachePolicy | 否 | 前缀感知的负载均衡路由策略。 |
PrefixCachePolicy
字段 | 类型 | 是否必填 | 说明 |
mode | string | 是 | 前缀缓存策略模式,可以是 |
estimateConfig | EstimateConfig | 否 | 启用估算模式时的配置 |
trackingConfig | TrackingConfig | 否 | 启用跟踪模式时的配置 |
EstimateConfig
字段 | 类型 | 是否必填 | 说明 |
hashBlockSize | int32 | 是 | 估算模式记录请求前缀哈希时使用的哈希块的大小 |
maxPrefixBlocksToMatch | int32 | 是 | 估算模式匹配请求前缀时可匹配的最大前缀块数 |
lruCapacityPerServer | int32 | 是 | 每个服务器的LRU容量 |
TrackingConfig
字段 | 类型 | 是否必填 | 说明 |
indexerConfig | IndexerConfig | 是 | 跟踪模式中使用的KVCache索引器的配置 |
kvEventsConfig | KVEventsConfig | 否 | 跟踪模式中使用的KV事件接收器的配置 |
IndexerConfig
字段 | 类型 | 是否必填 | 说明 |
tokenProcessorConfig | TokenProcessorConfig | 是 | 令牌处理器的配置 |
kvBlockIndexConfig | KvBlockIndexConfig | 否 | KV块索引的配置 |
TokenProcessorConfig
字段 | 类型 | 是否必填 | 说明 |
blockSize | int32 | 是 | 每个前缀缓存块的大小,需要与vLLM的block-size启动参数保持一致。 |
hashSeed | int32 | 是 | 哈希种子,需要与vLLM的PYTHONHASHSEED环境变量保持一致 |
model | string | 是 | 实际在引擎中运行的模型在ModelScope中的官方名称 |
KvBlockIndexConfig
字段 | 类型 | 是否必填 | 说明 |
size | int64 | 否 | 索引中缓存的KVCache块索引的最大个数 |
podCacheSize | int32 | 否 | 为每个Pod缓存的KVCache块索引的最大个数 |
KVEventsConfig
字段 | 类型 | 是否必填 | 说明 |
zmqEndpoint | string | 否 | 要监听的ZMQ地址(例如:"tcp://*:5557") |
topicFilter | string | 否 | ZMQ订阅过滤器(例如:"kv.") |
concurrency | int | 否 | 并行运行的工作线程数 |
BurstLimit
字段 | 类型 | 是否必填 | 说明 |
interval | metav1.Duration | 是 | 检查突发限制的时间间隔 |
threshold | int32 | 是 | 突发限制的阈值 |