一文速览DeepSeekMoE:从Mixtral 8x7B到DeepSeekMoE(含DeepSeek LLM的简介)

前言

2025年春节期间,deepseek火爆全球——特别是deepseek V3deepseek R1,其背后的MoE架构引发大量关注,考虑到MoE模型的重要性,特把MoE相关的模型独立成此文

同时因为本文,涉及到了多篇文章的改动,如下表格所示

《从Mistral 7B到MoE模型Mixtral 8x7B的全面解析:从原理分析到代码解读》

《七月论文审稿GPT第3.2版和第3.5版:通过paper-review数据集分别微调Mistral、gemma》

《一文通透DeepSeek V2:详解MoE、Math版提出的GRPO、V2版提出的MLA(改造Transformer注意力)》

《一文速览Gemma 2及其微调:早期paper-7方面review微调Gemma2》

1

后半部分Mixtral 8x7B 抽取出来,放到本文MoE模型的前半部分

2

标题变成了《一文速览Mistral 7B及其微调——我司论文审稿GPT第3.2版:微调Mistral 7B instruct 0.2

leftarrow 微调Mistral部分抽取出来,放到《Mistral 7B文章》中

3

DeepSeekMoE部分 及 DeepSeek LLM部分 都放到本文MoE模型中

4

微调gemma部分放到此文《一文速览Gemma 2及其微调:早期paper-7方面review微调Gemma2》中
ightarrow

标题变成了《一文速览Gemma 2及其微调:从论文审稿GPT第3.5版(微调Gemma),到第5.2版(早期paper-7方面review微调Gemma2)

5

相当于标题直接变成了
一文速览DeepSeekMath及其提出的GRPO:Math模型的三阶段训练方式与群体相对策略优化GRPO

leftarrow 把此文《一文通透DeepSeek V2:详解MoE、Math版提出的GRPO、V2版提出的MLA(改造Transformer注意力)》的Math版提出的GRPO部分独立成文,放到《七月论文审稿GPT第3.2版和第3.5版》中

第一部分首个开源MoE大模型Mixtral 8x7B

本文的前两部分一开始写于2023年12.23日,当时是属于此文《从Mistral 7B到MoE模型Mixtral 8x7B的全面解析:从原理分析到代码解读》的后半部分

当时的前言是

  1. 对于Mixtral 8x7B,OpenAI 团队一直对 GPT-4 的参数量和训练细节守口如瓶。早些时候,有人爆料 GPT-4 是采用了由 8 个专家模型组成的集成系统
    后来又有传闻称,ChatGPT 也只是百亿参数级的模型(大概在 200 亿左右)
  2. 传闻无从证明,但 Mixtral 8x7B 可能提供了一种「非常接近 GPT-4」的开源选项,特此,本文全面解析下:从原理解析到代码解读(在此文之前,尚没有资料扒得像本文这样如此之细)

1.1 Mixtral 8x7B的整体架构与模型细节

23年12月8日,Mistral AI 在 X 平台甩出一条磁力链接(当然,后来很多人打开一看,发现是接近 87 GB 的种子)

看上去,Mixtral 8x7B的架构此前传闻的GPT-4架构非常相似(很像传闻中GPT-4的同款方案),但是「缩小版」:

  • 8 个专家总数,而不是 16 名(减少一半)
  • 每个专家为 7B 参数,而不是 166B(减少 24 倍)
  • 47B 总参数(估计)而不是 1.8T(减少 42 倍)
  • 与原始 GPT-4 相同的 32K 上下文

在发布后 24 小时内,已经有开发者做出了在线体验网站:nateraw/mixtral-8x7b-32kseqlen – Run with an API on Replicate

两天后的23年12.11日,Mistral AI团队对外正式发布 Mixtral 8x7B,其在大多数基准测试中都优于 Llama 2 70B,推理速度提高了 6 倍,且它在大多数标准基准测试中匹配或优于 GPT3.5

为免歧义,补充说明下,Mistral AI团队目前总共发布了两个模型

  • 今年10月发布的Mistral 7B
  • 今年12月则发布的混合专家模型,称之为Mixtral 8x7B

特意注意,一个mis 一个mix,本质不同

Mixtral 8x7B是一个纯解码器模型,下图是Mixtral的核心参数(可以把它和Mistral的核心参数做个对比)

  1. 其中前馈块从一组 8 个不同的参数组中进行选择(It is a decoder-only model where the feedforward block picks from a set of 8 distinct groups of parameters)

  2. 在每一层,对于每个token,路由器网络选择其中的两个组(“专家”)来处理token并通过组合相加得到它们的输出「At every layer, for every token, a router network chooses two of these groups (the “experts”) to process the token and combine their output additively

    相当于从下图的左侧变到了右侧(图源)

    这点可能很多朋友不会特别在意,但你仔细品味下,你会发现大有天地,即:每个token 都由某两或三个专家负责完成,最后整个序列 则是由一系列「不同的两两专家」组合完成,下文还会详述该点

  3. 上下文长度达到32K
    Mixtral is pretrained with multilingual data using a context size of 32k tokens

1.1.1 Mixtral 8x7B是一个稀疏的专家混合网络

如下图所示,传入模型的各个token在经过Attention层及残差连接后,进一步将由路由(Gating/Router)导向2个expert(FFN)中,之后对expert的输出进行加权聚合,再经过残差连接得到当前层的输出

首先,即对于给定的输入xMoE模块的输出由“专家网络输出的加权和”决定,其中权重由“门控网络的输出”确定(The output of the MoE module for a given input x is determined by the weighted sum of the outputs of the expert networks, where the weights are given by the gating network’s output.)

  1. 当给定n个专家网络left{E_{0}, E_{i}, ldots, E_{n-1}
ight},则专家层(expert layer)的输出为:

    sum_{i=0}^{n-1} G(x)_{i} cdot E_{i}(x)

    其中
    
ightarrowG(x)_{i}表示第i个专家的门控gating网络的n维输出(denotes the n-dimensional output of the gating network for the i-th expert)
    
ightarrow E_{i}(x) 是第i个专家网络的输出(the output of the i-th expert network)

  2. 如果门控gating向量稀疏,可以避免计算门为零的专家输出(If the gating vector is sparse, we can avoid computing the outputs of experts whose gates are zero)
    且有多种实现G(x)的可选方法,但一种简单且高性能的方法是通过对线性层的Top-K logits进行softmax(but a simple and performant one is implemented by taking the softmax over the Top-K logits of a linear layer [28])
    G(x):=operatorname{Softmax}left(operatorname{TopK}left(x cdot W_{g}
ight)
ight)

    其中
    如果_ell_{i}在logits的top-K坐标ell in mathbb{R}^{n}中,则(operatorname{TopK}(ell))_{i}:=ell_{i},否则(operatorname{TopK}(ell))_{i}:=-infty_
    _即where(operatorname{TopK}(ell))_{i}:=ell_{i} if ell_{i} is among the top-K coordinates of logits ell in mathbb{R}^{n}and (operatorname{TopK}(ell))_{i}:=-infty otherwise.

    举个例子(例子来源于),将输入(x)乘以路由器权重矩阵(W)——对应于上面公式中的left(x cdot W_{g}
ight)_

    然后,在输出上应用SoftMax来为每个专家创建概率分布G(x):路由器使用此概率分布为给定的输入选择最佳匹配的专家——对应于上面的公式__G(x):=operatorname{Softmax}left(operatorname{TopK}left(x cdot W_{g}
ight)
ight)

    再其次,将每个选定的专家__G(x)与每个路由器的输出E(x)相乘,并对结果求和——对应于上面的公式sum_{i=0}^{n-1} G(x)_{i} cdot E_{i}(x)

    最后,上述整个流程如下所示「如下图左侧所示,当G(x)的权重结果计算出来后,根据所得权重结果选择4个专家中的最左边那个,然后将G(x)与最左边专家的输出结果E(x)相乘,得到 y 」

  3. 至于每个token所使用的专家数量K是可调的参数
    当保持K不变但增加n时,可以增加模型的总参数数量,同时保持计算成本有效不变
    The value of K – the number of experts

猜你喜欢

转载自blog.csdn.net/web13765607643/article/details/145948615
今日推荐