配置中心

更新时间:
复制 MD 格式

配置中心提供 InferX 工作站各项核心配置的热更新能力,涵盖请求路由、流量保护、调度优化等功能,修改后无需重启服务即可生效。

功能概览

配置中心的功能按使用场景分为以下几类:

使用场景

功能

说明

成本优化

智能选模

根据请求难度自动选择 L1/L2/L3 档位的模型,简单问题用轻量模型、复杂问题用大模型,平衡成本与效果。

服务稳定性

分流代理

混合本地推理服务与外部 API 服务(如 PAI Token 服务),支持故障转移,提升服务可用性。

全球调度

跨地域调度推理资源,本地资源紧缺时将流量转发到其他地域。

流量保护

请求限流

对工作站的并发请求进行限制,防止后端过载。

用户流控

按用户维度控制请求数、Token 用量和并发数。

路由优化

调度策略

按会话亲和、前缀缓存、负载均衡多层优先级路由到最优实例。

模型路由

根据请求中的 model 字段匹配对应的推理服务实例。

灰度验证

流量镜像

复制线上请求到目标地址,用于新版本验证和性能对比。

服务灰度

将流量按权重分配到不同的推理服务,实现灰度发布和 A/B 测试。

当您向 InferX 工作站发起请求时,请求会按照以下流程依次处理:

image

其中,降级转发需要在分流代理中配置故障转移,那么当其他代理不可用时自动切换重试。

调度策略

调度策略分三部分配置:

  • 主调度策略:核心路由管线,按三层优先级(会话亲和 → 前缀缓存 → 负载均衡)将请求路由到推理实例,逐层匹配,命中即路由。

  • 前缀索引:调度器内常驻的前缀索引树,追踪各实例的 Prompt 前缀缓存状态,用于估算理论命中率上限;开启前缀缓存时还同时作为路由匹配依据。在此配置其内存边界与清理周期。

  • PD 分离:仅在 PD 分离部署模式下生效,为 Decode 阶段单独配置调度策略。

主调度策略

主调度策略按优先级分三层执行,请求依次经过各层匹配,命中即路由,未命中则下沉到下一层。会话亲和、前缀缓存为可选配置,可通过开关按需启用;负载均衡策略为必选配置。

说明

主调度策略的作用域与部署模式相关:在 PD 一体模式下,作为全局调度管线对所有请求生效;在 PD 分离模式下,仅作用于 Prefill 角色,Decode 阶段的调度策略在下方“PD 分离”区单独配置。

第 1 层:会话亲和(Session Aware)

将相同会话的请求优先路由到同一推理实例,避免因实例切换导致上下文丢失。适用于多轮对话、有状态推理等场景。

开启后,请求须携带指定的会话 Header 才能生效;未命中时下沉到前缀缓存层。

参数

说明

亲和模式

选择亲和路由的强度。

  • Soft:优先路由到绑定实例;若该实例负载超过平均负载 × 软最大负载比时不再优先路由,回退到正常调度。适合对性能敏感、可接受偶尔切换实例的场景。

  • Strict:始终路由到绑定实例,上下文连续性更强,但可能造成负载不均。

会话 Header

用于识别会话 ID 的 HTTP 请求头字段名,默认为 X-Session-Id。需与客户端实际发送的 Header 名称保持一致;若请求中不含该字段,亲和策略不生效。

说明

已知会自带 session header 的客户端:

• Claude Code:X-Claude-Code-Session-Id(每个会话一个)

其它主流 LLM 客户端(OpenAI/Anthropic SDK、LangChain 等)默认不带任何 session header,需要调用方在请求里显式注入。不带此 Header 的请求会按普通调度策略处理。

会话 TTL

会话绑定关系的存活时间(秒),过期后自动清除。默认值为 1800 秒。

最大条目数

会话亲和缓存可保存的最大会话记录数。超出上限后,最早的记录将被淘汰。默认值为 100000。

软最大负载比

仅在 Soft 模式下生效。当首选实例的负载超过平均负载 × 软最大负载比时,放弃亲和路由,选择负载更低的实例。默认值为 1.5。

强制携带 Session ID

开启后,不带 Session ID Header 的推理请求将在请求解析阶段被直接拒绝(HTTP 400),不进队列、不调度。

用于防止无亲和标识的大请求随机落到某个实例打爆 KV Cache。

仅在会话亲和开启时生效。

第 2 层:前缀缓存(Prefix Cache)

优先选择已缓存相同前缀的实例,减少重复计算,提升缓存命中率。适用于系统提示词固定、批量文档处理等输入前缀高度重复的场景。未命中时下沉到负载均衡策略层。

参数

说明

负载容忍因子

缓存命中的实例负载超过平均负载 ×(1 + 容忍因子)时,不再优先路由到该实例。默认值为 0.3。

等待请求阈值

实例等待中的请求数超过此值时,认为实例过载。即使该实例有缓存命中,也不再优先向其路由,避免单实例过载。默认值为 2。

命中率阈值

前缀匹配长度占 Prompt 总长度的比例低于此值时,视为未命中。默认值为 0.50。

第 3 层:负载均衡策略

在会话亲和与前缀缓存均未命中时,按所选算法在推理实例间分配请求。支持以下算法:

算法

适用场景

least-token

选择当前正在处理 Token 数最少的实例。适合 Token 长度差异大的场景,可有效均衡计算压力。

least-request

选择当前请求数最少的实例。适合请求处理时长相近的场景。

round-robin

轮询,依次将请求分配到各实例。适合实例性能均匀、负载相对稳定的场景。

前缀索引

调度器内常驻的前缀索引树,用于计算理论字符缓存命中率上限。开启前缀缓存调度策略时,索引数据同时作为路由匹配依据,优先将请求调度到缓存命中率最高的实例。以下参数控制索引的内存边界与清理周期。

参数

说明

缓存 TTL

前缀索引条目的存活时间(秒),过期后自动清除。默认 259200 秒(3 天)。若业务会话通常在 1 小时内结束且显存紧张,可缩短至 3600 秒以加快冷数据回收。

维护间隔

后台扫描并清除过期索引条目的执行周期(秒)。默认 60 秒,适合大多数场景;仅当集群 CPU 负载持续偏高时,可酌情调大。

内存门限比例

与预留内存共同决定调度器进程的内存驱逐触发点,以先触发者为准。

调度器进程内存超过容器内存 × 该比例时,按 LRU 驱逐最久未使用的索引条目。0表示用默认值0.70。

调度器容器频繁 OOM 时可调低;索引条目频繁过早被清除、影响路由决策时可酌情调高。

预留内存

为容器系统和运行时保留的最低可用内存(GB),与内存门限比例共同决定内存驱逐触发点。

调度器进程内存超过容器内存 − 预留内存时,按 LRU 驱逐最久未使用的索引条目。0表示用默认值 1.50 GB。

调度器容器被系统 OOM Kill 时可调大;索引条目频繁过早被清除时可酌情调小。

Block 大小

前缀索引分块的字节大小(默认 128)。运行时修改后旧索引不再与新分块交叉匹配,命中率会短暂下降至索引刷新;短于一个完整 Block 的前缀不会被索引。

PD 分离

在 Prefill-Decode(PD)分离部署模式下,Prefill 和 Decode 阶段分别在独立的实例上执行,可为 Decode 阶段配置独立的调度策略。

参数

说明

PD 分离模式

选择 PD 分离的实现方式,需与部署时使用的推理引擎保持一致,例如 sglang-mooncake。

Decode 调度策略

PD 分离启用时 Decode 角色的独立调度策略;Prefill 角色沿用主调度策略。可选算法与主调度策略的负载均衡层一致(least-token、least-request、round-robin)。

SGLang PD 独立配对

仅用于 SGLang Mooncake PD 分离场景(vLLM PD 不受影响)。开启后,调度器可以为 prefill 与 decode 实例独立、自由地配对,不再要求两侧实例编号相互对齐,从而在缓存亲和与负载均衡上获得更大的调度空间。

  • 适用场景:使用 SGLang PD 分离、且希望由调度器独立决策 P/D 配对时开启。

  • 版本要求:引擎需 ≥ v0.5.10,且 prefill/decode 均已开启 --enable-dp-attention。引擎 ≥ v0.5.16:打开本开关即可、无需其它改动;引擎 ≤ v0.5.15:prefill 还需在启动参数中显式加 --load-balance-method round_robin(或改设环境变量 SGLANG_DISAGGREGATION_FORCE_QUERY_PREFILL_DP_RANK=1,二选一),否则混合配对的请求会在 Prefill 侧失败。

调度超时与熔断

网关等待调度结果的超时上限与熔断保护:超时回退本地轮询;持续超时达比例后熔断,冷却后由探针自动恢复。关闭熔断仅关闭快速回退保护,超时上限始终生效。

参数

说明

熔断器

关闭后退回纯超时回退行为(排障用);调度等待超时不受此开关影响。

调度等待超时

单次调度尝试的等待上限,超时即回退本地轮询。

开闸失败比例

10s 滚动窗口内调度失败占比(失败数/总尝试数)达到该比例即熔断开闸;样本量不足 10 时不判定,防低流量误判。

熔断冷却时长

开闸后保持熔断的时长,到期后由探针试探恢复。

探针等待上限

冷却到期后探针请求的等待上限;探针成功则闭闸恢复调度,失败则重新开闸。

模型路由

根据请求中的 model 字段将请求路由到工作站内对应的推理服务实例。启用后,可通过“默认模型”配置项指定无匹配时的兜底行为。

参数

说明

默认模型

  • 严格匹配•model可选(空 model 路由到任意实例)

  • 严格匹配•model 必填(空 model 报错)

近似匹配

未命中模型映射时,对实例的模型启用近似匹配:

① 同一模型名的不同写法可互相匹配(忽略大小写、分隔符与 Org 前缀,如 qwen2.5_72b_instruct 可匹配 Qwen2.5-72B-Instruct);

② 请求的模型名是部署模型名的简写时可匹配(如 qwen2.5-72b 可匹配 Qwen2.5-72B-Instruct);

③ 支持通配符 *。关闭时仅匹配同一模型名(允许大小写与分隔符等写法差异),不做简写与通配符匹配。

模型映射

将模型名称(支持通配符 *)与后端服务关联。匹配按从上到下顺序,首条命中即生效;命中后仅路由到所列服务,不再回退实例的模型匹配。锚定全串、大小写不敏感,纯字符串即精确匹配。

智能选模

智能选模通过外部分类服务自动评估请求难度,将请求路由到不同档位(L1/L2/L3)的候选模型,在保障回答质量的同时降低推理成本。

详细配置说明请参见智能选模。

说明

weight 分流不区分模型名,与智能选模不兼容,无法同时开启。如需使用智能选模,请先将分流切换为 prefix 模式或关闭分流路由。

服务灰度

服务灰度用于将流量按权重分配到不同的推理服务,实现灰度发布和 A/B 测试。通过配置灰度规则,可以控制不同模型或所有模型的流量分配比例。

灰度规则

每条灰度规则包含模型选择和服务权重配置。匹配按从上到下顺序,首条命中即生效。

列

说明

示例

服务

选择要应用灰度规则的模型服务。支持通配符 *,如"所有模型 (*)"表示匹配所有模型。

所有模型 (*)、qwen-*

权重

服务:选择或输入目标推理服务名称。

选择服务

权重:分配给该服务的流量权重。占比根据权重自动计算显示。

100、0

单击添加目标可为当前规则增加更多服务,实现流量按比例分配。

单击添加规则可创建新的灰度规则,匹配按从上到下顺序,首条命中即生效。

分流代理

将工作站接收的请求按配置规则转发到外部上游 API 服务(如PAI Token服务),实现本地推理服务与外部服务的流量协同,提升服务整体的稳定性。

适用场景:适合需要混合本地与外部服务、提升稳定性的场景,例如灰度发布、A/B 测试、故障转移等。通过分流代理可以将部分流量转发到外部 API 服务,实现服务的高可用和灵活切换。

说明

分流代理和智能选模一般不同时启用。两者服务于不同的使用需求:分流代理用于服务稳定性和灰度发布,智能选模用于成本优化。

启用后,需选择分流策略,并在代理列表中配置各代理条目。

分流策略

策略

说明

Weight(权重分流)

按各代理配置的权重比例分配请求。适合灰度发布、A/B 测试等需要按比例控制流量的场景。选择此策略时,代理列表中无需配置模型规则,只需设置权重值。

Prefix(模型前缀匹配)

按请求的 model 名称前缀将流量路由到对应的代理。选择此策略时,需要在代理列表中配置模型规则,指定每个代理匹配的模型前缀(支持通配符 *)。

代理列表

代理列表中至少包含一条"本地服务"条目,代表工作站自身的推理服务。可添加外部上游服务作为额外代理。各列含义如下:

列

说明

状态

该代理条目是否启用。禁用后请求不再转发至该代理。

代理地址

上游 API 服务的访问地址。"本地服务"为固定条目,表示工作站自身的推理服务。

密钥

访问该代理所需的 API 密钥。本地服务无需填写。

权重

Weight 策略下分配给该代理的流量权重,各代理按权重比例承接请求。Prefix 策略下不显示此列。

模型规则

Prefix 策略下请求里 model 字段的匹配方式。支持通配符 *(如 qwen* 匹配所有 qwen 开头的模型),多条命中取最长前缀,用单个 * 作为兜底规则。Weight 策略下不显示此列。

故障转移

勾选后,当其他代理不可用或调用失败时,系统按列表顺序切换至此代理重试。本地服务不支持故障转移。

说明

外部代理服务遵循其自身的限流规则,不受工作站请求限流配置的影响。

请求限流

对工作站的并发请求进行限制,防止后端推理实例因流量过大而过载。超限时可选择直接拒绝或排队等待,支持按整体生命周期、Prefill 阶段和 Decode 阶段分别设置并发上限。

参数

说明

超限处理

超出并发上限时的处理方式:直接拒绝(立即返回错误)或排队等待(请求进入等待队列)。

限流作用域

限流计数的粒度:

  • Instance(实例级):逐个检查实例,只路由到负载未超限的实例。

  • Service(服务级):检查整个集群,当所有实例总负载超过阈值(单实例限制*实例数)时触发限流

整体并发限流

请求从派发到响应结束全程占用配额(占用一个并发位直至请求完成)。仅 PD 一体部署生效,PD 分离部署下不计入。

Prefill 并发限流

观测窗口:从派发到收到首 token 之前。该阶段含引擎排队 + prefill 计算,二者无法区分,统一记为 prefill 阶段占用。PD 一体的 prefill 阶段、PD 分离的 prefill 节点 均生效。

Decode 并发限流

观测窗口:从收到首 token 到响应结束。仅 PD 分离部署生效,限制 decode 节点;PD 一体部署下不计入。

流量镜像

将线上真实请求按采样比例复制到目标地址,目标服务独立处理镜像流量,不影响正常请求的响应结果。适用于新版本灰度验证、性能对比和数据采集场景。

参数

说明

目标地址

接收镜像流量的服务地址。

目标模型

镜像请求中替换的模型名,留空则保持原始请求的模型

采样比例

被镜像的流量占总流量的比例(0%~100%)。

认证 Token

访问目标地址所需的鉴权 Token。

超时时间

镜像请求的超时时间(毫秒),超时后自动放弃该镜像请求,不影响正常请求的处理。

记录日志

是否记录镜像请求的详细日志,便于后续分析和对比。

全球调度

当前地域工作站推理资源紧缺时,可将业务流量调度至其他空闲地域的推理服务实例,实现全球算力统筹调配与资源高效复用。

启用全球调度后,在成员列表添加其他地域的InferX服务,从而实现多地域调度:

  • 成员名称:自定义成员名。

  • URL / Token :填写其他地域部署的InferX服务的Base URL与 API 密钥。

数据备份

数据备份用于定期备份管理数据,服务启动时从最新备份(自动或手动)恢复。备份目录在服务启动配置中设置(改后需重启);备份频率与轮转在配置中心修改后,下次备份后生效。

说明

注意:工作站配置 Redis 的情况下该功能不适用。Redis 由自身持久化管理,无需本组件做周期备份。若曾使用内置存储并留下备份文件,可通过"导入到 Redis"完成迁移。

配置说明

工作站不配置 Redis 时,需先为工作站配置备份目录。在服务启动配置中添加以下 JSON 配置:

{
  "llm_gateway": {
    "persist_snapshot_dir": "/mnt/oss/persist-test/state_persist_llm_gateway/snapshots"
  },
  "storage": [
    {
      "mount_path": "/mnt/oss/persist-test/",
      "oss": {
        "path": "oss://pai-test-changjin/inferx/",
        "read_only": false,
        "type": "ossfs"
      }
    }
  ]
}

默认使用智能路由内存作为持久化存储方法。这种用法不依赖外部组件,但稳定性不够好,在异常场景里如果智能路由所有的实例都挂了,数据会丢。因此需要额外挂载一个 OSS 来备份数据,防止丢数据:

  • 在 storage 里配置 mount_path:挂载 OSS,来让程序能够读写外部存储。

  • 在 llm_gateway 里添加 persist_snapshot_dir 的配置,这个配置必须是上面那个mount_path的子目录,程序运行过程中会定时在这个位置生成数据备份文件。

备份操作

配置备份目录后,可在本页执行以下操作:

操作

说明

导出

手动导出当前数据备份。需要时可随时手动导出。

导入

从备份文件导入数据,恢复服务状态。

导入到 Redis

若曾使用内置存储并留下备份文件,可通过此功能完成迁移到 Redis。

用户流控

用户流控从用户维度控制请求数与 Token 用量,避免单用户资源消耗失控。与请求限流不同:请求限流针对单实例/单服务的并发保护;用户流控面向租户内各用户的流速、并发和周期性配额。

  • 时区:IANA 时区,用于可调用时段与按天/周/月配额边界。

  • 套餐模板:支持为不同用户组配置不同的限流套餐。

    在配置中心创建套餐模板后,可在用户管理中为用户绑定。还可将某个套餐设为默认套餐,用户未绑定限流套餐时,使用默认套餐。

    套餐模板支持配置以下四种限流能力,可独立启用或组合使用(关闭能力会保留已填写的配置,再次开启后仍可使用):

    • 可调用时段:允许调用的本地时段(左闭右闭,精确到分钟)。可按星期限制;不配置或全选表示每天。空表示始终允许。全天请选 00:00–23:59。跨午夜须拆成两段,且星期分别写在对应那天(例如:周五 22:00–23:59 + 周六 00:00–02:00)。限制用户可发起请求的时间段。非可调用时段内的请求将被拒绝。

    • 配额(Quota):请求数/Token 数的周期性配额,按周期窗口控制。

      参数

      说明

      Token 权重

      用于将 input/output/cached token 加权折算到配额。

      • Input:未命中缓存的 input token 的权重。

      • Output:Output token 的权重。

      • Cached:命中缓存的 input token 的权重。

      配额窗口

      设置周期性配额,包括周期(每 5 小时/每天/每周/每月)、请求数量上限和加权 Token 数上限。0 表示不限制。

    • 并发限制:用户维度最大并发请求数限制。超出后新请求将被拒绝或排队等待。

    • 速率限制(RPM/TPM):基于令牌桶算法,按每分钟请求数(RPM)和每分钟 Token 数(TPM)进行流速限制。

      参数

      说明

      RPM

      每分钟最大请求数,0 表示不限制。

      TPM

      每分钟最大 Token 数,0 表示不限制。

      默认输出预估

      当用户请求未指定 max_tokens 时,使用此值作为输出 token 的预估值进行 TPM 预扣;请求中已指定时按请求值预扣。仅在启用速率限制时生效。

    重要

    预检模式下,限流规则照常计算并记录命中情况,但不会真正拦截任何请求。适合上线新限流规则前验证阈值是否合理——限流阈值配错可能导致线上流量被大面积误杀,而真实流量分布往往与预估不同,先观察再启用更安全。

高级配置

高级配置提供请求超时和协议与转换的精细化控制,满足特殊场景需求。

请求超时

配置网关到后端推理服务的请求超时,包括流式和非流式请求的超时时间,单位:秒(s)。0 表示不限制。

参数

说明

流式首包超时

流式响应首个数据包的超时时间。默认 300s。

流式帧间空闲超时

流式响应中两个数据包之间的最大空闲时间。默认 300s。

流式总超时

整个流式请求的总时长上限(秒),默认 0(不限制)。

非流式总超时

非流式响应的总超时时间。默认 900s。

协议与转换

配置 API 协议透传和消息格式转换,兼容不同客户端和模型。

参数

说明

Responses API 透传

  • 关闭(默认):将Responses API请求转换为后端服务支持的OpenAI Chat Completions格式。

  • 开启:直接透传原始请求到后端服务。

Anthropic API 透传

  • 关闭(默认):将Anthropic API请求转换为后端服务支持的OpenAI Chat Completions格式。

  • 开启:直接透传原始请求到后端服务。

保持 Anthropic System 消息位置

启用后,保持 Anthropic System 消息在请求中的原始位置,不移动到消息列表开头。

强制返回流式 Usage

即使客户端未设置或显式关闭 stream_options.include_usage,也向客户端返回流式 usage。开启后不再按客户端偏好过滤 usage,网关内部指标仍正常采集。

推理力度映射模式

  • 作用:仅影响 Anthropic / Responses → OpenAI 的协议转换,决定客户端 reasoning_effort 顶档(high / xhigh / max)如何下发到后端;none/low/medium 等档位不受影响。

  • 适用模型:只对推理(thinking)模型有效,如 Qwen3、GLM-4.5、DeepSeek-R1/V3、Kimi-K2 等;非推理模型此配置无效。

  • 支持以下 3 种模式:

    • 原样透传(适配 SGLang ≥ v0.5.16):将客户端的推理力度参数原样传递给后端服务,由后端裁决。需 SGLang ≥ v0.5.16 才认 minimal/xhigh/max 全量档位。

    • 顶档转 max(适配 SGLang v0.5.12–v0.5.15):high/xhigh/max → reasoning_effort=max、minimal → low。更老版本收到 max 会返回 HTTP 400。

    • 兼容收敛(默认,适配 SGLang v0.5.12 之前的老后端):顶档映射为 high、minimal 映射为 low,只吐 none/low/medium/high,为默认值。