用途
RouteLLM 是一个用于服务和评估大型语言模型(LLM)路由器的框架。它旨在解决 LLM 部署中的成本与质量权衡问题:将复杂查询路由到能力更强但更昂贵的模型,将简单查询路由到更便宜、能力较弱的模型,从而在保持响应质量的同时显著降低成本。
主要能力
- 成本节省:提供的预训练路由器在 MT Bench 等常用基准上,可减少高达 85% 的成本,同时保持 95% 的 GPT-4 性能。
- 性能对比:基准测试表明,这些路由器可实现与商业方案相同的性能,而成本降低超过 40%。
- 开箱即用的路由器:支持 4 种在 gpt-4-1106-preview 和 mixtral-8x7b-instruct-v0.1 模型对上训练的路由器:mf(推荐)、sw_ranking、bert、causal_llm,以及随机路由 random。
- 易于扩展:可轻松添加新路由器,并在多个基准上比较性能。
- OpenAI 兼容:可作为 OpenAI 客户端的直接替代品,或启动 OpenAI 兼容的服务器。
- 模型支持:通过 LiteLLM 支持多种开源和闭源模型,也可路由到本地模型。
- 阈值校准:每个路由请求都有一个成本阈值,控制成本与质量之间的权衡,并支持基于 Chatbot Arena 数据集校准阈值。
- 评估框架:包含评估框架,可测量不同路由策略在基准上的性能,目前支持 mmlu、gsm8k 和 mt-bench 基准。
使用方式
- 替代 OpenAI 客户端:初始化 RouteLLM 控制器,指定强模型和弱模型(默认为 gpt-4-1106-preview 和 anyscale/mistralai/Mixtral-8x7B-Instruct-v0.1),设置 API 密钥。在生成请求时,通过 model 字段指定路由器和阈值,格式为
router-[ROUTER NAME]-[THRESHOLD]。 - 启动 OpenAI 兼容服务器:使用
--routers指定可用路由器列表,--config指定配置文件路径。客户端通过 model 字段指定路由器和阈值。 - 阈值校准:基于传入查询样本和希望路由到强模型的百分比进行校准,默认支持基于 Chatbot Arena 数据集校准。
- 评估路由器:使用评估命令,通过
--routers指定要评估的路由器,--benchmark指定基准,结果会输出到控制台并生成性能图。 - 训练新路由器:可实现抽象 Router 类中的
calculate_strong_win_rate方法,并将新路由器添加到 ROUTER_CLS 字典中。
适用场景
- 需要部署 LLM 但希望控制成本的场景。
- 查询复杂度分布不均,简单查询占比较大的应用。
- 希望比较不同路由策略效果的研发场景。
- 需要在不重新训练的情况下更换强弱模型对的场景。
限制
- 对于 mf 和 sw_ranking 路由器,生成嵌入时目前仍需要 OPENAI_API_KEY。
- 阈值校准基于现有数据集,实际路由到各模型的百分比会因实际查询不同而有所差异,建议使用与接收查询相似的数据集进行校准。
- 评估时默认使用 GPT-4 和 Mixtral 作为模型对,修改模型对需使用
--strong-model和--weak-model标志。 - 未提供本地模型支持的具体步骤细节,但可参考相关指南。