V2 独立版愿景
模型路由
HeteroFlow 是本站的异构算力与大模型调度产品。模型路由。模型路由 模型路由管理同一模型多版本/多引擎的路由规则,支持灰度发布、A/B 测试和故障降级。 核心概念 模型路由是 Gateway 路由请求的核心依据。每个推理服务创建时自动注册一个默认路由,也可手动管理多路由实现灰度发布。 路由数据结构 字段 类型 说明 ------ ---…
模型路由
模型路由管理同一模型多版本/多引擎的路由规则,支持灰度发布、A/B 测试和故障降级。
核心概念
模型路由是 Gateway 路由请求的核心依据。每个推理服务创建时自动注册一个默认路由,也可手动管理多路由实现灰度发布。
路由数据结构
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 格式 mr-{hex16} |
| model_name | string | 模型名称(路由匹配键) |
| task_group_id | string | 关联任务组 |
| engine | string | 引擎类型:vllm / sglang / llamacpp |
| priority | int | 优先级(0 最高,数值越大优先级越低) |
| weight | int | 权重(0-100,0 表示仅作备选) |
| version | string | 版本标签(如 v1, canary, experimental) |
| algorithm | string | 负载均衡算法覆盖 |
| status | string | active / 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 的默认算法。