V2 独立版愿景

模型路由

HeteroFlow 是本站的异构算力与大模型调度产品。模型路由。模型路由 模型路由管理同一模型多版本/多引擎的路由规则,支持灰度发布、A/B 测试和故障降级。 核心概念 模型路由是 Gateway 路由请求的核心依据。每个推理服务创建时自动注册一个默认路由,也可手动管理多路由实现灰度发布。 路由数据结构 字段 类型 说明 ------ ---…

模型路由

模型路由管理同一模型多版本/多引擎的路由规则,支持灰度发布、A/B 测试和故障降级。

核心概念

模型路由是 Gateway 路由请求的核心依据。每个推理服务创建时自动注册一个默认路由,也可手动管理多路由实现灰度发布。

路由数据结构

字段类型说明
idstring格式 mr-{hex16}
model_namestring模型名称(路由匹配键)
task_group_idstring关联任务组
enginestring引擎类型:vllm / sglang / llamacpp
priorityint优先级(0 最高,数值越大优先级越低)
weightint权重(0-100,0 表示仅作备选)
versionstring版本标签(如 v1, canary, experimental)
algorithmstring负载均衡算法覆盖
statusstringactive / inactive

路由决策流程

请求到达 → 匹配 model_name → 查询所有路由
    → 按 priority 升序排列(0 最高)
    → 在最高优先级中按 weight 加权随机选择
    → 收集选中路由下健康的 Task 后端
    → 负载均衡选择最终后端 → 代理转发

降级机制

1. 最高优先级中按 weight 加权选择路由

2. 选中路由无健康后端 → 降级到下一优先级

3. weight=0 的路由不参与主动分流,仅在降级时使用

灰度发布

配置示例

模型 "llama-3" 的 3 个路由:
  Route A: priority=0, weight=80, engine=vllm   → 生产版本
  Route B: priority=0, weight=20, engine=vllm   → canary 版本
  Route C: priority=1, weight=100, engine=llamacpp → 降级备选

正常流量:80% → A, 20% → B
如果 A 和 B 都不健康:100% → C

灰度发布步骤

1. 创建生产版本:weight=100, priority=0, version=v1
2. 部署 canary 版本,创建新路由:weight=20, priority=0, version=canary
3. 调整生产权重为 80
4. 观察验证 canary 表现
5. 验证通过后调整 canary 权重为 100,生产改为 0
6. 下线旧版本

API 接口

获取路由列表

GET /api/v1/model-routes

创建路由

POST /api/v1/model-routes
{
  "model_name": "llama-3",
  "task_group_id": "tg-xxx",
  "engine": "vllm",
  "priority": 0,
  "weight": 80,
  "version": "v1",
  "algorithm": "round_robin"
}

更新路由

PUT /api/v1/model-routes/{id}

可更新权重、优先级、算法等:

{
  "weight": 60,
  "priority": 0
}

删除路由

DELETE /api/v1/model-routes/{id}

自动注册

创建推理服务时系统自动注册一个默认路由:

  • model_name:取自服务名称
  • engine:从镜像名自动推断
  • priority:0(最高)
  • weight:100
  • status:active

负载均衡算法

算法说明
round_robin轮询(默认),依次分配
random随机选择一个后端
least_connections选择当前连接数最少的后端

可在路由级别覆盖 Endpoint 的默认算法。