Fusechat: Knowledge Fusion of Chat Models
Fusechat: Knowledge Fusion of Chat Models
- 作者: Fanqi Wan, Longguang Zhong, Ziyi Yang, Ruijun Chen, Xiaojuan Quan
- 机构: School of Computer Science and Engineering, Sun Yat-sen University, China
A1 主要贡献
本文旨在解决从零开始训练大型语言模型(LLM)成本高昂且可能导致能力冗余的问题。为此,研究者提出了知识融合(Knowledge Fusion)的概念,即通过轻量级的持续训练,将具有不同架构和能力的现有LLM集成为一个更强大的LLM,从而降低开发成本。
核心问题与研究目标:
现有的LLM尽管在结构和功能上存在差异,但在许多任务上表现出相似的能力,并且各自拥有独特的优势(如图1(a)所示)。因此,核心目标是开发一个框架,能够有效地将这些不同模型的独特优势融合到一个单一、更强大的模型中,而不是从头训练。
主要创新点与贡献:
本文提出了一个名为FUSECHAT的聊天LLM知识融合新框架,该框架包含两个主要阶段:
-
融合(Fuse)阶段:对不同结构和规模的源聊天LLM进行成对知识融合(Pairwise Knowledge Fusion)。首先选择一个“枢轴”(pivot)LLM,然后将该枢轴LLM与其他每个源LLM进行成对融合,通过轻量化微调生成多个与枢轴LLM结构和规模相同的目标LLM。在此过程中,作者提出了一种基于统计的词元对齐(statistics-based token alignment)方法,作为融合不同结构LLM的基础。
-
合并(Merge)阶段:在参数空间中合并第一阶段生成的所有目标LLM。为此,作者提出了一种名为SCE(Select, Calculate, Erase)的新颖方法,该方法根据微调前后参数更新的幅度来确定合并系数。SCE能够在参数矩阵级别上分配系数,实现了更细粒度的合并,且无需额外的训练成本。
FUSECHAT相对于FUSELLM的优势:
* 支持不同规模融合:FUSECHAT打破了源LLM和目标LLM规模必须一致的限制,可以融合不同大小的聊天LLM。
* 可扩展性强:FUSECHAT支持即插即用地集成新的源LLM。只需将新模型与枢轴模型融合,然后将生成的目标模型并入现有的FUSECHAT即可,而FUSELLM需要重新组合所有源模型的分布矩阵。
* 降低融合难度:与多对一的知识融合相比,成对融合在经验上缓解了知识蒸馏的挑战。
实验验证使用了六个主流的开源聊天LLM,包括OpenChat-3.5-7B、Starling-LM-7B-alpha、NH2-SOLAR-10.7B、InternLM2-Chat-20B、Mixtral-8x7B-Instruct和Qwen-1.5-Chat-72B。在AlpacaEval 2.0和MT-Bench两个指令遵循基准测试上的结果表明,生成的FuseChat-7B模型优于多种规模的基线模型,其性能甚至可以与更大的Mixtral-8x7B-Instruct相媲美,并在MT-Bench上接近GPT-3.5-Turbo-1106的水平(如图1(b)所示)。
A3 相关工作
模型融合
整合多种模型的能力是一个长期的研究目标,现有方法主要分为三类。首先,传统的模型集成技术通过加权平均【【34】,The weighted majority algorithm,1994,Information and Computation】或多数投票【【41】,Turning bayesian model averaging into bayesian model combination,2011,IJCNN】来组合多个模型的输出,以提高整体系统性能。最近,Jiang等人【【25】,Llm-blender: Ensembling large language models with pairwise ranking and generative fusion,2023,ACL】为LLM引入了一个序列级集成框架,该框架首先进行成对比较以对LLM的输出进行排序,然后使用另一个LLM将排名靠前的候选者整合成一个改进的输出。除了序列级集成,Ding等人【【11】,Mastering text, code and math simultaneously via fusing highly specialized language models,2024,arXiv】通过在输出logits上使用词元级门控机制来混合多个LLM。为了避免集成过程中的额外训练,Mavromatis等人【【39】,Pack of llms: Model fusion at test-time via perplexity optimization,2024,arXiv】利用不同LLM对输入提示的困惑度来确定每个模型的重要性。
模型合并促进了结构和规模相同的模型在参数空间内的融合。Wortsman等人【【61】,Model soups: averaging weights of multiple fine-tuned models improves accuracy without increasing inference time,2022,ICML】通过线性平均组合了多个模型,这些模型是通过在同一数据集上使用不同策略微调得到的。Matena和Raffel【【38】,Merging models with fisher-weighted averaging,2022,NeurIPS】通过引入费雪信息矩阵【【16】,On the mathematical foundations of theoretical statistics,1922,Philosophical transactions of the Royal Society of London. Series A】来确定单个模型参数的重要性,从而改进了简单的加权平均。Jin等人【【28】,Dataless knowledge fusion by merging weights of language models,2023,ICLR】通过解决一个最小化合并模型与单个模型之间L2距离的优化问题来进行合并,并给出了一个封闭形式的解。尽管这些方法可以自动计算合并系数,但它们需要使用额外的数据进行前向或后向传播,这使得模型合并计算效率低下且内存密集。Ilharco等人【【24】,Editing models with task arithmetic,2023,ICLR】和Zhang等人【【68】,Composing parameter-efficient modules with arithmetic operation,2023,NeurIPS】对不同模型的任务向量或LoRA【【22】,Lora: Low-rank adaptation of large language models,2022,ICLR】模块进行简单的算术运算,从而增强了多任务能力和领域泛化能力。为了减轻参数干扰,Yu等人【【70】,Language models are super mario: Absorbing abilities from homologous models as a free lunch,2023,arXiv】和Yadav等人【【66】,Ties-merging: Resolving interference when merging models,2024,NeurIPS】引入了稀疏化技术,在模型合并前从任务向量中修剪冗余值。此外,Kim等人【【30】,Solar 10.7 b: Scaling large language models with simple yet effective depth up-scaling,2023,arXiv】和Akiba等人【【3】,Evolutionary optimization of model merging recipes,2024,arXiv】通过在参数和数据流空间中合并多个LLM,推动了该领域的发展,从而得到了深度扩展且性能更优的合并LLM。
专家混合(MoEs)通过稀疏激活机制【【14】,Switch transformers: Scaling to trillion parameter models with simple and efficient sparsity,2022,JMLR】结合专门的专家模块,为模型融合提供了另一个途径。Komatsuzaki等人【【32】,Sparse upcycling: Training mixture-of-experts from dense checkpoints,2023,ICLR】首次提出使用密集检查点的多个副本来初始化稀疏MoEs模块。为了整合多个领域专家,Sukhbaatar等人【【48】,Branch-train-mix: Mixing expert llms into a mixture-of-experts llm,2024,arXiv】从一个种子LLM分别训练了多个特定领域的LLM,然后使用这些密集专家之上的前馈网络来实例化一个稀疏MoEs模块,随后进行进一步微调以学习词元级路由。类似地,Feng等人【【15】,Mixture-of-loras: An efficient multitask tuning for large language models,2024,arXiv】训练了多个特定领域的LoRA【【22】,Lora: Low-rank adaptation of large language models,2022,ICLR】模块作为专家,并使用显式的序列级路由策略将这些领域专家组合起来。
FUSELLM【【52】,Knowledge fusion of large language models,2024,ICLR】为具有结构差异的LLM融合引入了另一种范式。该方法建立在知识蒸馏的基础上,利用源LLM生成的概率分布矩阵将集体知识转移到一个目标LLM中。与模型集成和MoEs不同,知识融合不需要并行部署多个模型(专家)。此外,与仅适用于具有相同架构的模型的模型合并相比,FUSELLM允许融合具有不同架构的LLM。
知识蒸馏
知识融合本质上是执行知识蒸馏,将知识从源LLM转移到目标LLM。知识蒸馏【【21】,Distilling the knowledge in a neural network,2015,arXiv】旨在通过一个或多个较大的教师模型的指导来训练一个小的学生模型。以前的研究主要集中于训练学生模型模仿教师在文本分类任务中的行为,通过复制教师的输出logits【【46】,Distilbert, a distilled version of bert: smaller, faster, cheaper and lighter,2019,arXiv;【51】,Well-read students learn better: On the importance of pre-training compact models,2019,arXiv】,以及隐藏状态【【49】,Patient knowledge distillation for bert model compression,2019,EMNLP-IJCNLP;【26】,Tinybert: Distilling bert for natural language understanding,2020,EMNLP】和关系【【54】,Minilm: Deep selfattention distillation for task-agnostic compression of pre-trained transformers,2020,NeurIPS】。在生成模型领域,主流方法是最大化学生在教师模型生成的分布【【29】,Mergedistill: Merging language models using pre-trained distillation,2021,ACL-IJCNLP;【18】,MiniLLM: Knowledge distillation of large language models,2024,ICLR;【2】,On-policy distillation of language models: Learning from self-generated mistakes,2024,ICLR】或序列【【31】,Sequence-level knowledge distillation,2016,EMNLP;【43】,Instruction tuning with gpt-4,2023,arXiv】上的对数似然。这种范式可以扩展到容纳多个教师,通过平均分布【【67】,Learning from multiple teacher networks,2017,KDD】或混合序列【【53】,Openchat: Advancing opensource language models with mixed-quality data,2024,ICLR】的方式。
与普通知识蒸馏相比,LLM的知识融合面临新的挑战。首先,由于不同LLM之间的分词差异,词元对齐对于将知识从源LLM转移到目标LLM至关重要。其次,在处理由多个源LLM生成的分布时,融合函数对于优化整合它们的分布变得至关重要。第三,为了利用不同LLM的独特优势,创建既具有能力多样性又具有领域多样性的紧凑知识融合数据集是必要且具有挑战性的。
A2 方法细节
3.1 概述
FUSECHAT框架如图2所示,与FUSELLM【【52】,Knowledge fusion of large language models,2024,ICLR】进行了对比。FUSECHAT框架包含两个主要阶段:融合(fuse)和合并(merge)。在融合阶段,对源聊天LLM进行成对知识融合,以得到多个结构和大小相同的目标LLM。这个过程首先选择一个枢轴LLM,然后在枢轴LLM和每个其余LLM之间进行知识融合。在合并阶段,这些目标LLM在参数空间内进行组合,我们引入了一种新颖的方法,根据微调前后参数更新的幅度来确定合并系数。
具体流程是,给定K个具有不同架构和规模的源LLM {$M_{s_i}$}$_{i=1}^K$,FUSECHAT首先将其中一个源LLM $M_{s_v}$ 指定为枢轴,然后应用成对知识融合来获得(K-1)个目标LLM {$M_{t_j}$}$_{j=1}^{K-1}$,这些目标LLM与枢轴LLM共享相同的架构和初始化权重。枢轴的选择取决于目标LLM期望的结构和规模,同时也要考虑候选LLM的能力和性能。
为了执行成对知识融合,FUSECHAT使用一个监督微调数据集 $D = \{I_i, R_i\}_{i=1}^M$ 来提示这些源LLM,通过响应D中的每个指令来展示其固有的知识。然后,在源LLM和枢轴LLM之间进行词元对齐【【17】,Specializing smaller language models towards multi-step reasoning,2023,PMLR;【52】,Knowledge fusion of large language models,2024,ICLR】,以正确映射产生的概率分布矩阵。这些分布矩阵随后通过轻量级微调用于成对知识融合【【52】,Knowledge fusion of large language models,2024,ICLR】,从而获得(K-1)个目标LLM。在此之后,目标LLM在参数空间中被合并,以产生最终的融合LLM $M_f$。为了融入目标LLM的细粒度优势,我们引入了一种名为SCE的新合并方法,通过对代表模型权重微调前后变化的任务向量【【24】,Editing models with task arithmetic,2023,ICLR】进行选择、计算和擦除来获得合并系数。SCE能够自动分配参数矩阵级的合并系数,从而促进LLM在更细的粒度上进行合并。
3.2 预备知识
给定一个指令 $I_i$ 和微调数据集 $D$ 中长度为 $N$ 的相应响应 $R_i$,我们使用 $R_{i,<t} = (r_{i,1}, r_{i,2}, \dots, r_{i,t-1})$ 来表示响应中第 $t$ 个词元之前的序列。一个由参数 $\theta$ 参数化的预训练语言模型的监督微调(SFT)目标被定义为最小化以下负对数似然:<br />
$$\mathcal{L}_{\mathrm{SFT}}=-\mathbb{E}_{\left(I_{i}, R_{i}\right) \sim \mathcal{D}}\left[\sum_{t \leq N} \log p_{\theta}\left(r_{i, t} \mid R_{i,<t}, I_{i}\right)\right],$$ <p>其中 $p_\theta(r_{i,t}|R_{i,<t}, I_i)$ 是模型在给定指令和响应中先前词元的条件下,对 $R_i$ 中第 $t$ 个词元 $r_{i,t}$ 的预测概率。</p>
3.3 成对知识融合
为了便于描述成对知识融合,我们将上述词元级视图重构为矩阵格式。具体来说,对于每个指令 $I_i$,我们将词元级预测转换为一个概率分布矩阵 $P_{\theta_i} \in \mathbb{R}^{N \times V}$,其中 $V$ 表示词汇表大小。该分布矩阵被假定为反映了语言模型在响应指令时所具有的某些固有知识【【52】,Knowledge fusion of large language models,2024,ICLR】。因此,从不同聊天LLM获得的不同概率分布矩阵可以用来表示这些模型中嵌入的多样化知识。基于这一假设,FUSECHAT通过使用概率分布矩阵微调从枢轴初始化的目标LLM,来进行成对知识融合。
模型融合过程是,对于 $D$ 中的每个指令 $I_i$,我们首先将其输入到 $K$ 个源聊天LLM中,以获得一组概率分布矩阵,表示为 $\{P_{\theta_j^i}\}_{j=1}^K$,其中 $\theta_j$ 表示第 $j$ 个源LLM的参数。然后,在源LLM和枢轴LLM之间进行词元对齐,以正确映射它们的概率分布矩阵【【17】,Specializing smaller language models towards multi-step reasoning,2023,PMLR;【52】,Knowledge fusion of large language models,2024,ICLR】。接着,在枢轴LLM和每个其余源LLM之间进行成对知识融合。为此,我们用 $P_{\theta_v^i}$ 表示枢轴LLM生成的概率分布矩阵,并将其与每个 $P_{\theta_j^i}|_{j \neq v}$ 进行合并,得到一组融合矩阵 $\{P_j^i\}_{j=1}^{K-1}$,如下所示:
其中 Fusion(·) 表示合并两个矩阵的融合函数。得到的矩阵 $P_j$ 被看作是两个源LLM集体知识和独特优势的表示。在各种融合策略中,本工作采用最小交叉熵(MinCE)【【52】,Knowledge fusion of large language models,2024,ICLR】作为融合函数,该函数在经验上表现最好。
之后,我们强制每个目标LLM $M_{t_j}$ 的预测与相应的融合表示矩阵 $P_j^i$ 对齐。我们用 $Q_{\phi_j^i}$ 来表示目标LLM $M_{t_j}$ 对指令 $I_i$ 的输出分布矩阵,并定义训练每个目标LLM的融合目标如下:
其中 $H(\cdot||\cdot)$ 表示两个概率分布矩阵之间的交叉熵。
每个成对知识融合的总体训练目标由监督微调目标 $L_{SFT}$ 和融合目标 $L_{Fusion}$ 的加权组合构成,如下所示:
词元对齐旨在解决由不同源LLM为给定指令 $I_i$ 生成的概率分布矩阵 {$P_{\theta_j} \in \mathbb{R}^{N \times V}$}$_{j=1}^K$ 的映射问题。因此,对齐涉及矩阵的两个维度:词元化响应的序列维度和概率分布的分布维度。在序列维度上,我们遵循先前的工作【【17】,Specializing smaller language models towards multi-step reasoning,2023,PMLR;【52】,Knowledge fusion of large language models,2024,ICLR】并采用动态规划来递归地最小化将源LLM的词元编辑以与枢轴LLM对齐的总成本。此过程可能导致1-1、1-n和n-1的映射,如图7所示。在分布维度上,Fu等人【【17】,Specializing smaller language models towards multi-step reasoning,2023,PMLR】专注于基于源和目标分布中词元之间的精确匹配(EM)来对齐分布,这限制了对齐只能是1-1映射,并可能导致太多未匹配的词元。Wan等人【【52】,Knowledge fusion of large language models,2024,ICLR】通过基于源和目标LLM词汇表中词元之间的最小编辑距离(MinED)来对齐分布,放宽了EM约束。虽然这种方法提高了映射成功率并扩展到1-n映射,但它忽略了n-1映射,并可能引入许多错位。
在这项工作中,我们提出了一种增强的词元对齐策略,该策略利用来自序列维度的映射统计(MS)作为分布维度对齐的标准。我们构建一个全局统计矩阵,其中每一列表示从一个枢轴词元到所有潜在源词元的映射频率,这些频率来源于序列维度的词元对齐。在1-1和1-n映射的情况下,我们根据统计矩阵相应列中每个枢轴词元的最大映射频率来对齐分布。对于n-1映射,我们首先根据源词元在统计矩阵中的映射频率计算其分布的加权平均值,以获得一个合并的分布。然后,这个合并的分布被对齐到枢轴分布,其过程类似于用于1-1映射的程序。如图7所示,这种方法更好地反映了数据集中词元映射的统计信息,从而在对齐的分布矩阵中保留了重要信息,同时最小化了对齐错误。
3.4 模型合并
由于成对知识融合产生的目标LLM {$M_{t_j}$}$_{j=1}^{K-1}$ 具有相同的架构,我们可以进一步在参数空间中将它们合并,以获得最终的融合LLM $M_f$。为确保FUSECHAT的适应性和可扩展性,保持合并策略的简单性至关重要。首先,合并系数的计算应该是自动化的,避免复杂的超参数调整。其次,合并过程不应要求对额外数据进行前向或后向传播,因为这在计算上效率低下且内存密集。
如算法1所述,我们提出了一种名为SCE(选择、计算和擦除)的新颖合并方法,用于参数矩阵级的合并。类似于任务向量【【24】,Editing models with task arithmetic,2023,ICLR】,我们首先定义融合向量 {$\delta_j$}$_{j=1}^{K-1}$ (公式5) 作为在模型融合期间从枢轴LLM $M_{s_v}$ 到目标LLM {$M_{t_j}$}$_{j=1}^{K-1}$ 的权重更新方向和大小。对于目标LLM中的每个参数矩阵单元,我们通过三步过程使用融合向量来导出合并后的权重。
- 选择(Select):在成对知识融合过程中,目标LLM动态地演化其参数以吸收其相应源LLM的优势。对于每个参数矩阵单元,其在不同目标LLM之间具有显著变化的融合向量被认为代表了独特且重要的优势。因此,我们首先从每个参数矩阵级融合向量 {$\delta_{j,m}$}$_{j=1}^{K-1}$ 中选择前 $\tau\%$ 的元素,这些元素在多个目标LLM之间具有高方差,从而得到 {$\hat{\delta}_{j,m}$}$_{j=1}^{K-1}$ (公式6)。
- 计算(Calculate):然后我们计算 $\hat{\delta}_{j,m}$ 中元素的平方和,并为每个目标LLM获得一个矩阵级合并系数,即 $\eta_{j,m} \propto \sum \hat{\delta}_{j,m}^2$ (原文为 $\eta_{j,m} \frac{\sum \hat{\delta}_{j,m}^2}{\sum_j \sum \hat{\delta}_{j,m}^2}$,但公式7未明确给出,此处为意译)。
- 擦除(Erase):每个参数在来自不同目标LLM的融合向量中可能表现出冲突的符号,这可能在模型合并期间引起干扰【【66】,Ties-merging: Resolving interference when merging models,2024,NeurIPS】。因此,对于每个参数,我们将其在 {$\hat{\delta}_{j,m}$}$_{j=1}^{K-1}$ 中的值在所有目标LLM上求和,并擦除具有少数方向的元素(公式8)。最后,过滤后的 {$\delta'_{j,m}$}$_{j=1}^{K-1}$ 被合并到枢轴LLM的参数中(公式9)。
算法 1 SCE 过程
输入:目标LLM参数 {$\phi_j$}$_{j=1}^{K-1}$,枢轴LLM参数 $\theta_v$,阈值 $\tau$。
输出:合并后的LLM参数 $\Phi$
▷ 创建融合向量
▷ 计算参数矩阵级合并系数
for {$\delta_{j,m}$}$_{j=1}^{K-1} \in \{\delta_j\}_{j=1}^{K-1}$ do
▷ 步骤 1: 选择显著元素
{$\hat{\delta}_{j,m}$}$_{j=1}^{K-1}$ = Select({$\delta_{j,m}$}$_{j=1}^{K-1}$, $\tau$) (6)
▷ 步骤 2: 计算系数
{$\eta_{j,m}$}$_{j=1}^{K-1}$ = Calculate({$\hat{\delta}_{j,m}^2$}$_{j=1}^{K-1}$) (7)
▷ 步骤 3: 擦除少数元素
{$\delta'_{j,m}$}$_{j=1}^{K-1}$ = Erase({$\hat{\delta}_{j,m}$}$_{j=1}^{K-1}$) (8)
▷ 更新合并后的LLM参数 (9)
return $\Phi$
end
3.5 讨论
FUSECHAT采用成对知识融合而非像FUSELLM【【52】,Knowledge fusion of large language models,2024,ICLR】那样的多对一知识融合,原因有二。首先,直接融合所有源LLM被证明是困难的,如表1中OpenChat-3.5-7B Multi的结果所示。相反,FUSECHAT采用“融合-合并”策略,其中融合阶段使用枢轴LLM和其他源LLM之间的成对知识融合,这降低了模型融合的难度。其次,与FUSELLM相比,FUSECHAT提供了更优越的可扩展性。FUSELLM的框架在持续训练期间需要组合所有源LLM的分布矩阵,这使得它不容易支持新LLM的加入。相比之下,FUSECHAT支持任何规模的新源LLM的即插即用集成。这只需要通过将新的源LLM与枢轴融合来获得一个目标LLM,然后将其与现有版本的FUSECHAT合并即可。
A4 实验环境
-
模型:
- 源LLM:使用了六个不同架构和规模的代表性聊天LLM:OpenChat-3.5-7B、Starling-LM-7B-alpha、NH2-SOLAR-10.7B、InternLM2-Chat-20B、Mixtral-8x7B-Instruct 和 Qwen-1.5-Chat-72B。
- 枢轴LLM:选择 OpenChat-3.5-7B 作为枢轴模型,因为它在规模和性能上取得了平衡。最终生成的模型为 FuseChat-7B。
-
数据集:
- 名称:FUSECHAT-MIXTURE。
- 规模及用途:该数据集包含约95,000个对话样本,用于知识融合过程中的微调。
- 来源:精心策划的高质量数据集,一半实例采样自枢轴LLM (OpenChat-3.5-7B) 的训练数据,另一半来自枢轴LLM未见过的开源社区数据,涵盖了多个领域(详见附录C)。
-
硬件配置:
- GPU:在单个节点上使用 8 块 80GB NVIDIA A800 GPU。
-
软件配置与训练参数:
- 实现库:基于 HuggingFace Transformers【【60】,Transformers: State-of-the-art natural language processing,2020,EMNLP: System Demonstrations】 实现。
- 训练参数:
- 批量大小(Batch Size): 128
- 最大序列长度(Maximum Length): 2048
- 训练轮数(Epochs): 3 (耗时约9小时)
- 优化器(Optimizer): AdamW【【35】,Decoupled weight decay regularization,2019,ICLR】 (β1=0.9, β2=0.999)
- 权重衰减(Weight Decay): 0.0
- 梯度裁剪(Gradient Clipping): 1.0
- 学习率调度(Learning Rate Schedule): Cosine,最大学习率为5e-6,预热比例为0.03。
- 损失函数权重 $\lambda$ (公式4): 经验性地设置为 0.9。
A4 实验结果
4.2 总体结果
主要发现:如表1所示,FuseChat-7B在AlpacaEval 2.0和MT-Bench两个基准测试上表现出色。
- SFT基线:在高质量数据集上进行监督微调后,OpenChat-3.5-7B SFT 性能略优于原始的枢轴LLM OpenChat-3.5-7B。
- 成对融合 vs. 多对一融合:通过成对知识融合得到的目标LLM(例如,OpenChat-3.5-7B Mixtral)性能显著优于同时融合多个源LLM的OpenChat-3.5-7B Multi。例如,前者在LC Win Rate和平均分上相对OpenChat-3.5-7B SFT分别提升了13.93%和5.23%。这证明了成对融合能有效降低融合难度。
- 合并效果:将这些目标LLM合并后,最终的FuseChat-7B性能进一步大幅提升,在两个指标上分别提升了18.34%和7.27%。这表明FuseChat-7B成功整合了多个源LLM的优势,其性能可与8x7B的MoE模型相媲美,并接近GPT-3.5。
- 与集成模型对比:尽管FuseChat-7B的规模(7B)远小于162B的集成(Ensemble)LLM,但其性能优于大多数集成方法(除了需要GPT-4作为排序器的Top1-GPT4),且体积小23倍,推理时无需依赖GPT-4。
表1:FuseChat-7B与基线模型在AlpacaEval 2.0和MT-Bench上的总体结果。百分比表示与OpenChat-3.5-7B SFT相比的提升/下降率。
领域能力分析:
- 成对融合的效果:图3展示了成对知识融合在MT-Bench各领域上的效果。融合后的目标LLM在大多数领域都表现出明显的性能提升,其性能通常介于枢轴LLM和相应源LLM之间。这得益于融合函数(最小交叉熵)选择了最优的目标分布,从而整合了二者的独特优势。特别是在数学和推理领域,某些目标LLM的性能甚至超过了枢轴或源LLM,这可能是因为知识融合的训练数据起到了类似持续微调的作用。
- 合并的效果:图4展示了将目标LLM合并为FuseChat-7B后的效果。通过整合各个目标LLM的能力,FUSECHAT在不同领域实现了均衡且强大的性能。
4.3 更换枢轴LLM的实验
实验内容:使用更强大的Starling-LM-7B-alpha替换OpenChat-3.5-7B作为枢轴LLM进行实验。
实验结果:如表2所示,生成的FuseChat-Starling-7B性能优于原始的Starling-LM-7B-alpha,在AlpacaEval 2.0和MT-Bench上分别实现了17.62%和2.14%的相对性能提升。值得注意的是,尽管对Starling-LM-7B-alpha进行SFT并未带来性能增益,但通过成对知识融合和模型合并,使用相同的训练数据却取得了显著的增强。这证明了FUSECHAT框架的鲁棒性。
表2:以Starling-LM-7B-alpha为枢轴LLM在AlpacaEval 2.0和MT-Bench上的结果。
4.4 数据集规模扩展实验
实验内容:在不同规模的数据集(10k, 25k, 95k)上进行成对知识融合,然后合并生成最终的融合LLM。
实验结果:如表3所示,随着训练数据从10k扩展到95k,最终融合LLM在MT-Bench上的性能持续提升。这表明扩展数据集对该方法具有潜在的有效性。
表3:不同数据集规模在MT-Bench上的比较。
4.5 模型合并方法分析
实验内容:比较了提出的SCE方法与其他合并方法的效果,包括Linear、TA、TIES和DARE。
实验结果:如表4所示,使用SCE方法的FuseChat-7B在AlpacaEval 2.0和MT-Bench两个基准上均优于所有基线合并方法。
图5进一步展示了随着合并的目标LLM数量从1增加到5,FuseChat-7B的平均分从7.24逐步提升至7.38。有趣的是,在并入OpenChat-3.5-7B SOLAR后,性能趋于稳定,这可能是因为该目标LLM及其源模型NH2-SOLAR-10.7B的性能相对较弱。结论:这表明被融合的源LLM的多样性和质量都是实现最佳知识融合的关键因素。
表4:不同合并方法在AlpacaEval 2.0和MT-Bench上的比较。
4.6 SCE方法的消融研究
实验内容:检验SCE方法中“选择(select)”、“计算(calculate)”和“擦除(erase)”操作的有效性。
实验结果:如表5所示,
- 移除“选择”操作(FuseChat-7B CE):性能在两个基准上都出现大幅下降,凸显了从融合向量中选择具有高方差的显著元素以代表模型独特优势的重要性。
- 移除“选择”和“擦除”操作(FuseChat-7B C):在MT-Bench上性能下降,表明解决不同目标LLM融合向量间的参数干扰问题是至关重要的。
表5:不同合并方法在AlpacaEval 2.0和MT-Bench上的比较。“CE”和“C”分别表示仅使用计算&擦除和仅使用计算操作。
4.7 词元对齐方法分析
实验内容:比较了不同的词元对齐策略:EM(精确匹配)、MinED(最小编辑距离)和本文提出的MS(映射统计)方法。实验中,将InterLM2-Chat-20B与OpenChat-3.5-7B进行对齐和融合。
实验结果:如图6所示,基于映射统计的MS方法在性能上始终优于EM和MinED。这表明MS方法有效利用了数据集中的词元映射统计信息,从而极大地改善了分布维度的词元对齐效果。
A5 结论
本文提出了一种名为FUSECHAT的“融合-合并”框架,用于融合结构和规模各异的聊天LLM,旨在将其集体知识和个体优势整合到一个更强大的聊天LLM中。FUSECHAT首先通过轻量级微调对源聊天LLM进行成对知识融合,以获得多个结构和大小相同的目标LLM。然后,使用一种新颖的SCE方法,根据微调前后参数更新的幅度计算合并系数,在参数空间中合并这些目标LLM。在两个代表性的指令遵循基准测试上的实验结果表明,FUSECHAT在不同模型规模上均表现出优越性,其性能甚至可与Mixtral-8x7B-Instruct相媲美,并在MT-Bench上接近GPT-3.5-Turbo-1106。
知识融合的概念与专家混合(MoEs)等相关方法有相似之处,两者都旨在利用多个模型(专家)的优势。然而,MoEs在推理时需要加载多个专家,导致更高的时间和内存需求,而知识融合允许将具有不同架构和规模的多个LLM整合到一个单一的LLM中,没有额外的时间或内存开销。这使得知识融合在模型大小是关键考虑因素时更为高效。
6 局限性与未来工作
局限性:
1. 本文的工作依赖于构建一个跨越不同领域并利用源LLM优势的知识融合数据集,这需要大量的数据工程工作,可能限制了该方法的可扩展性。
2. 尽管研究显示了聊天模型能力的提升,但并未涉及LLM的其他关键方面,如知识理解和幻觉的缓解。
未来工作:
1. 未来的研究应侧重于开发更高效的数据合成技术,以扩大知识融合数据集的范围。
2. 需要进一步研究以评估该方法在知识理解和缓解幻觉等领域的适用性和有效性。
A6 附录
A 词元对齐细节
图7展示了三种不同的词元对齐策略中使用的词元对映射,包括EM【【17】,Specializing smaller language models towards multi-step reasoning,2023,PMLR】、MinED【【52】,Knowledge fusion of large language models,2024,ICLR】和我们提出的MS。为清晰起见,这些映射策略以矩阵格式描绘,其中每列代表源词元与相应枢轴词元对齐的概率。这些矩阵中的值源自各自采用的对齐策略。例如,矩阵$W_{EM}$依赖于源和枢轴词元对之间的精确匹配,而$W_{MinED}$与这些对之间的编辑距离成反比。$W_{MS}$则基于源和枢轴词元之间的统计映射频率。
在1-1或1-n映射场景中,EM和MinED方法分别使用$W_{EM}$或$W_{MinED}$,这可能导致不准确的映射。例如,在EM中,词元“flow_”可能被错误地对齐到“<unk>”,而在MinED中,“flow_”可能映射到“flown”,或“belo_”映射到“below”。相比之下,我们的MS方法使用来自序列维度词元对齐的$W_{MS}$,实现了更准确的对齐,例如将“flow_”映射到“flowers”,将“belo_”映射到“belongs”。对于仅MS适用的n-1映射,多个源分布通过由$W_{MS}$确定的加权平均值进行组合,以得到一个合并的分布。这个统一的分布然后以类似于1-1映射的方式进行处理。
B 模型合并细节
各种合并方法的超参数详细如下。对于Linear方法【【61】,Model soups: averaging weights of multiple fine-tuned models improves accuracy without increasing inference time,2022,ICML】,合并参数计算为所有目标LLM的平均值。在TA方法【【24】,Editing models with task arithmetic,2023,ICLR】中,我们遵循原始论文,在[0.3, 0.4, 0.5]范围内探索缩放系数。根据性能选择了0.3的最佳设置。对于TIES【【66】,Ties-merging: Resolving interference when merging models,2024,NeurIPS】和DARE【【70】,Language models are super mario: Absorbing abilities from homologous models as a free lunch,2023,arXiv】方法,我们在[0.1, 0.2, · · · , 0.9]范围内搜索修剪/丢弃率。最佳的修剪/丢弃率为0.4,这导致通过将底部/随机40%的增量参数重置为零来消除它们。合并系数计算为所有目标LLM的平均值。对于SCE方法,我们在[10, 20, · · · , 90]范围内搜索显著元素选择阈值 $\tau$。最佳阈值为10%。合并系数根据增量参数的大小自动导出。
C 训练数据集细节
我们从多个来源策划了一个全面的训练数据集FUSECHAT-MIXTURE。该数据集涵盖了不同的风格和能力,既有人类编写的,也有模型生成的,并跨越了一般的指令遵循和特定技能。这些来源包括:
* Orca-Best:我们从Orca-Best中抽样了20,000个样本,该数据集是根据最大长度和指令聚类从Orca【【42】,Orca: Progressive learning from complex explanation traces of gpt-4,2023,arXiv】的GPT-4 (1M)分区中筛选出来的。
* Capybara:我们纳入了Capybara的所有16,000个样本,这是一个高质量的多轮合成对话集合。
* No-Robots:我们包含了No-Robots的所有9,500个样本,这是一个由熟练的人类标注员为监督微调创建的数据集。
* ShareGPT-GPT4:我们利用了ShareGPT-GPT4中的所有6,200个样本,该数据集专门使用由GPT-4在ShareGPT中生成的对话。
* Oasst-Top1:我们从Oasst-Top1中选择了5,000个样本,这是Oasst1【【33】,Openassistant conversations-democratizing large language model alignment,2024,NeurIPS】的精炼版本,一个由人类标注的助手式对话数据集。
* MetaMathQA:我们从MetaMathQA【【69】,Metamath: Bootstrap your own mathematical questions for large language models,2024,ICLR】中抽样了10,000个样本,该数据集是从GSM8K【【10】,Training verifiers to solve math word problems,2021,arXiv】和MATH【【20】,Measuring mathematical problem solving with the math dataset,2021,NeurIPS Datasets and Benchmarks Track】数据集中增强而来,用于数学问题解决。
* OSS-Instruct:我们从OSS-Instruct【【58】,Magicoder: Source code is all you need,2023,arXiv】中选择了10,000个样本,该数据集包含从开源代码片段合成的代码指令数据。
* Evol-Alpaca:我们从Evol-Alpaca中抽样了10,000个样本,这是一个由GPT-4使用WizardCoder【【36】,Wizardcoder: Empowering code large language models with evol-instruct,2024,ICLR】提出的evol-instruct生成的代码指令数据集。
* Python-Code:我们从Python-Code中选择了10,000个样本,该数据集包含由GPT-3.5和GPT-4生成的用于python代码生成的指令和响应。
我们遵循FastChat【【67】,Learning from multiple teacher networks,2017,KDD】中的数据处理代码来清理包含非英语或特殊字符的实例。然后,我们将长对话分割成最大长度为2048个词元的块,最终得到包含95,000个样本的FUSECHAT-MIXTURE。
D 基线模型细节
在本节中,我们介绍了实验中比较的基线模型的详细信息。
* 专有LLM:GPT-3.5-Turbo-1106【【1】,Gpt-4 technical report,2023,arXiv】、Claude-3-Opus【【4】,The claude 3 model family: Opus, sonnet, haiku,2024,Claude-3 Model Card】和GPT-4-1106-Preview【【1】,Gpt-4 technical report,2023,arXiv】。
* 源LLM:OpenChat-3.5-7B【【53】,Openchat: Advancing opensource language models with mixed-quality data,2024,ICLR】、Starling-LM-7B-alpha【【72】,Starling-7b: Improving llm helpfulness & harmlessness with rlaif,2023,-】、NH2-SOLAR-10.7B【【30】,Solar 10.7 b: Scaling large language models with simple yet effective depth up-scaling,2023,arXiv】、InternLM2-Chat-20B【【8】,Internlm2 technical report,2024,arXiv】、Mixtral-8x7B-Instruct【【25】,Llm-blender: Ensembling large language models with pairwise ranking and generative fusion,2023,ACL】和Qwen-1.5-Chat-72B【【5】,Qwen technical report,2023,arXiv】。
* 集成LLM:Top1-PPL【【39】,Pack of llms: Model fusion at test-time via perplexity optimization,2024,arXiv】,它根据指令的困惑度从源LLM中选择排名第一的响应;Top1-LLM-Blender【【25】,Llm-blender: Ensembling large language models with pairwise ranking and generative fusion,2023,ACL】,它使用排名器和融合器模型对源LLM的输出文本进行排名和组合。由于融合器模型对最大序列长度有限制,只使用排名器模型来确定并产生排名第一的响应;Top1-GPT4【【1】,Gpt-4 technical report,2023,arXiv】,它利用GPT-4的判断作为排名标准,并产生排名第一的响应。由于我们的评估也依赖于GPT-4,这种方法代表了比较的上限。
* 融合LLM:OpenChat-3.5-7B SFT,是单一源LLM知识融合的特殊情况,作为使用我们训练数据集的监督微调基线;OpenChat-3.5-7B Multi是像FUSELLM【【52】,Knowledge fusion of large language models,2024,ICLR】一样同时进行多个源聊天LLM的知识融合;OpenChat-3.5-7B Starling、OpenChat-3.5-7B SOLAR、OpenChat-3.5-7B InternLM、OpenChat-3.5-7B Mixtral和OpenChat-3.5-7B Qwen是由枢轴LLM OpenChat-3.5-7B和其余源LLM进行成对知识融合得到的目标LLM。
E 额外基准测试评估
FUSECHAT的主要目标是将多个聊天LLM整合成一个更强大的模型。因此,我们的实验主要集中在对齐训练数据(如ShareGPT)和聊天模型评估基准(如AlpacaEval 2.0和MT-Bench)上。除了聊天模型基准,我们还在六个通用评估基准上进行了实验,包括MMLU-Pro【【56】,Mmlu-pro: A more robust and challenging multi-task language understanding benchmark,2024,arXiv】、PIQA【【6】,Piqa: Reasoning about physical commonsense in natural language,2020,AAAI】、BoolQ【【9】,Boolq: Exploring the surprising difficulty of natural yes/no questions,2019,NAACL】、GPQA【【45】,Gpqa: A graduate-level google-proof q&a benchmark,2023,arXiv】、GSM8K【【10】,Training verifiers to solve math word problems,2021,arXiv】和IFEval【【71】,Instructionfollowing evaluation for large language models,2023,arXiv】,这些基准评估知识理解、问答、常识推理和指令遵循能力。结果呈现在表6中。值得注意的是,FuseChat-7B的训练数据主要侧重于对齐而非通用知识。因此,在这些通用基准上的性能提升不如在AlpacaEval 2.0和MT-Bench上显著。这一观察结果与最近关于对齐的研究【【40】,Simpo: Simple preference optimization with a reference-free reward,2024,arXiv;【65】,Self-play preference optimization for language model alignment,2024,arXiv】一致,这些研究强调了对齐数据集的构建在决定下游性能中的关键作用。
表6:在通用评估基准上的比较结果。
F 案例研究
我们展示案例研究以证明通过源LLM的成对知识融合获得的目标LLM(OpenChat-3.5-7B Starling, OpenChat-3.5-7B SOLAR, OpenChat-3.5-7B InternLM, OpenChat-3.5-7B Mixtral, 和 OpenChat-3.5-7B Qwen)的个体优势,并展示通过进一步合并目标LLM获得的FUSECHAT(FuseChat-7B)的集体知识和优势。OpenChat-3.5-7B SFT被用作比较的基线。
OpenChat-3.5-7B SFT; 数学; ID 113;
这意味着100% - 75% = 25%的学生既不喜欢蓝色也不喜欢绿色。所以,随机挑选一名学生既不喜欢蓝色也不喜欢绿色的概率是25%。答案是:25
第一轮判断:助手的回答在计算喜欢蓝色或绿色的学生总百分比时存在数学错误。正确的计算,如参考答案所示,应该是:
$100\% - 81\% = 19\%$
OpenChat-3.5-7B Starling; 数学; ID 113;
这意味着25%的学生两种颜色都不喜欢。因此,随机挑选一名学生两种颜色都不喜欢的概率是25%。答案是:25
第一轮判断:助手的回答在计算喜欢蓝色或绿色的学生百分比时存在数学错误。正确的计算,如参考答案所示,应该是:
$\text{At least one of the colors} = 58\% + 45\% - 22\% = 103\% - 22\% = 81\%$
这意味着81%的学生至少喜欢其中一种颜色,而不是助手所说的75%。因此,既不喜欢两种颜色的学生百分比不是25%,而是:
OpenChat-3.5-7B SOLAR; 数学; ID 113;
我们已知58%的学生喜欢蓝色,45%喜欢绿色,22%两者都喜欢。所以,我们可以如下计算既不喜欢蓝色也不喜欢绿色的学生百分比:
第一轮判断:助手的回答在计算过程中存在关键错误。错误在于错误地应用了容斥原理以及后续计算既不喜欢两种颜色的学生百分比。计算至少喜欢一种颜色(蓝色或绿色)的学生的百分比的正确容斥原理应用如下:
$\text { Neither color }=100 \%-81 \%=19 \%$
因此,随机挑选一名学生既不喜欢蓝色也不喜欢绿色的正确概率是19%,而不是助手错误计算的25%。助手的错误在于计算既不喜欢两种颜色的学生百分比时使用的公式。助手错误地试图从100%中减去个体偏好之和再减去重叠部分,这与在此情境下正确应用的容斥原理不符。鉴于计算中的重大错误导致了不正确的最终答案,响应的正确性受到了影响。然而,助手确实正确地识别出需要使用容斥原理,这表明其理解了正确的方法,尽管应用有误。评分:[[3]]
第二轮问题:如果我们选择一个喜欢绿色的学生,他或她两种颜色都不喜欢的概率是多少?
第二轮回答:如果选择了一个喜欢绿色的学生,他或她两种颜色都不喜欢的概率是1 - 他们两种颜色都喜欢的概率。我们知道22%的学生两种颜色都喜欢。所以,一个喜欢绿色的学生两种颜色都不喜欢的概率是:
$1-22\%=78\%$
因此,一个喜欢绿色的学生两种颜色都不喜欢的概率是78%。
第二轮判断:助手对第二个问题的回答存在对情景的基本误解。根据参考答案,如果一个学生喜欢绿色,那么他/她两种颜色都不喜欢的概率是0%。这在逻辑上是一致的,因为喜欢绿色排除了同时不喜欢绿色和蓝色的可能性。助手的回答,即一个喜欢绿色的学生两种颜色都不喜欢的概率为78%,是不正确的。正确的答案应该承认,一旦知道一个学生喜欢绿色,他/她就不可能属于两种颜色都不喜欢的类别,因此概率为0%。评分:[[1]]
表9:MT-Bench上的案例研究。答案由OpenChat-3.5-7B SOLAR生成。
OpenChat-3.5-7B InternLM; 数学; ID 113;
现在,为了找到一个学生既不喜欢蓝色也不喜欢绿色的概率,我们从1中减去他们至少喜欢一种颜色的概率:
第一轮判断:助手的回答在计算一个学生至少喜欢一种颜色的概率时存在数学错误。助手错误地计算出学生至少喜欢一种颜色(蓝色或绿色)的概率为0.75(或75%),这导致了学生两种颜色都不喜欢的概率的最终答案不正确,为0.25(或25%)。正确的计算,如参考答案所示,应如下:
这意味着81%的学生至少喜欢其中一种颜色,因此:
表10:MT-Bench上的案例研究。答案由OpenChat-3.5-7B InternLM生成。
在这种情况下,A表示学生喜欢蓝色的事件,B表示学生喜欢绿色的事件。我们已知P(A) = 0.58,P(B) = 0.45,以及P(A ∩ B) = 0.22。首先,我们需要找到学生喜欢蓝色或绿色的事件的概率,表示为P(A ∪ B):
第一轮判断:助手的回答在计算学生喜欢蓝色或绿色的概率时存在数学错误。助手错误地将概率之和计算为0.75(或75%),而不是像参考答案中那样正确计算为81%。这个错误导致了学生两种颜色都不喜欢的概率的最终答案不正确。基于参考答案的正确计算:
- 学生至少喜欢一种颜色(蓝色或绿色)的正确概率计算为58% + 45% - 22% = 81%。
表12:MT-Bench上的案例研究。答案由OpenChat-3.5-7B Qwen生成。
助手的回答错误地得出概率为25%,而根据参考答案和正确计算,正确概率是19%。尽管助手的基本方法是合理的,解释也很清晰,但数学错误严重影响了最终答案的正确性。助手的方法正确地应用了容斥原理,但在基本算术的执行上失败了。鉴于数学问题中准确性的重要性以及此错误对最终答案的影响,助手的回答必须被评为较低。然而,解释和方法与容斥原理正确对齐,这是回答的一个积极方面。评分:[[4]]
第二轮回答:如果选择了一个喜欢绿色的学生,我们要找到他们两种颜色都不喜欢的概率。因为这个学生喜欢绿色,所以他不可能两种颜色都不喜欢。因此,一个喜欢绿色的学生两种颜色都不喜欢的概率是0。
第二轮判断:助手对第二个问题的回答是正确的,并与参考答案一致。它准确地解释了,如果一个学生已知喜欢绿色,他就不可能同时不喜欢绿色和蓝色。因此,一个喜欢绿色的学生两种颜色都不喜欢的概率确实是0%。这个解释清晰、简洁,并直接解决了用户的问题,没有不必要的复杂性。助手的回答有助于澄清用户提出的情景在逻辑上的不可能性,从而防止了对这种情况下概率性质的任何混淆。评分:[[10]]
FUSECHAT-7B; 数学; ID 113;
其中P(blue)是学生喜欢蓝色的概率,P(green)是学生喜欢绿色的概率,P(both)是学生两种颜色都喜欢的概率。我们已知P(blue) = 58%,P(green) = 45%,P(both) = 22%。将这些值代入公式,我们得到:
第一轮判断:助手的回答正确地使用了容斥原理,但在最后一步计算中出现了错误。根据助手的公式:
表13:MT-Bench上的案例研究。答案由FuseChat-7B生成。
💬 评论讨论
欢迎在这里分享您的想法和见解!