水鲁焘头像

semantic-router 的 AutoMix 选择算法:基于 POMDP 的代价-质量级联路由与自校验实战指南

  • 后端
  • API网关
  • 模型推理服务
  • AI Agent

【免费下载链接】semantic-router

An open, programmable decision layer for models and compute.

项目地址: https://gitcode.com/gh_mirrors/sem/semantic-router
点击查看 免费下载

导读

AutoMix 是 semantic-router 中一种面向「动态成本-质量权衡」的模型选择算法,其设计源自论文 Automatically Mixing Language Models(arXiv:2310.12963,NeurIPS 2024)。它基于 POMDP(部分可观测马尔可夫决策过程)实现「小模型优先、按需升级」的级联路由,并通过自校验(entailment 蕴含校验或 logprob 置信度)决定是否升级到更大的模型。阅读本文后,你将掌握 automix 的算法原理、预选择与级联两种执行模式、全部配置参数的语义与默认值,以及它在路由决策中的真实调用链与落地限制。

本文对应的权威实现与配置入口包括:

1. 算法概述:三步级联路由

AutoMix 实现的是三步级联路由,核心思想是「先便宜、后校验、再升级」:

  1. Generate(生成):从 modelRefs 中最小的(同时也是最便宜的)模型开始生成回答;
  2. Self-Verify(自校验):由同一模型通过**蕴含校验(entailment check)**或 logprob 分析验证自己的答案;
  3. Route(路由):若验证置信度低于阈值,则升级到下一个更大的模型,直到达到升级次数上限。

在源码中,这一思想被明确注释在 AutoMixConfig 结构体上(src/semantic-router/pkg/selection/automix.go#L36-L49),并同时支持两种模式:

  • 预选择模式(Pre-selection):在请求进入时直接估算最优模型,一次性完成选择;
  • 级联模式(Cascaded):先选最小模型,再由 SelectWithVerification() 驱动的验证-升级循环,需要 looper 集成。

2. POMDP 决策框架:信念状态与粒子滤波

AutoMix 用 POMDP 框架对「路由对模型能力的未知程度」进行建模。路由对每个候选模型的真实性能并不完全可知,因此维护一个信念状态(belief state) $b_t$,并通过粒子滤波在每次交互后更新:

$$b_{t+1} = \text{Update}(b_t, o_t, a_t)$$

其中 $o_t$ 是观测(即验证结果),$a_t$ 是动作(即所选的模型)。最优策略最大化期望收益:

$$\pi^* = \arg\max_\pi \mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t (P_t - \lambda C_t)\right]$$

其中 $P_t$ 为性能,$C_t$ 为成本,$\lambda$(对应配置项 cost_lambda)控制成本与性能的权衡,$\gamma$(对应配置项 discount_factor)为折扣因子。

在源码层面,AdaOpsSolver(src/semantic-router/pkg/selection/pomdp_solver.go#L28-L59)实现了论文中的 AdaOps POMDP 求解器,其要素映射如下:

POMDP 要素含义源码实现
状态 $S$⟨当前 LM, 各 LM 性能⟩粒子集合 particles,每个粒子是 model -> estimated_performance 的映射
动作保留答案 或 路由到更大 LMSelectAction() 中的 keep / escalate
观测验证器给出的正确性概率 $v$高斯似然 exp(-diff²/(2σ²)),σ=0.15
奖励$R = \text{Performance} - \lambda \times \text{Cost}$updateValueFunction() 中 belief - costLambda*normalizedCost

粒子滤波的核心流程在 UpdateBelief()(src/semantic-router/pkg/selection/pomdp_solver.go#L137-L203)中:先按观测似然计算每个粒子的重要性权重,归一化后做重要性重采样(roulette wheel selection),再对新粒子施加少量噪声保持多样性,最后向观测值方向以学习率 α=0.2 修正估计,并更新价值函数。

3. 核心优势

  • 低成本优先:优先路由到更小/更便宜的模型,仅在必要时才升级;
  • 自校验机制:通过蕴含校验或 logprob 置信度评估回答质量,无需外部标注;
  • POMDP 决策框架:以理论化的方式求解最优成本-质量路由,而非简单阈值规则;
  • 粒子滤波支持:用粒子集合近似信念状态,支持不确定性建模;
  • 校验行为局部化:验证逻辑只作用于需要它的那条决策,不影响其他路由。

4. 执行流程

4.1 预选择模式(Select Flow)

预选择模式下,一次请求即可完成模型选择:

mermaid

对应源码是 AutoMixSelector.Select()(src/semantic-router/pkg/selection/automix.go#L263-L320):先按成本升序排序候选(sortByCost),再根据 cost_aware_routing 走 selectCostAware(代价感知)或 selectQualityOnly(纯质量)两条路径。

代价感知打分的关键公式在 computeExpectedValue()(src/semantic-router/pkg/selection/automix.go#L414-L452):

value = quality - cost_penalty + escalation_value * (1 - verification_prob)

其中:

  • quality 来自已学习的平均质量分(AvgQuality)或模型目录证据(evidenceForCandidate),缺失时贡献为 0,不当作实测的 0 分处理;
  • cost_penalty 将每百万 token 成本归一化到 0–1(假设上限约 $10/1M tokens)后乘以 cost_quality_tradeoff;
  • escalation_value 在 verification_prob < verification_threshold 时生效,等于 discount_factor * EscalationReward。

此外,在 selectCostAware 中,对验证概率已达到阈值的模型给予 10% 的价值加成(value *= 1.1),体现「更可能一次成功」的优势。

4.2 级联模式(Cascade Flow:验证 + 升级)

mermaid

级联模式由三组 API 驱动(src/semantic-router/pkg/selection/automix.go#L737-L867):

  1. InitializeCascade:通过 GetEscalationChain(按 estimateParamSize 估算的参数规模从小到大排序)构建升级链,返回最小的起始模型与初始级联状态;
  2. VerifyAnswer:调用外部验证服务器做蕴含校验,返回 VerificationResult{Confidence, ShouldEscalate, NextModel, Reasoning};
  3. ContinueCascade:检查验证结果——若 ShouldEscalate 且未达 MaxEscalations 上限,则切换到升级链中的下一个模型继续;否则接受当前回答并返回完成信号。

值得注意的降级保护:当 ShouldEscalate 为真但当前模型已是升级链最后一个(无更大模型可用)时,VerifyAnswer 会自动把 ShouldEscalate 置为 false(src/semantic-router/pkg/selection/automix.go#L687-L693);若验证服务器未配置或调用失败,ContinueCascade 会以警告方式接受当前回答,保证可用性。

4.3 验证两种路径的实现对照

验证方式触发配置实现位置
logprob 置信度use_logprob_verification: true由 use_logprob_verification 开启,对应置信度估计路径
蕴含校验(entailment)enable_self_verification: true + verifier_server_urlAutoMixVerifierClient(src/semantic-router/pkg/selection/router_r1_client.go#L121-L239),HTTP 客户端,POST /verify

验证服务器本身是一个独立的 Python 服务(src/training/model_selection/rl_model_selection/automix_verifier.py),按论文做法以 few-shot 方式采样 $k$ 次,计算 p(correct) = count(verified) / k 作为置信度。启动示例:

python automix_verifier.py --port 8889 --model "microsoft/phi-2" --samples 5

looper 侧还有一层共享契约适配器 AutoMixVerifier(src/semantic-router/pkg/looper/verifier_automix.go),它把上述 HTTP 客户端包装成 Verifier 接口(VerifierKindFaithfulness),支持多候选独立打分、以最高分作为总体置信度,并复用了 confidence >= threshold 的接受规则。

5. 解决什么问题

某些路由需要动态的成本-质量优化,而不是「始终选同一个模型」或「应用固定启发式级联」。automix 把自校验和升级策略内置在路由器中,从而只在期望质量收益值得时才多花钱——当验证置信度不足、升级能带来预期收益时,才会付出更大的推理成本。

6. 何时使用

  • 一条路由包含多个成本与质量画像不同的候选模型;
  • 升级应被限制在有界的重试次数内(max_escalations);
  • 路由需要保持成本意识,而非总是选择最强模型;
  • 你希望在基于 POMDP 的最优路由与简单阈值规则之间选择前者。

7. 已知局限

  • 级联模式延迟增加:每一步验证都是一次额外的推理(即额外延迟);
  • 蕴含校验依赖外部服务:需要独立的 LLM 端点(verifier_server_url)支持;
  • 粒子滤波开销:POMDP 信念更新带来额外的计算开销;
  • 数据依赖:缺乏足够历史数据时,POMDP 信念可能无法收敛。

8. 配置指南

算法片段配置(config/fragments/algorithm/selection/automix.yaml)展示了最精简的写法:

algorithm:
  type: automix
  automix:
    verification_threshold: 0.78
    max_escalations: 2
    cost_aware_routing: true

在真实路由配置中,algorithm 片段嵌套在 modelRefs 之后(见 config/config.yaml#L1394-L1421 的 urgent_automix_route 示例):

- name: urgent_automix_route
  description: Cost-aware urgent handling with AutoMix.
  priority: 145
  rules:
    operator: AND
    conditions:
      - type: keyword
        name: urgent_keywords
  modelRefs:
    - model: qwen3-8b
      use_reasoning: false
    - model: qwen3-32b
      use_reasoning: true
  algorithm:
    type: automix
    automix:
      verification_threshold: 0.78
      max_escalations: 2
      cost_aware_routing: true
      cost_quality_tradeoff: 0.35
      discount_factor: 0.9
      use_logprob_verification: true

8.1 完整参数表

以下完整参数均可在 AutoMixConfig(src/semantic-router/pkg/selection/automix.go#L50-L100)与默认值函数 DefaultAutoMixConfig()(src/semantic-router/pkg/selection/automix.go#L103-L118)中得到印证:

参数类型默认值说明
verification_thresholdfloat0.7自校验置信度阈值(0–1),低于此值触发升级
max_escalationsint2最大升级次数
cost_aware_routingbooltrue是否启用成本-质量权衡优化
cost_quality_tradeofffloat0.3成本-质量平衡系数(0=纯质量,1=纯成本)
discount_factorfloat0.95POMDP 折扣因子 γ(0–1)
use_logprob_verificationbooltrue是否用 logprobs 做置信度估计
enable_self_verificationboolfalse是否启用基于 LLM 的蕴含校验(默认关闭,因为它需要外部端点)
verification_samplesint5验证采样次数 k(对应论文中的 k)
verification_temperaturefloat0.7验证采样温度
use_pomdp_routerbooltrue是否启用完整 POMDP 路由(false 时退化为简单阈值路由)
belief_particlesint100POMDP 信念粒子数
cost_lambdafloat0.5POMDP 成本-性能权衡 λ(对应奖励公式中的 λ)
verifier_server_urlstring—AutoMix 自校验服务器 URL(启用蕴含校验时必须设置)
enable_cascadeboolfalse是否启用完整级联执行模式

几点配置注意事项:

  • use_pomdp_router: true 时,NewAutoMixSelector 会构造 AdaOpsSolver,其初始化事件与参数(belief_particles、cost_lambda、discount_factor)会写入日志(automix_adaops_initialized);
  • 若 enable_self_verification: true 但未设置 verifier_server_url,初始化时会记录 automix_verifier_config_missing 警告,且 verifier client 不会被创建(src/semantic-router/pkg/selection/automix.go#L188-L212);
  • verifier 客户端 HTTP 超时默认 60 秒(因为多采样校验耗时更长),可通过 SetTimeout 覆盖(src/semantic-router/pkg/selection/router_r1_client.go#L141-L166)。

9. 模型能力学习与反馈闭环

AutoMix 并不是只靠静态配置工作,它维护每个模型的能力档案(ModelCapability,src/semantic-router/pkg/selection/automix.go#L120-L131):

{
  "model": "qwen3-8b",
  "param_size": 8.0,
  "cost": 0.3,
  "avg_quality": 0.85,
  "quality_known": true,
  "verification_prob": 0.7,
  "escalation_reward": 0.0,
  "query_success_count": 42,
  "query_total_count": 50
}

这些字段从模型配置(InitializeFromConfig,含价格 Pricing.PromptPer1M、证据评分 EvidenceScore)初始化,并通过两条途径在线更新:

  1. UpdateFeedback(src/semantic-router/pkg/selection/automix.go#L343-L360):winner/loser 反馈以学习率 0.1 的指数移动平均(EMA)更新 VerificationProb 与 AvgQuality,并调用 AdaOpsSolver.UpdateBelief 更新粒子信念,随后执行一轮价值迭代(updateValueFunctionLocked);
  2. VerifyAnswer(src/semantic-router/pkg/selection/automix.go#L654-L714):验证通过/失败同样以 α=0.1 的 EMA 更新 VerificationProb。

模型参数规模通过 estimateParamSize(src/semantic-router/pkg/selection/automix.go#L589-L619)从模型名中解析(支持 405b/70b/72b/34b/32b/14b/13b/8b/7b/3b/1.8b/1.5b/0.5b 等常见模式,无法识别时默认按 7B 处理),作为升级链排序与粒子先验的依据。

10. 与 Hybrid 的集成:作为评分组件

automix 不仅可以独立使用,还能作为 hybrid 算法的子评分组件。HybridSelector 通过 automix_weight 引入 AutoMix 的期望值打分(src/semantic-router/pkg/selection/hybrid.go#L41、src/semantic-router/pkg/selection/hybrid.go#L205),组合示例见 config/config.yaml#L1446-L1454:

algorithm:
  type: hybrid
  hybrid:
    experience_weight: 0.4
    router_dc_weight: 0.3
    automix_weight: 0.2
    cost_weight: 0.1
    quality_gap_threshold: 0.08
    normalize_scores: true

这得益于 AutoMixSelector 实现了 ScoreCandidates 接口(src/semantic-router/pkg/selection/automix.go#L324-L332),把每个候选的期望值(computeExpectedValue)暴露给 hybrid 做加权融合——代价感知的起始模型调整仍保留在 Select 中,不污染共享评分集。

11. 源码中的注册与测试验证

12. 小结

AutoMix 为 semantic-router 提供了一条「理论严谨、落地可配」的模型路由路径:POMDP 信念状态 + 粒子滤波负责决策的最优性,自校验负责回答质量的即时观测,级联升级负责将成本约束到有界范围。在预选择模式下它一次决策即出结果;在级联模式下它配合 looper 与外部验证服务器完成「生成-校验-升级」闭环。实际部署时,请结合 cost_aware_routing、cost_quality_tradeoff 与 max_escalations 三个参数,在成本、质量与延迟之间找到适合业务的路由策略。

  • 后端
  • API网关
  • 模型推理服务
  • AI Agent

【免费下载链接】semantic-router

An open, programmable decision layer for models and compute.

项目地址: https://gitcode.com/gh_mirrors/sem/semantic-router
点击查看 免费下载

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/gitblog_01200/article/details/154326367

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--