聊聊Mixtral 8x7B结构 & MoE模型

Mixtral 8x7B

Mixtral 8x7B的命名来源:8个Mixtral 7B大模型基于MoE(Mixture of Experts 混合专家模型)模型堆叠起来。

混合专家模型

混合专家模型(Mixture of Experts,简称MoE)是一种先进的深度学习技术,它通过将输入任务分配给多个专家模型,提高了模型的计算效率和性能。这种模型结构特别适用于处理多样化的数据集,能够让每个专家模型专注于其最擅长的任务,进而实现模型的稀疏性。

专家即某种模型

MoE 层由众多专家组成,既可以是小型的多层感知机(MLP),也可以是像 Mistral 7B 这样复杂的大型语言模型(LLM);因此也需要某种机制将输入的token分配给对应的专家处理,即路由器

与transformer模型的融合

MoE的核心特征在transformer模型中,表现为两个元素:稀疏MoE层和门控网络(路由器)。

稀疏MoE层

与transformer模型中的FFN层不同,MoE采用稀疏MoE层替代。在稀疏MoE层中,每层有多个”Expert”,每个”Expert”都是一个FFN层。再有一个门控网络(路由器)将输入token转发至对应的”Expert”中执行。

聊聊Mixtral 8x7B结构 & MoE模型
image.png

展开其MoE层,其结构如下:

聊聊Mixtral 8x7B结构 & MoE模型
640 (1).png

对应的源码如下:

class MixtralSparseMoeBlock(nn.Module):

    def __init__(self, config):
        super().__init__()
        self.hidden_dim = config.hidden_size
        self.ffn_dim = config.intermediate_size
        self.num_experts = config.num_local_experts
        self.top_k = config.num_experts_per_tok

        # MoE Block: gating + Expert
        # gating
        self.gate = nn.Linear(self.hidden_dim, self.num_experts, bias=False)
        # Experts: 堆叠多个专家
        self.experts = nn.ModuleList([MixtralBLockSparseTop2MLP(config) for _ in range(self.num_experts)])

transformer模型中的FFN层,对应于模型源码(GLM、Llama2、Mixtral)的实现中,一般是MLP层。

而对于MLP层其实就很熟悉了,无非就是多个密集神经网络的堆叠。其源码如下

class MixtralBLockSparseTop2MLP(nn.Module):
    def __init__(self, config: MixtralConfig):
        super().__init__()
        self.ffn_dim = config.intermediate_size
        self.hidden_dim = config.hidden_size

        self.w1 = nn.Linear(self.hidden_dim, self.ffn_dim, bias=False)
        self.w2 = nn.Linear(self.ffn_dim, self.hidden_dim, bias=False)
        self.w3 = nn.Linear(self.hidden_dim, self.ffn_dim, bias=False)

        self.act_fn = ACT2FN[config.hidden_act]

    def forward(self, hidden_states):
        current_hidden_states = self.act_fn(self.w1(hidden_states)) * self.w3(hidden_states)
        current_hidden_states = self.w2(current_hidden_states)
        return current_hidden_states
聊聊Mixtral 8x7B结构 & MoE模型
640 (2).png

门控网络

门控网络用于输入token路由到适当专家。这种路由在MoE的功能中至关重要,并带来了token路由决策的复杂性,其中路由器本身是一个学习实体,在预训练过程中不断进化。

总结

从Mixtral 8x7B的结构来分析,基于MoE模型设计,”Expert”是8个MLP层混合使用。

参考

详解Mistral 8x7B混合专家模型(MoE)

超过GPT3.5?Mixtral 8*7B 模型结构分析


原文始发于微信公众号(阿郎小哥的随笔驿站):聊聊Mixtral 8x7B结构 & MoE模型

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/244149.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!