多因素
概览
multi_factor 是一种选择算法,它将四种原始运行时信号,即质量、延迟、成本和负载,合成为每个候选项的单一加权分数;还可选择设置 SLO 硬上限,在评分前剔除候选项。
配置归属于声明它的决策,并且各决策的配置相互隔离。如果多个决策使用 multi_factor,则每个匹配到的决策都会使用各自的权重、SLO、分位数和无候选项策略进行评估。
它与 config/algorithm/selection/multi-factor.yaml 保持一致,并解决了议题 #37。
主要优势
- 无需编排多个选择器,即可在单个决策中实现 SLO 感知路由。
- 每种信号都有实时数据源:质量来自
quality_score配置,延迟来自pkg/latency的分位数,成本来自定价,负载来自pkg/inflight。 - 在候选集内进行最小-最大归一化,因此无论信号的绝对尺度如何,权重都具有直观含义。
- 没有需要训练的模型状态,也不需要外部服务。
- 硬性 SLO 上限(TPOT、TTFT、成本、进行中请求数)会在评分前剔除不安全的候选项。
它解决什么问题?
实际路由会同时关注多个维度:候选池中可能既有更快、更便宜的模型,也有更慢但更好的模型;哪一个才是“正确”选择,取决于当前负载和 SLO 目标,而不只是静态配置。现有的单信号选择器(latency_aware、仅按成本路由、仅按质量路由)迫使用户作出非此即彼的选择。multi_factor 让一条决策规则能够在全部四个维度间表达平滑的权衡,还可通过硬性 SLO 上限排除不安全的候选项。
何时使用
- 一条决策有 2+ 个候选模型,它们在多个维度上存在差异(例如,一个模型更快且更便宜,另一个更慢但更好),而你希望用一个旋钮平滑调节取舍。
- 你希望强制执行 SLO(例如,“绝不路由到 p95 TPOT > 200ms 的模型”),但不想另写一条决策规则。
- 质量、延迟、成本和负载都很重要,且没有任何一个维度占据绝对主导地位。
同类算法
latency_aware是它的一个特例,即仅按延迟评分。当其他维度确实无关紧要时,请使用该算法。hybrid将请求时选择器和只读学习证据合成为 一个分数。multi_factor则直接合成原始运行时信号。两者 都有用且互为补充。