背景:为什么需要模型集成?
大语言模型(如GPT-4、LLaMA等)在各类任务中表现出色,但不同模型各有优劣。例如,某些模型擅长数学推理,另一些则擅长常识问答。通过集成(Ensembling),我们可以结合多个模型的优势,提升整体性能。现有的LLM集成方法可以分为三类:
- 输出级集成(Output-level):如LLM-BLENDER,直接对多个模型的完整输出进行聚合
- 概率级集成(Probability-level):如DEEPEN和GAC,在每一生成步骤融合不同模型的概率分布
- 训练级集成(Training-level):如FUSELLM,将多个模型的输出概率向量作为训练标签
然而,现有方法有两大问题:
- 模型兼容性差:不同模型的分词方式(Tokenization)、词汇表(Vocabulary)差异大,导致概率对齐困难。
- 计算开销高:传统方法需要处理整个词汇表(可能包含数十万词),导致推理速度慢。
UNITE的核心思想
UNITE提出了一种高效且兼容性强的集成方法,核心思想是:
只关注每个模型预测的Top-k个最可能的词(Token),而非整个词汇表。
这一设计大幅减少了计算量(仅需处理0.04%的词汇量),同时通过合并各模型的Top-k词,保留了关键信息。
UNITE的核心步骤
第一步:选择合适的模型
并不是任意模型都可以用来集成,任意选择模型进行集成反而可能影响最终效果,根据论文分析,集成效果受如下三点影响:
- 模型性能差距
对于模型M1和M2,其在任务T上的性能差距Δ(M1,M2,T)显著影响集成效果。实验表明:
当 |Δ(M1,M2,T)|<10% 时,集成可能提升性能,当 |Δ(M1,M2,T)|>15%时,集成往往降低最佳模型性能。
2. 词汇表大小影响
令人意外的是,词汇表大小差异对集成效果影响不显著。对于词汇表V1和V2,即使|V1|≫|V2|(如DeepSeek的102,400 vs Mistral的32,768),模型仍可有效集成。
论文认为约80%的词汇是常见词,不同模型对这些常见词的tokenization没有明显差异,因此词汇表大小差异影响有限。
3. 响应风格差异
即使模型性能和词汇表大小相近,响应风格差异也会影响集成效果。例如,对于问题Q:
- 模型M1可能直接返回简短答案A
- 模型M2可能生成详细分析再得出答案A
差异过大的响应风格会导致token分布显著差异:PM1(ti|Q)≠PM2(ti|Q),从而降低融合的效果。
因此,UNITE设计的模型选择策略为:
- 选择目标任务上性能最佳的模型
- 迭代选择下一个性能最好且响应风格相近的模型,论文中通过模型的输出长度来计算响应风格,即将响应风格定义为两个模型输出长度的比值,并认为长度相近则风格相近
- 重复直到达到最大模型数量或没有更多兼容模型
第二步:生成Top-k候选词并构建联合词集(Union Set)
- 对于每个模型,输入相同提示词(Prompt),生成其预测的Top-k个词及对应概率。例如:
- 模型A的Top-3词:
["apple", "fruit", "red"]
,概率为[0.6, 0.3, 0.1]
。 - 模型B的Top-3词:
["fruit", "banana", "apple"]
,概率为[0.5, 0.4, 0.1]
。
- 合并所有模型的Top-k词,去重后得到联合词集。例如:
- 联合词集:
["apple", "fruit", "red", "banana"]
。
第三步:计算每一个token的新概率
如上边的例子,每一个模型输出的top-K个词,每个词的概率都不同,而且不同模型会输出不同的词,那么该怎么解决这种输出词汇的差异,并计算出token的新分布呢?
1. 未出现token的处理策略
UNITE的一个创新是处理不在某模型词汇表中的token的概率对齐策略:
- 使用分词器Ti将不在词汇表中的token w分解:w1,...,wm←Ti(w)
- 使用第一个子token w1的概率作为原token的估计
举个例子:如果某个词在模型B的词汇表中不存在(如模型B无法识别“red”),则用模型B的分词器将其拆解。如上一节的例子:
- “red”被拆解为
["r", "ed"]
,取第一个子词“r”的概率作为模型B计算的red的概率。
2. 最终概率的计算过程
继续用上一节的例子来展示UNITE的计算过程:
- 构建初始Top-k概率矩阵:构建出token的并集之后,可以得到如下的一个概率矩阵:
其中第一行是模型A的概率,第二行是模型B的概率,?表示未知值。列按照{apple, fruit, red, banana}排列。
2. 拓展概率矩阵:接下来需要计算未知值,这里可以分为两种情况:
1. 已经存在于词表的词:假设banana是一个存在于模型A的词表的词,就直接获取模型A对于"banana"这个token的概率,放入矩阵中
2. 未出现token的处理策略:假设模型B的词表中没有"red",就将“red”利用模型B的分词器被拆解为["r", "ed"]
,取第一个子词“r”的概率作为模型B计算的red的概率。
这里假设拓展后的概率矩阵为:
3. 计算归一化后的概率矩阵:可以看到,矩阵中的每一行,即模型计算出的对top-k token的概率值,其总和不为1,因此,使用softmax函数对每个模型的概率进行归一化
4. 计算token的平均概率:每一个token的概率值为所有模型对该token的概率值的均值,即:
最终计算出的token的概率矩阵为:
5. 选择概率最高的token
因此,UNITE算法选择"fruit"作为下一个token,其平均概率为0.2850。
为什么UNITE更高效?
传统方法需要对齐整个词汇表(例如处理30,000个词),而UNITE只需处理各模型的Top-k词(例如k=10时,仅需处理10~20个词)。
- 延迟(Latency) :UNITE仅比单个模型慢10毫秒/词,而传统方法(如Deepen、GAC)需要数百毫秒。
- 内存占用:UNITE处理的Token数仅为传统方法的千分之一。
关键实验结果
1.评估指标说明
实验使用了六个广泛认可的基准测试,评估不同能力维度:
- GSM8K:评估数学推理能力的基准,包含高质量的小学数学应用题
- PIQA:物理常识推理基准,测试模型对日常物理概念的理解
- MMLU:多任务语言理解基准,涵盖57个学科,全面评估模型知识广度
- ARC-C:挑战性科学推理基准,源自标准化科学测试
- TriviaQA:事实知识检索基准,评估模型的知识库容量
- NQ (Natural Questions) :开放领域问答基准,基于真实Google搜索查询
2. 不同模型组合的实验结果
表1:Mistral、DeepSeek和OpenChat模型集成结果(%)
方法 | GSM8K | PIQA | MMLU | ARC-C | TriviaQA | NQ | 平均 |
---|---|---|---|---|---|---|---|
Mistral-7B | 56.48 | 80.63 | 59.28 | 74.49 | 64.30 | 24.25 | 59.91 |
DeepSeek-7B | 59.67 | 72.66 | 46.97 | 58.73 | 47.63 | 11.37 | 49.51 |
OpenChat-3.5 | 73.46 | 87.10 | 60.80 | 78.05 | 61.77 | 31.08 | 65.38 |
LLM-BLENDER | 70.79 (-2.67) | 83.28 (-3.82) | 60.10 (-0.70) | 76.29 (-1.76) | 56.35 (-5.42) | 25.57 (-5.51) | 62.06 (-3.32) |
DEEPEN | 73.06 (-0.40) | 76.04 (-11.06) | 61.91 (+1.11) | 72.14 (-5.91) | 67.24 (+5.47) | 28.26 (-2.82) | 63.11 (-2.27) |
GAC | 62.85 (-10.61) | 67.85 (-19.25) | 55.15 (-5.65) | 73.04 (-5.01) | 62.22 (+0.45) | 20.72 (-10.36) | 56.97 (-8.41) |
UNITE | 73.31 (-0.15) | 87.50 (+0.40) | 62.13 (+1.33) | 78.70 (+0.65) | 65.80 (+4.03) | 31.78 (+0.70) | 66.54 (+1.16) |
注:OpenChat作为主模型;括号内为相对于OpenChat的增益/减损
表2:LLaMA3系列与Qwen2模型集成结果(%)
方法 | GSM8K | PIQA | ARC-C | MMLU | 平均 |
---|---|---|---|---|---|
LLaMA3-8B | 78.77 | 79.08 | 79.01 | 64.58 | 75.36 |
LLaMA3.1-8B | 80.83 | 82.86 | 79.49 | 66.69 | 77.47 |
Qwen2-7B | 80.78 | 84.57 | 84.92 | 64.96 | 78.81 |
两模型集成 (LLaMA3+Qwen2) | |||||
LLM-BLENDER | 82.69 (+1.91) | 82.53 (-2.04) | 82.98 (-1.94) | 62.07 (-2.89) | 77.57 (-1.24) |
DEEPEN | OOM* | OOM* | OOM* | OOM* | - |
GAC | 80.67 (-0.11) | 80.96 (-3.61) | 84.93 (+0.01) | 67.05 (+2.09) | 78.40 (-0.41) |
UNITE | 84.17 (+3.39) | 85.53 (+0.96) | 85.07 (+0.15) | 69.78 (+4.82) | 81.14 (+2.33) |
三模型集成 | |||||
LLM-BLENDER | 83.30 (+2.52) | 83.47 (-1.10) | 83.48 (-1.44) | 62.55 (-2.41) | 78.20 (-0.61) |
DEEPEN | OOM* | OOM* | OOM* | OOM* | - |
UNITE | 84.99 (+4.21) | 84.98 (+0.41) | 85.39 (+0.47) | 69.12 (+4.16) | 81.12 (+2.31) |
注:Qwen2作为主模型;OOM表示"内存不足";括号内为相对于Qwen2的增益/减损
表3:密集模型与MoE模型集成结果(%)
模型 | ARC-C | PIQA |
---|---|---|
Qwen1.5-72B (密集) | 69.03 | 73.83 |
Mixtral-8×7B (稀疏MoE) | 73.98 | 74.59 |
UNITE | 78.84 (+4.86) | 81.88 (+7.29) |
注:括号内为相对于较好单一模型的增益
3. 计算效率分析
表4:每步操作处理的token数量
基础模型 | 方法 | 每步处理token数量 |
---|---|---|
Mistral (32K) + OpenChat (32K) | DEEPEN | 32,000 |
GAC | 32,770 | |
UNITE | 14.46 | |
LLaMA3 (128K) + Qwen2 (152K) | DEEPEN | 109,566 (OOM) |
GAC | 170,336 | |
UNITE | 14.43 |
注:UNITE处理的token数量仅为其他方法的0.04%以下
表5:延迟对比(ms/token)
方法 | 延迟 (ms/token) | 相对单模型增加 |
---|---|---|
单个模型 (Mistral) | ~76 | - |
单个模型 (OpenChat) | ~77 | - |
UNITE | ~88 | +12 |
GAC | ~123 | +47 |
DEEPEN | ~155 | +79 |
注:UNITE仅比单个模型增加约10ms延迟,远低于其他集成方法
4. 超参数敏感性分析
表6:超参数k对UNITE性能的影响(TriviaQA准确率%)
设置 | 准确率 |
---|---|
Mistral-7B (基线) | 64.30 |
OpenChat-3.5 (基线) | 61.77 |
k = 5 | 64.52 |
k = 10 | 65.80 |
k = 20 | 65.77 |
k = 100 | 65.65 |
k = 1000 | 65.74 |
k = 10000 | 65.72 |
注:k=10达到最佳效果,进一步增加k值对性能提升有限
5. 结果分析与讨论
- 整体性能:UNITE在所有评估基准上均优于现有集成方法,平均提升1.16%~2.33%
- 一致性与稳定性:
- 当集成性能相近的模型时,UNITE表现出色(如Qwen2+LLaMA3)
- 与LLM-BLENDER和GAC不同,UNITE很少出现性能下降的情况
- 即使集成架构差异很大的模型(密集模型与MoE模型),UNITE仍能实现显著提升
3. 计算效率优势:
- 相比于处理整个词汇表,UNITE每步仅处理~14个token
- 延迟增加最小(+12ms),仅为DEEPEN的1/6.5、GAC的1/4
- 对于大词汇表模型(如LLaMA3和Qwen2),DEEPEN因内存限制无法运行,而UNITE无此问题
4. 超参数稳健性:
- k=10是一个效果最佳的平衡点
- 即使将k增加到10000,性能也没有明显提升,证明了UNITE方法的有效性
- 这一发现支持了论文的核心假设:下一个token通常在top-k候选中,处理整个词汇表是不必要的