目前开源了很多LLMs大模,虽然GPT4o一直占据第一位的宝座,但是并不是在每个领域都很强。
例如:写代码的Code-LM、做数学的meta-math,做图文多模态的Macaw-llm等等。都有自己的强项。
PolyRouter提供了一个多LLM路由系统,该系统根据特定需求动态将查询路由到最合适的专家,从而优化性能,减少响应时间和成本,同时提高输出质量。
PolyRouter 解决的问题
·解决了与不同领域专门化的各种LLMs高效互动的挑战
·平衡了查询执行吞吐量、不同LLM带来的不同成本和延迟、以及多路LLM高效查询三个问题。
PolyRouter与Moe的区别
·MoE架构包含一组专家模型,这些模型被训练以专门处理不同的数据区域,同时还有一个门控网络模型,负责确定每个专家对最终预测的贡献
·LM路由方法可以视为MoE架构的一种特殊情况,其中预测路由模型充当门控机制,而可用专家则是LLM的集合。
PolyRouter 提出的路由方案
1.随机路由器(Random-Router):该方法随机选择一个专家模型来执行每个测试查询。它重复此过程多次,并根据各种指标评估性能。
2.kNN路由器(kNN-Router):kNN路由器使用句子变换器对训练查询进行编码,并根据余弦相似度找到与测试查询最接近的训练查询。然后,它选择在最相关的训练查询中表现最佳的专家模型来执行测试查询。
3.BERT路由器(BERT-Router):该方法在各种评估标准下优于所有其他专家模型和路由方法。它根据特定需求动态将查询路由到最合适的专家,从而优化性能,减少响应时间和成本,同时提高输出质量。
如何训练好一个PolyRouter
第一阶段:准备router数据
1.选择专家模型及数据集:首先,需要找到适合特定领域(如生物、编程、物理科学)的指令数据集和模型专家,以便路由模型学习传播相关的查询提示。
2.前向传播与收集指标:
- 在第一步中,对每个专家模型进行前向传播,以收集训练和测试路由模型所需的相关指标。
- 在第二步中,创建专家预测数据集。有必要收集以下指标:负对数似然(negative log likelihood)、BERT相似度评分(BERTSim)、推理时间(以秒为单位)、总输入标记数和总输出标记数。
3.生成软标签:
- 创建专家预测数据集后,选择收集的一个指标来生成软标签(第三步)。
- 当前工作中,使用BERTSim分数来创建软标签,并训练路由专家模型分类器。使用软标签的目的是希望路由模型学习专家的预测性能排名。
4.通过softmax函数生成软标签:
- 对于每个专家模型和每条指令记录,通过带温度的softmax函数生成软标签。例如,对于指令记录r-iexx,专家(类别)softmax概率φr可被表示为:φr(x; T)=p(T)Pj∈E exp(T),其中E为专家总数,T为温度值,x为指标分数的向量。
5.参数设置:在评估中,基于BERT相似度分数生成专家的软标签,并设置温度值T=10。
该过程有助于为路由模型准备合适的输入数据,以提高其预测准确性和效率。
第二阶段:训练router
1.向量化表示:将指令记录通过路由器的嵌入模型(如Bag-of-Words、TF-IDF、BERT或其他语言模型)进行处理,以生成它们的向量化表示(步骤5)。
2.训练分类器:使用生成的嵌入训练提示到专家的分类器(步骤6)。这可以通过非参数的监督学习方法(例如kNN)、经典深度学习模型(例如多层感知器MLP)或更高级的语言序列预训练模型(如BERT)来实现。
第三阶段:Router的应用
1.查询处理:
- 新用户提交查询时,路由器首先对查询文本进行分词和编码,使用的是第2阶段调优后的嵌入模型(步骤8)。
- 然后,路由器对训练或微调后的分类模型(如MLP、BERT)进行前向传递,预测最相关的专家模型(步骤9)。
2.专家模型选择:根据分类模型的预测结果,路由器选择相应的专家提示适配器,提交并执行查询。
3.查询响应:查询执行完成后,路由器接收来自专家模型的回复,并将其转发给最终用户(步骤10)。
4.监控与调优:在路由器的部署期间,平台提供必要的监控能力,用于排查问题和调整路由模型,例如请求数量、查询的语义上下文、专家模型的命中频率以及总体成本等。