数据驱动的MoE构建:一种通过单个LLM构建MoE的方法

文摘   科技   2024-11-01 12:00   北京  

编者荐语:



在探索大语言模型的边界上,混合专家模型(MoE)的最新研究成果显得尤为亮眼。数据驱动策略为MoE模型的构建和优化提供了新思路。这一方法不仅提升了模型训练的效率,更在多个方面实现了性能的显著提升,展现了其广泛的应用潜力期望这一成果能够相关读者带来启发文已在International Conference on Intelligent Computing (ICIC 2024) 发表


数据驱动的MoE构建:一种通过单个LLM构建MoE的方法
亚信科技(中国)有限公司
摘要混合专家(MoE)模型,如Mixtral-8x7B,因其在性能上超越大型语言模型且资源消耗更低而备受关注。MoE模型的构建涉及gate层和稀疏MoE层的应用,以替代LLMs中的FNN层。传统MoE模型构建方法虽重用已训练网络层,但需大量训练和额外技术来充分训练每个专家。为降低训练成本和提高容错性,我们提出了一种数据驱动的MoE构建方法。该方法采用有监督的微调数据初始化gate层,而非随机初始化,并通过复制加入噪声的FFN层来创建稀疏MoE层。实验显示,这种简便、高效的MoE构建方法在特定领域和通用任务中性能优于现有技术,在医学、数学、法律和一般领域公开数据的Rouge评分上,分别实现了7.26%、9.96%、8.99%和5.25%的显著提升。


引言
GPTLLaMA等生成式大语言模型在AIGC领域引起了广泛关注。这些模型展现出卓越的自然语言处理能力,有效应对多种语言任务。构建大型语言模型的主流方法是不断增加网络参数规模,通过堆叠更密集的深度神经网络,这一策略在GPT-4Gemini-ultra等模型上取得了显著性能提升。然而,随着网络深度和参数数量的增加,对训练数据的需求和成本也随之上升。因此,在不增加网络层数或扩大模型参数的情况下,寻求性能提升的方法变得尤为重要,特别是在计算资源受限的情况下。

Mixtral 8x7B模型的推出标志着一种新型生成式大型语言模型——专家混合(MoE)模型的诞生。该模型能够在不增加参数规模的情况下超越更大规模的模型,并且资源消耗更低,因此备受瞩目。MoE模型不是通过扩大参数规模来提升性能,而是将多个小型LLM组合成专家网络。在推理时,仅激活处理特定查询的专家子集,显著降低了训练和推理成本。MoE模型通过替换FFN的稀疏MoE层和在LLM中添gate层来实现。构建MoE模型的方法包括使用大型语料库训练深度网络或利用现有LLM的已训练层,其中稀疏MoE层和gete层通常随机初始化。为了达到最佳性能,MoE模型仍需经历预训练、监督微调和强化学习等少量训练步骤,步骤数量取决于初始化方式。训练过程中需特别注意数据分布和训练策略的选择,确保gete层能够均匀且充分地选择所有专家,避免负载不均影响模型整体性能。

为解决这些问题,提出了一种基于单个小尺度LLM的数据驱动MoE构建方法。该方法使用一系列有监督的微调数据来构建MoE模型,覆盖了模型将应用的各种场景。监督数据用于初始化gate层和进行SFT训练,消除了随机初始化的需要,大幅减少了训练步骤,而且无需额外训练技术即可确保专家模型充分训练。

相关研究
(一)专家混合模型

MoE(混合专家)模型的设计理念是将不同领域的专家知识整合起来,以解决用户的多样化查询,每个专家专注于特定类型的问题。这类模型通常包含一个gate层和多个专家网络。gate层作为选择机制,根据用户查询内容挑选最合适的专家来处理,并由这些专家生成响应。随着MoE技术的发展,EigenRanzatoIlya将其纳入深度神经网络(DNN)的核心部分,使DNN既具可扩展性又高效。在生成式大型语言模型(LLM)中,MoE模型包含两个基本组件:


•  稀疏MoE层:这一层替代了传统LLM解码器中的FFN层。每个稀疏MoE层都由多个专家组成,每个专家都是一个独立的MLP网络。


•  Gate层:Gate层负责确定哪些专家子集将被激活以处理用户输入的令牌。它通常是一个FFN,通过处理输入令牌并使用softmax函数来计算选择每个专家的概率。随后,模型会识别概率最高的前K个专家,并将它们激活来处理用户输入。

(二)MoE 构建

由于MoE(混合专家)模型的架构主要由稀疏MoE层和gate层两个核心组件构成,其构建方法主要分为以下三种:


•  从头开始构建:这种方法类似于从零开始构建传统的语言模型。在MoE模型中,包括稀疏MoE层和gate层在内的所有神经网络层都需要进行随机初始化。随后,通过大量的语料库进行预训练、监督式微调以及强化学习,以训练出性能良好的MoE模型。


•  LLaMA-MoE方法:LLaMA-MoE研究提出了一种新方法,通过将小型语言模型的FFN层分割来构建稀疏MoE层。这一过程采用神经元共享和神经元无关两种分裂策略。这两种策略都能有效地将FFN层分割成多个专家网络。值得注意的是,生成的专家网络参数量少于原始的密集FFN。为了保持专家网络的表示能力并确保输出有效性,引入了比例因子和重新缩放操作。Gate层的权重则是通过随机初始化获得。最终,通过持续的预训练来完善MoE模型。


•  Sparse Upcycling该方法提出了一种基于已训练的深度密集神经网络模型来构建MoE模型的技术。在构建过程中,将原密集模型中的layer-normattentionlm_head等层的参数直接应用于MoE模型对应层。同时,将MLP层复制并扩展为稀疏MoE层的权重。Gate层同样采用随机初始化。通过一系列训练步骤,最终得到训练完善的MoE模型。



数据驱动的MoE构建方法

相对于前面提到的现有MoE构建方法,存在一个显著的不足:某些MoE层,尤其是gate层,其参数权重需要随机初始化。这种随机初始化的gete层要求在训练高性能MoE模型时,必须经历一系列复杂的训练过程,并且在训练期间需要均衡地选择专家,这一训练过程不仅成本高昂,而且对错误容忍度较低。为了解决这些问题,我们提出了一种创新的数据驱动的MoE构建方法。该方法的核心在于利用场景级监督数据和一个基础的小规模语言模型来构建MoE模型。这里的场景级监督数据指的是一系列覆盖了MoE模型预期应用场景的监督数据集。构建流程分为四个阶段:数据驱动的gate层构建、稀疏MoE层的专家构建、MoE的监督式微调(SFT)以及针对通用任务的微调。


(一)数据驱动的 Gate

在探讨MoE模型中的gate层时,需关注矩阵  的特性。矩阵  的第一维与稀疏MoE层的专家数  相同。具体来说,  是由  个元素或子矩阵组成的集合,即  。在专家选择过程中,gate层的作用是将前一个解码层的注意力计算结果(  )作为输入,与矩阵  进行点积运算,随后通过softmax函数计算选择每个专家的概率。例如,  与  的点积结果,经过softmax处理后,代表了选择专家E1的概率。这意味着  中的每个子矩阵都代表一个专家,即M1对应 E1 M1对应 E2,以此类推。


针对提出的数据驱动gate层构建方法,我们的方案是利用所有场景级监督数据来进行构建。首先,确定每个场景任务所需的专家数量,这取决于应用场景的数量和MoE模型中专家的总数。接着,我们将所有场景级监督数据按照应用场景进行划分。与特定场景相关的数据将被进一步分配给负责该领域问题的专家。这些数据通常包含两类提示:通用提示和特定领域数据。通用提示是领域内的常见问题,而特定领域数据则针对该领域内更具体、更复杂的子领域。

因此,与某领域相关的通用提示将分配给所有处理该领域问题的专家,而更复杂的专业数据则作为分配的领域特定数据均匀分配给每个专家。这样,处理同一领域的每个专家都会接收到部分相同的通用数据,但大部分是不同的分配的领域特定数据。同时,还会分配极小比例的其他领域的通用提示作为负样本。基础模型处理这些分配的数据,并返回每个类别的隐藏状态。Gate层中的每个矩阵权重可以通过将分配的领域特定数据的隐藏状态与通用提示的隐藏状态相加,并减去负样本的隐藏状态来初始化。最后,对这些计算结果进行归一化,以形成gate层中对应矩阵的权重。

图1:数据驱动方法的初始化gate层的示例


为了更清晰地说明,图1展示了一个包含4位专家的MoE模型构建示例,该模型应用于医疗和法律两个不同的场景。在数据驱动gate层的权重初始化方面,我们以医疗场景为例,法律场景的初始化方式类似。对于医疗场景,我们指定了两位专家(E1E2)来处理相关任务,他们在gateM中对应的矩阵是M1M2


初始化M1M2时,我们从场景级监督数据中提取了60个医疗监督数据,并分配给这两个矩阵。这60个数据中,20个被归类为通用数据,其余40个是非通用、复杂且专业化的特定领域数据。我们的数据驱动方法包括将这40个非通用医疗数据分成两个子集(每个专家分配2分配的领域特定数据),并计算20个通用数据、1分配的领域特定数据5个来自法律的负样本的隐藏状态。这些计算结果用于初始化M1的权重。对另一条分配的领域特定数据重复相同过程以初始化M2的权重。


采用数据驱动的方法来初始化gate层中的所有矩阵,可以确保gate层在为特定问题选择最合适的专家时做出精准的决策。例如,面对医学相关查询时,gate层会优先选择专家E1E2。这是因为矩阵M1M2的权重是基于医疗数据的隐藏状态计算得出的,它们已经对这些数据表示进行了学习。通过结合这些隐藏状态,M1M2能够有效地识别并区分不同类型的数据。当用户的查询与M1M2初始化的数据表示相似时,gate层会通过最大化与输入查询的点积来优先考虑M1M2,而不是其他矩阵。这样,通过M1M2的点积结果,E1E2将被选中来处理用户查询。与随机初始化的gate层相比,这种数据驱动的方法使得gate层能够学习各种输入表示,并理解每个矩阵所擅长的输入类型。这种方法最终确保了针对用户查询,能够选出最合适的专家进行响应。


(二)稀疏MoE


在构建稀疏MoE层中的专家网络时,我们采用了一种类似于Sparse Upcycling的初始化方法,并进行了一些调整:在复制FFN层的过程中加入了噪声。引入噪声的目的是为了进一步提升MoE模型的训练性能,从而打造出更出色的模型。

在监督式微调(SFT)阶段,如果稀疏MoE层中每个专家网络的权重相同,那么不同专家网络产生的输出结果将趋于相似。由于所有专家网络的结果相近,它们将拥有相似的反向传播梯度。这会导致在训练过程中,由于每个专家网络接收到的梯度相似且初始权重相同,更新后的权重也会趋于一致。为了解决这个问题,我们提出的方法在FFN层上引入了噪声,以增加专家网络之间的权重差异,从而优化MoE模型的表现。具体来说,我们为同一领域的专家网络分配了不同但相互关联的噪声值,而不同领域的专家网络则被分配了更容易区分的噪声值。这样,处理相同场景的专家子组将拥有不同的噪声值,而不同场景的专家子组之间的噪声值差异更大。这些噪声值被添加到原始FFN层的参数权重中,作为专家网络权重的初始化。


(三)MoE 监督微调


在完成gate层和稀疏MoE层的初始化之后,我们可以通过复制基础模型中的各层权重,并将其分配给相应的MoE层,来构建基于基础模型中的嵌入层、注意力层、head层等模型层的MoE模型。利用数据驱动的方法初始化gaet层,MoE模型能够有效地选择专家并处理来自不同应用领域的用户查询。然而,稀疏MoE层中的专家可能因为仅依赖于基础模型在预训练和监督微调阶段所获得的知识,而无法有效处理复杂的查询。

为了提升专家的处理能力,我们采用了领域数据监督微调过程。具体来说,我们使用场景级监督数据进行训练。得益于MoE模型中数据驱动的gate层能够精确地将输入令牌分配给相应的专家,因此无需额外的训练技术来平衡负载。微调过程与传统的LLM监督式微调(SFT)相似,监督数据被随机打乱,MoE模型根据交叉熵损失进行训练。经过一轮领域数据的SFT后,数据驱动的MoE模型在相关领域展现出了强大的推理能力。


(四)一般任务的监督微调


在对MoE模型进行基于场景级监督数据的微调之后,模型在特定应用领域展现出了出色的性能,并且具备了一定的泛化能力。然而,实际应用中可能会遇到用户查询与用于初始化数据驱动gate层的场景级监督数据存在较大差异的情况,导致MoE模型无法有效执行并产生满意的结果。这种情况下,由于用户查询的表示与场景级监督数据之间的显著差异,gate层可能会错误地分配专家,从而影响矩阵点积和专家选择概率的计算准确性。同时,被选中的专家可能也无法妥善处理相应的输入。

为了进一步提升MoE模型的泛化能力以及每个专家处理未知任务的有效性,我们采用了基于通用SFT数据的连续监督微调。这一步骤旨在增强gate层的容错性并提升专家的处理能力。

与使用场景级监督数据的训练过程不同,这一阶段的SFT数据仅包含一系列通用的问答任务。此外,训练在较小的数据集和学习率设置下进行。这样做的目的是在保留专家处理不同场景和领域任务能力的同时,增强其泛化能力。通过使用较小的训练数据和学习率,我们可以确保MoE模型的权重不会发生显著变化。


实验

为了验证数据驱动MoE模型的效率和有效性,我们将其与现有的MoE模型构建方法进行了比较,并实施了对照实验。在此阶段,我们重点检验了数据驱动gate层和稀疏MoE层的性能。所有实验均遵循以下实验设置进行。


(一)实验设置

在实验中,Vicuna被选作构建MoE模型的基础模型。我们使用了四个开源的不同数据集来对MoE模型进行微调和评估,这些数据集包括:数学数据集(由MathGlm提供)、法律数据集(来源于law-gpt)、医学数据集(由Zhongjing开源)以及一个通用数据集——OpenOrca

选择数学、法律和医学领域的开源数据集进行实验,旨在模拟这些领域中MoE模型的构建过程。在这些可用的开源数据集中,MathGlmlaw-gpt提供了高质量的中文监督式微调(SFT)数据。Zhongjing开源的医学数据集包含了70,000条基于中文的真实医患对话,这些对话富含医学术语和专业知识。此外,OpenOrca数据集用于微调和验证MoE模型在通用任务中的表现。所有训练过程均在Nvidia A100 GPU设备上完成。


(二)实验结果及分析

为了对比不同的MoE构建方法,我们分别采用了几种方法来构建不同类型的MoE模型进行比较。针对相关研究中提到的LLaMA-MoE和稀疏升级再造方法,我们通过神经元独立、神经元共享以及传统的FFN层复制技术在LLaMA-MoE和稀疏升级再造MoE模型中构建了稀疏MoE层。同时,gate层的权重是随机初始化的。


在构建过程完成后,我们进行了两个阶段的SFT训练。第一阶段使用特定领域的数据进行微调,第二阶段则采用通用数据进行训练。此外,我们利用四个验证集对所有训练后的MoE模型进行了定量评估。如图2所示,表1详细列出了Rouge评分,清晰地展示了数据驱动的MoE模型在所有场景下相较于llama-moe和稀疏升级再造方法在Rouge评估指标上的优势。

图2:数据驱动的 MoE 与现有的 MoE对比


表1:基于四类数据的 Rouge 评估


(三)消融实验及分析

为了全面评估数据驱动MoE模型中各个组件的效果,我们进行了一系列控制实验,重点考察了模型中的数据驱动gate层和稀疏MoE层。


在针对数据驱动gate层的控制实验中,我们保持了MoE模型的整体架构不变,仅对gate层的初始化方法进行了调整。这种设计使得我们能够在数据驱动策略与传统的随机初始化方法之间进行直接比较。根据表2的数据,采用数据驱动gate层的MoE模型在Rouge评估指标上展现了显著的性能优势。具体而言,在医学验证数据集上,模型在医学领域的得分为70.53,数学领域为81.35,法律领域为68.87,而在通用任务上的得分为73.29。这些成绩分别代表了相比传统方法在医学、数学、法律和通用任务上的2.964.083.454.25个百分点的显著提升。


表2:Gate层的对照实验(Rouge 评估)


值得注意的是,在SFT的两个阶段中,由于没有采用负载均衡策略,导致MoE模型性能不尽如人意,尤其是gate层的随机初始化。在推理阶段对专家选择概率进行分析时,我们发现微调过程中缺乏平衡的选择策略,导致在传统随机初始化方法下,只有少数专家模型得到了充分训练。如图3所示,随机初始化的gate层往往倾向于选择特定的专家模型,这导致这些模型的性能不及数据驱动的MoE模型。


为了获得可比较的结果,必须采用额外的训练策略,这不仅增加了训练时间和资源消耗,还降低了效率。相比之下,我们提出的方法在模型训练过程中展现了更高的效率、便捷性和有效性,同时还具备更高的容错性。

图3:不同 MoE 模型选择概率


在评估稀疏MoE层构建中引入噪声的有效性时,我们采用了相似的方法。通过在稀疏MoE层的构建过程中加入噪声,并随后进行监督式微调,我们观察到数据驱动模型的性能超越了仅使用FFN层复制的模型。具体来说,根据表3的数据,数据驱动的模型在医学、数学、法律和通用场景中的Rouge评分分别比仅复制FFN层的模型高出2.19、1.14、2.12和0.95个百分点。


表3:稀疏 MoE 层的对照实验( Rouge 评估)


总结及展望

总的来说,我们提出了一种高效且有效的构建MoE模型的方法,这种方法被称作数据驱动的MoE。它在简单性、效率和有效性方面超越了传统的MoE构建方法。特别是在医学、数学、法律和通用域的验证集上,数据驱动的MoE模型在Rouge评估中分别实现了7.269.968.995.25的最大改进。


具体来说,我们使用数据驱动的方法来初始化gate层,这消除了在均匀选择专家并确保他们在MoE训练阶段得到充分培训时所需的额外负载平衡措施。与依赖随机初始化的传统方法相比,这大大简化了训练过程。此外,创建稀疏MoE层只需要一个小规模的LLM,并且可以通过复制FFN层并添加噪声来实现。最后,通过实施所提出的数据驱动方法,数据驱动的MoE模型可以在各个领域实现高性能,只需一个阶段的监督微调。此外,通过应用一般任务SFT,可以进一步提高模型在一般任务中的能力和泛化能力。由于初始化数据驱动的gate层和稀疏MoE层的简单性,它们也可以通过应用来自各种应用领域的预训练数据来初始化。


在未来的工作中,我们将通过使用预训练数据初始化gate层,专注于评估数据驱动的MoE模型在持续的预训练任务中的效率和有效性。总的来说,我们提出的数据驱动的MoE方法为构建MoE模型提供了一种更高效和有效的解决方案,可以帮助开发人员和研究人员通过一个阶段的领域数据SFT方便地部署有效的MoE模型。

参考资料

[1] Chiang, W.L., Li, Z., Lin, Z., Sheng, Y., Wu, Z., Zhang, H., Zheng, L., Zhuang, S., Zhuang, Y., Gonzalez, J.E., et al.: Vicuna: An open-source chatbot impressing gpt-4 with 90% chatgpt quality. See https://vicuna. lmsys. org (accessed 14 April 2023) (2023)

[2] Yang, Z., Ding, M., Lv, Q., Jiang, Z., He, Z., Guo, Y., Bai, J., Tang, J.:Gpt can solve mathematical problems without a calculator. arXiv preprint arXiv:2309.03241 (2023)

[3]Hongcheng Liu, Yusheng Liao, Y.M.Y.W.: Lawgpt (2023), https://github.com/LiuHC0428/LAW_GPT

[4] Yang, S., Zhao, H., Zhu, S., Zhou, G., Xu, H., Jia, Y., Zan, H.: Zhongjing: Enhancing the chinese medical capabilities of large language model through expert feedback and real world multi-turn dialogue. arXiv preprint arXiv:2308.03549 (2023)

[5] Mukherjee, S., Mitra, A., Jawahar, G., Agarwal, S., Palangi, H., Awadallah, A.: Orca: Progressive learning from complex explanation traces of gpt-4. arXiv preprint arXiv:2306.02707 (2023)

亚信科技新技术探索
亚信科技的ICT前沿技术观点与行业洞见。展现亚信新技术与产品行业实践成果。
 最新文章