Qwen1.5-MoE: Matching 7B Model Performance with 1/3 Activated Parameters

阿里发布的Qwen1.5-MoE-A2.7B模型仅使用27亿激活参数,性能媲美70亿参数模型,通过Finegrainedexperts、有效的初始化策略和新的路由机制,实现了参数减少75%的同时提升训练和推理效率。
摘要由CSDN通过智能技术生成

大模型太卷了,总感觉天天出新的模型。今天看公众的号,看到阿里Qwen发布一款总模型7B,推理时,激活参数2.7B的大模型。仔细看了一下他的技术报告,记录一下。
技术博客:Qwen1.5-MoE: Matching 7B Model Performance with 1/3 Activated Parameters

优点:

Qwen1.5-MoE-A2.7B。它仅拥有27亿个激活参数,但其性能却能与当前最先进的70亿参数模型,如Mistral 7B和Qwen1.5-7B相媲美。相较于包含65亿个Non-Embedding参数的Qwen1.5-7B,Qwen1.5-MoE-A2.7B只有20亿个Non-Embedding参数,约为原模型大小的三分之一。此外,相比Qwen1.5-7B,Qwen1.5-MoE-A2.7B的训练成本降低了75%,推理速度则提升至1.74倍。

性能:

在这里插入图片描述

激活参数对比:

在这里插入图片描述

模型参数计算:

参考资料:huggingface

{
  "architectures": [
    "Qwen2MoeForCausalLM"
  ],
  "attention_dropout": 0.0,
  "bos_token_id": 151643,
  "eos_token_id": 151643,
  "hidden_act": "silu",
  "hidden_size": 2048,
  "initializer_range": 0.02,
  "intermediate_size": 5632,
  "max_position_embeddings": 8192,
  "max_window_layers": 21,
  "model_type": "qwen2_moe",
  "num_attention_heads": 16,
  "num_hidden_layers": 24,
  "num_key_value_heads": 16,
  "rms_norm_eps": 1e-06,
  "rope_theta": 1000000.0,
  "sliding_window": 32768,
  "tie_word_embeddings": false,
  "torch_dtype": "bfloat16",
  "transformers_version": "4.39.0.dev0",
  "use_cache": true,
  "use_sliding_window": false,
  "vocab_size": 151936,
  "decoder_sparse_step": 1,
  "moe_intermediate_size": 1408,
  "shared_expert_intermediate_size": 5632,
  "num_experts_per_tok": 4,
  "num_experts": 60,
  "norm_topk_prob": false,
  "output_router_logits": false,
  "router_aux_loss_coef": 0.001
}

模型主要参数包括:

词汇表,多头注意力机制, FFN

  • 词汇表:
    151936*2048=311164928≈0.3B
  • 多头注意力机制:
    模型层数矩阵大小矩阵数量
    24 * (2048*2048) *4=402653184≈0.4B
  • FFN:通常为GLU结构即三个相同结构的矩阵,并且这里是MoE所有会有多个相同的专家,即8个FFN,这里先默认是8个头,具体模型结构略有一些差异,不过模型参数计算是一致的。
    矩阵大小 * GLU* 专家数量 * 模型层数
    5632 * 2048 * 3 * 8 * 24= 6.64377754 × 1 0 9 6.64377754\times10^{9} 6.64377754×109 ≈6.4B
    中间会省略一些参数,如RMSNorm的参数,以及矩阵的bias。

模型结构:

主要方面创新: Finegrained experts,初始化,新的routing机制

  • Finegrained experts
    DeepSeek-MoE和DBRX已经证明了finegrained experts的有效性。从FFN层过渡到MoE层时,我们一般只是简单地复制多次FFN来实现多个expert。而finegrained experts的目标是在不增加参数数量的前提下生成更多expert。为了实现这一点,我们将单个FFN分割成几个部分,每个部分作为一个独立的expert。我们设计了具有总共64个expert的的MoE,对比其他配置,我们认为这个实现能达到效果和效率的最优。
    我理解的意思就是,常规的MoE是8个专家,但是Qwen则是64个专家,怎么增加专家的数量,并且不增加参数量,那就是分割专家,对每个专家进行纵向切割,切割成8个专家,这么就会形成64个专家。
  • 初始化
    模型初始化阶段至关重要。初步实验表明,从零开始训练MoE模型可能效率低下,且难以提升至预期的最优性能水平。因此,我们首先利用已有的Qwen-1.8B,将其改造为Qwen1.5-MoE-A2.7B。此外,在初始化阶段引入随机性可以显著加快收敛速度,并在整个预训练过程中带来更好的整体性能表现。
  • 新的routing机制
    整合了4个总是被激活的共享expert和每次只激活其中4个的60个routing expert。
  • 30
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值