Files
llm-compass/docs/llm-router-open-source-research.md
aszerW 88842457ea docs: add LLM router open source research report
新增开源 LLM 路由模型调研报告:
- RouteLLM BERT (推荐方案)
- Arch-Router 1.5B
- 方案对比和实施建议
- 与 tx402.ai 技术对比
- 快速集成代码示例
2026-04-17 23:59:18 +08:00

13 KiB
Raw Blame History

开源 LLM 路由模型调研报告

调研日期: 2026-04-17
调研目的: 寻找可替代 tx402 BERT 路由器的开源方案
报告版本: v1.0


执行摘要

核心发现

当前开源 LLM 路由模型生态已较为成熟,主要方案包括:

方案 准确率 延迟 成本降低 推荐指数
RouteLLM BERT 85-92% 1-5ms 85%
Arch-Router 1.5B 93% 50-100ms -
RoRF (Random Forest) - - -

关键洞察: RouteLLM BERT 是现阶段最成熟的方案,已在生产环境验证,社区支持完善。


1. 主流开源路由方案详解

1.1 RouteLLM (LMSYS/UC Berkeley)

项目信息

技术架构

RouteLLM 提供三种路由器实现:

┌─────────────────────────────────────────────────────────┐
│                    RouteLLM Framework                    │
├─────────────────────────────────────────────────────────┤
│  1. Similarity-Weighted (SW) Ranking                   │
│     - 基于向量相似度的加权 Elo 计算                      │
│     - 无需训练,冷启动友好                               │
├─────────────────────────────────────────────────────────┤
│  2. Matrix Factorization (MF)                          │
│     - 矩阵分解学习查询-模型评分函数                      │
│     - 论文报告最佳性能                                   │
├─────────────────────────────────────────────────────────┤
│  3. BERT Classifier ⭐ 推荐                             │
│     - 基于 BERT 的二分类器                              │
│     - 预测强模型 vs 弱模型                              │
│     - 延迟: 1-5ms (CPU)                                │
└─────────────────────────────────────────────────────────┘

性能指标

基准测试 达到 95% GPT-4 性能所需 GPT-4 调用比例 成本降低
MT Bench 14% (使用 LLM Judge 增强数据) 85%
MMLU 54% (使用 Golden Label 增强数据) 14%
GSM8K 35% 35%

模型规格

  • 基础模型: BERT-base-uncased
  • 参数量: ~110M
  • 输入长度: 512 tokens
  • 输出: 二分类 (0=弱模型, 1=强模型)
  • 推理延迟: 1-5ms (CPU)

优势

  • 完全开源 (代码 + 模型 + 数据集)
  • 轻量级,适合边缘部署
  • 基于 Chatbot Arena 真实偏好数据训练
  • 支持数据增强提升性能
  • 可泛化到未训练的模型对

劣势

  • ⚠️ 仅支持二分类路由(强 vs 弱)
  • ⚠️ 需要针对特定模型对微调以获得最佳效果

快速开始

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# 加载 RouteLLM BERT Router
tokenizer = AutoTokenizer.from_pretrained("lm-sys/routellm-bert")
model = AutoModelForSequenceClassification.from_pretrained("lm-sys/routellm-bert")
model.eval()

def route_query(query: str) -> str:
    inputs = tokenizer(query, return_tensors="pt", truncation=True, max_length=512)
    with torch.no_grad():
        outputs = model(**inputs)
        probs = torch.softmax(outputs.logits, dim=-1)
        prediction = torch.argmax(probs, dim=-1).item()
    
    return "gpt-4" if prediction == 1 else "mixtral-8x7b"

1.2 Arch-Router (Katanemo Labs)

项目信息

技术架构

Arch-Router 采用生成式模型架构:

┌─────────────────────────────────────────────────────────┐
│                  Arch-Router Framework                   │
├─────────────────────────────────────────────────────────┤
│  核心创新: Domain-Action Taxonomy                       │
│  - 使用自然语言定义路由策略                             │
│  - 支持多维度人类偏好对齐                               │
├─────────────────────────────────────────────────────────┤
│  模型架构: 1.5B Generative Language Model               │
│  - 输入: 用户查询 + 策略描述列表                        │
│  - 输出: 最佳匹配的策略标识符                           │
│  - 支持动态添加新策略(无需重新训练)                   │
└─────────────────────────────────────────────────────────┘

性能指标

  • 准确率: 93%(对比 GPT-4 的 85%
  • 优势: 比顶级专有 LLM 平均高 7.71%

模型规格

  • 参数量: 1.5B
  • 架构: Generative Language Model (类似 Llama)
  • 推理延迟: 50-100ms (GPU)
  • 训练数据: 43K 样本

优势

  • 人类偏好对齐,更符合实际使用场景
  • 支持自然语言策略定义,灵活性高
  • 添加新模型无需重新训练
  • 处理多轮对话和复杂意图能力强

劣势

  • ⚠️ 模型较大 (1.5B),推理延迟较高
  • ⚠️ 2025年新发布生产验证较少
  • ⚠️ 需要 GPU 才能达到可接受延迟

快速开始

from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("katanemo/Arch-Router-1.5B")
model = AutoModelForCausalLM.from_pretrained("katanemo/Arch-Router-1.5B")

# 定义路由策略
policies = [
    {"id": "code", "description": "Programming and code generation tasks"},
    {"id": "math", "description": "Mathematical reasoning and calculations"},
    {"id": "creative", "description": "Creative writing and content generation"},
]

# 构建提示
prompt = f"Query: {user_query}\nPolicies: {policies}\nBest policy:"

1.3 其他方案

RoRF (Not Diamond)

  • 类型: Random Forest 分类器
  • 特点: Pairwise 路由决策
  • 状态: 开源,但文档较少

LLMRouter (UIUC)


2. 方案对比总表

维度 RouteLLM BERT Arch-Router 1.5B RoRF
模型类型 BERT Classifier Generative LM Random Forest
参数量 110M 1.5B -
推理延迟 1-5ms 50-100ms -
准确率 85-92% 93% -
支持模型数 2 (强/弱) 动态添加 多模型
训练需求 需针对模型对微调 无需重新训练 需训练
硬件要求 CPU 即可 需要 GPU CPU
开源程度 完全开源 模型开源 开源
社区活跃度 高 (LMSYS) 中 (新兴)
生产验证 已验证 较少 未知

3. 推荐方案

3.1 短期推荐: RouteLLM BERT

适用场景

  • 需要快速替换现有规则路由
  • 资源受限CPU 部署)
  • 对延迟敏感(<10ms
  • 二分类路由足够(强/弱模型)

实施步骤

  1. 安装依赖: pip install transformers torch
  2. 加载预训练模型
  3. 替换现有 select_model_by_length() 函数
  4. A/B 测试验证效果

预期收益

  • 准确率从规则路由的 ~70% 提升到 85-92%
  • 成本降低 50-85%
  • 延迟增加 <5ms

3.2 中期备选: Arch-Router 1.5B

适用场景

  • 需要多模型路由(>2个模型
  • 有 GPU 资源
  • 重视人类偏好对齐
  • 需要灵活的策略定义

实施步骤

  1. 评估延迟是否可接受
  2. 在业务数据上测试准确率
  3. 设计自然语言路由策略
  4. 渐进式替换

3.3 长期方向: 自定义训练

建议路径

Phase 1 (现在): 集成 RouteLLM BERT
    ↓
Phase 2 (1月后): 收集业务数据,评估效果
    ↓
Phase 3 (3月后): 基于业务数据微调 BERT
    ↓
Phase 4 (6月后): 训练专用路由模型

4. 与 tx402.ai 技术对比

技术点 tx402.ai (商业) RouteLLM BERT (开源) 差距分析
分类器 BERT + 多臂老虎机 BERT Classifier 缺少在线学习
延迟 3ms (分类) + 5-10ms (路由) 1-5ms 更优
准确率 ~90% 85-92% 相当
成本降低 70%+ 85% 更优
模型覆盖 40+ 2 (强/弱) ⚠️ 需扩展
在线学习 支持 不支持 ⚠️ 需实现
语义缓存 支持 不支持 ⚠️ 需实现

关键差距

  1. 在线学习: tx402 使用多臂老虎机动态优化,开源方案需要自行实现
  2. 多模型支持: 开源 BERT 仅支持二分类,需要扩展支持多模型
  3. 语义缓存: tx402 的缓存技术未在开源方案中体现

5. 实施建议

5.1 最小可行方案 (MVP)

目标: 用 RouteLLM BERT 替换现有 token 长度路由

改动范围

# 当前实现
def select_model_by_length(messages):
    token_count = estimate_tokens(messages)
    if token_count < 100:
        return "qwen-flash"
    elif token_count < 500:
        return "qwen-plus"
    else:
        return "qwen-max"

# 新实现
def select_model_by_bert(query: str) -> str:
    prediction = bert_router.predict(query)
    return "qwen-max" if prediction == "strong" else "qwen-flash"

验证标准

  • 短查询正确路由到 qwen-flash
  • 复杂查询正确路由到 qwen-max
  • 延迟增加 <5ms
  • 准确率 >85%

5.2 扩展方案 (Advanced)

添加多臂老虎机在线学习

class ThompsonSamplingRouter:
    """结合 BERT 预测 + 多臂老虎机优化"""
    
    def __init__(self):
        self.bert = BERTRouter()
        self.bandit = ThompsonSampling(n_models=3)
    
    def route(self, query: str) -> str:
        # BERT 提供先验
        bert_prediction = self.bert.predict(query)
        
        # 老虎机动态调整
        model = self.bandit.select(bert_prediction)
        return model
    
    def update(self, model: str, reward: float):
        # 根据实际效果更新
        self.bandit.update(model, reward)

6. 参考文献

学术论文

  1. RouteLLM: Ong et al. "RouteLLM: Learning to Route LLMs with Preference Data". arXiv:2406.18665, 2024.
  2. Arch-Router: Tran et al. "Arch-Router: Aligning LLM Routing with Human Preferences". arXiv:2506.16655, 2025.
  3. RouterArena: Lu et al. "RouterArena: An Open Platform for Comprehensive Comparison of LLM Routers". arXiv:2510.00202, 2025.
  4. RouterBench: Hu et al. "RouterBench: A Benchmark for Multi-LLM Routing System". ICML 2024.

开源项目

相关调研

  • X402 生态竞品技术架构深度调研 (本文档同目录)

7. 附录

A. 模型下载命令

# RouteLLM BERT
huggingface-cli download lm-sys/routellm-bert

# Arch-Router 1.5B
huggingface-cli download katanemo/Arch-Router-1.5B

B. 快速测试脚本

# test_router.py
import time
from transformers import AutoTokenizer, AutoModelForSequenceClassification

tokenizer = AutoTokenizer.from_pretrained("lm-sys/routellm-bert")
model = AutoModelForSequenceClassification.from_pretrained("lm-sys/routellm-bert")

test_queries = [
    "你好",  # 简单
    "解释量子计算",  # 中等
    "用 Python 实现一个分布式事务协调器",  # 复杂
]

for query in test_queries:
    start = time.time()
    inputs = tokenizer(query, return_tensors="pt", truncation=True)
    outputs = model(**inputs)
    prediction = outputs.logits.argmax(dim=-1).item()
    latency = (time.time() - start) * 1000
    
    print(f"Query: {query}")
    print(f"Prediction: {'strong' if prediction == 1 else 'weak'}")
    print(f"Latency: {latency:.2f}ms\n")

报告结束

本报告基于 arXiv 论文、GitHub 开源项目和技术博客整理。
数据截至 2026-04-17。
如需更新或补充,请参考原始文献。