Mixtral-8x7B MoE大模型微调实践,超越Llama2-65B

01

前言

Mixtral-8x7B在各大榜单中取得了及其优异的表现,本文主要分享我们微调Mixtral-8x7B MoE模型的初步实践。我们使用Firefly项目对其进行微调,在一张V100上,仅使用4.8万条数据对Mixtral-8x7B-v0.1基座模型微调了3000步,取得了非常惊艳的效果。

我们的模型在🤗Open LLM Leaderboard上的分数为70.34分,比Mixtral-8x7B-v0.1提升1.92分,比官方的chat模型低2.28分。若对训练数据和流程进行更精细的调整,应该还有较大的提升空间。

图片

图片

注意,Mixtral-8x7B-v0.1为预训练模型,具有非常弱的指令遵从能力,我们在此基础上进行微调,旨在验证方法的有效性。若读者希望在自己的下游任务中进行微调,可基于Mixtral-8x7B-Instruct-v0.1进行微调。

我们也对比了其他主流的开源模型在🤗Open LLM Leaderboard的表现。得益于Mixtral-8x7B强大的基座能力,Firefly微调的模型把Llama2-65B、Yi-34B、Vicuna-33B和Qwen-14B等模型都甩在了身后。

值得注意的是:由于MoE的稀疏性,我们的模型的推理成本与速度,理论上接近于两个7B的模型。这对Llama2-65B无疑是降维打击,该MoE模型不但有着更好的表现,推理速度与成本也大大优于Llama2-65B。

图片

图片

Firefly项目地址:

https://github.com/yangjianxin1/Firefly

firefly-mixtral-8x7b完整权重:

https://huggingface.co/YeungNLP/firefly-mixtral-8x7b

firefly-mixtral-8x7b LoRA权重:

https://huggingface.co/YeungNLP/firefly-mixtral-8x7b-lora

02

Mixtral-8x7B简介

近期,Mistral AI发布的Mixtral-8x7B模型,引发了大模型开源社区的剧烈反响。这是一个混合专家模型(Mixture-of-Expert,MoE),参数量约为46.7B,包含8个专家网络。在许多大模型评测榜单上,取得了非常优越的成绩。

在🤗Open LLM Leaderboard上,Mixtral-8x7B大幅超越LLaMA2-65B。

图片

图片

在Chatbot Arena Leaderboard中,Mixtral-8x7B也超越了许多耳熟能详的闭源大模型,例如GPT-3.5-Turbo-0314、Claude-Instant-1、Gemini Pro等,可谓是开源大模型之光。

图片

图片

虽然Mixtral-8x7B模型的参数量巨大,但由于MoE模型具有稀疏性,它的推理成本比同参数量的模型低得多,推理速度也快得多。其稀疏性具体表现为:在训练和推理时,同时只有两个专家网络会被激活,进行前向计算,其它专家网络处于失活状态。更具体地说:模型中存在SparseMoeBlock,在SparseMoeBlock中,每个隐形量只会被分配给两个专家网络进行前向计算,然后加权求和得到输出,其他专家则不参与该隐向量的前向计算。可以将其稀疏性与Dorpout机制进行形象的类比,Dropout是让部分神经元失活,而MoE则是让部分专家网络失活。

在此,我们暂且不对Mixtral-8x7B的MoE原理展开介绍,后续我们将会专门撰写一篇文章对其MoE部分的技术细节进行分析介绍。

总而言之,我们可以按照如下方式来理解Mixtral-8x7B:

更大的参数量:通过MoE技术将8个Mistral-7B模型进行组合(比较简单粗暴的理解方式),形成了一个具有更大参数量的模型。

更快的推理速度,更低的推理成本:同一时刻只有两个专家网络会被激活,可将其推理成本与推理速度视为约等于两个Mistral-7B(实际上速度更快)。

下图中展示了不同模型的评测表现及其推理预算。与LLaMA2系列模型相比,Mistral-7B与Mixtral-8x7B不仅评测表现优秀,且推理预算也很低。

图片

图片

03

训练策略

我们采用ultrachat数据集进行训练,这是一个英文的多轮对话数据集。我们对其进行过滤筛选,最后参与训练的数据量为48000条。

Mixtral-8x7B-Instruct-v0.1是官方的chat模型,它已经具备优秀的指令遵从能力,不过官方并未公开其训练策略。为了验证Firefly微调MoE模型的策略的有效性,我们并未直接基于Mixtral-8x7B-Instruct-v0.1进行微调,而是选择对指令遵从能力较弱的预训练模型Mixtral-8x7B-v0.1进行微调。

在多轮对话微调时,我们沿用Mistral AI官方的数据拼接方式,且仅计算target部分的loss。数据拼接示例如下:

我们采用Firefly项目中的QLoRA训练流程,在一张V100上进行训练。为了节省显存,LoRA一般仅在q_proj和v_proj处插入adapter,lora_rank设为8,参与训练的参数量约为百万或千万的量级,训练效果会打折扣。为了弥补量化带来的精度损失,我们参照QLoRA论文的实验设置,在所有layer中均插入adapter,将lora_rank设为16,最终参与训练的参数量约为2.4亿。

若读者的训练显存更大,可适当提升lora_rank至32或64,以提升训练效果。若读者的训练显存更小,产生OOM,可以尝试减小lora_rank至8,或者减少插入adapter的layer,但效果可能会有所降低。

部分训练的超参数设置如下

04

模型效果

图片

图片

图片

图片

图片

图片

图片

图片

05

结语

Mixtral-8x7B MoE大模型的开源以及各种“越级”的表现,让开源社区兴奋不已,给MoE技术又注入了一针强心剂。自从Mixtral-8x7B开源后,各大机构和研究者应该也在摩拳擦掌,后续应该也会涌现出更多MoE的开源工作。在🤗Hugging Face社区,已经出现了许多MoE模型,MoE大模型已经展现出成为下一个研究热点的势头。

图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
专家混合模型(Mixture-of-Experts, MoE)是一种机器学习模型,用于解决复杂问题。它由多个“专家”子模型组成,每个子模型负责解决输入空间的特定子领域。这些子模型可以是不同类型的模型,如决策树、神经网络等。 MoE模型的主要思想是将输入数据分配给不同的专家子模型,然后将所有子模型的输出进行合并,以生成最终结果。这种分配可以根据输入数据的特征进行动态调整,以确保每个子模型都能有效地处理特定类型的数据。 MoE模型的关键是学习如何分配数据给各个子模型,并且如何将各个子模型的输出进行合并。通常,这个过程是通过训练模型来实现的,使用最大化似然估计或其他类似的最优化方法。 MoE模型的优势在于它能够有效地利用不同子模型的优势,提升整体模型的性能。每个子模型专注于解决特定的问题,因此可以更好地适应不同的数据分布和特征。此外,MoE模型还可以通过动态分配和合并数据,自适应地学习不同数据分布的变化。 尽管MoE模型具有很多优点,但也存在一些挑战。例如,确定合适的子模型数量和结构可能需要一些领域知识和经验。另外,MoE模型的训练过程相对复杂,可能需要更多的计算资源和时间。 总的来说,专家混合模型是一种强大的机器学习模型,它通过将多个专家子模型组合起来,以提高整体模型的性能。它在实际应用中具有很大潜力,可以用于解决各种复杂问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值