MLTalks

Stay Hungry, Stay Foolish

1. 概述

  • DeepSeek-V3采用MoE架构,总共 671B 参数,每个token会激活 37B 参数量;训练采用了14.8T Token数,训练耗时为2.788M H800 GPU时
  • 跟DeepSeek-V2相同点
    • MLA(Multi-head Latent Attention)
    • DeepSeekMoE结构
  • 跟DeepSeek-V2不同点
    • 负载均衡策略: 使用auxiliary-loss-free策略用于负载均衡,减少不均衡对模型性能产生负面影响
    • 训练目标:使用了多token预测目标(Multi-Token Prediction),简称MTP
  • 各个评测集下的效果:

阅读全文 »

1. 简介

之前现存的MoE架构像GShard的实现上是在Transformer中的FFN层替换为MoE层,训练时从 \(N\) 个专家中选出 \(top-K\) 个专家进行训练。这类MoE架构往往面临两类问题:(1)知识混合,架构中专家数是有限的(8个/16个),每个token会分发给不同的专家有可能会让专家涉及多样的知识, 在同一时刻很难被同时用到; (2)知识冗余,每个token分成不同专家处理时会涉及相同的知识,所以不同专家在参数中可能会学到相同的知识内容,产生冗余。

对于 \(DeepSeekMoE\) 可以采用了两个原则来实现最大限度的专家特化(即术业有专攻,不同专家的知识越少交叉越好),具体做法:(1)把专家细粒度拆分为 \(mN\) 个,然后使用时激活其中的 \(mK\) 个; (2)将其中的 \(K_s\) 个专家隔离出来共享,用于获取公共知识,减少专家冗余。DeepSeekMoE 2B表现跟GShard 2.9B可比,后者有1.5倍专家参数和计算量;DeepSeekMoE 16B跟LLaMA2 7B可比,计算量减少了40%;DeepSeekMoE 145B可与DeepSeek 67B相比,只用了28.5%的计算量(甚至更少到18.2%计算量)

阅读全文 »

DeepSeek-V2是MoE模型架构,有236B总的参数量,每个token会激活其中的21B的参数,支持128K token长度的上下文。在DeepSeek-V2中采用了Multi-head Latent Attention (MLA)和DeepSeekMoE的架构设计。相比DeepSeek-67B实现了42.5%训练成本下降,KV Cache减少93.3%,生成吞吐最高提升了5.76倍。先使用8.1T训练数据进行了DeepSeek-V2的预训练,然后进行SFT和RL训练发挥更大潜能。

阅读全文 »

Switch Transformers也是google在2022年发表的一篇论文, 该论文简化了MoE的路由算法, 减少了计算量和通信量; 第一次支持bfloat16精度进行训练. 基于T5-Base和T5-Large设计的模型在相同的算力下训练速度提升了7x倍; 同时发布了1.6万亿(1.6 trillion)参数的MoE模型,相比T5-XXL模型训练速度提长了4x倍.

阅读全文 »

1. 背景介绍

这是2017年Google Brain团队发表的一篇比较经典的论文, 可以做为MOE在大语言模型上应用的第一篇, MOE全称是混合专家(Mixture of Experts). 这里的每个Expert都是一个更小的神经网络, 比如最简单就是FC全连接网络, MOE整体不是一个完整的网络结构, 而是作为layer层嵌入到别的网络中.

首先介绍这篇论文的背景, 模型的学习能力强弱跟模型的参数量有关, 即模型越大参数量越多那么模型效果越好, 同时存在个问题就是按之前稠密模型的设计, 模型参数量越大计算量也越大, 计算越慢. 有没有一种方式既可以增大模型参数量又能使得计算量控制在一定范围内(对应有个名词叫条件计算conditional computation), 这就是这次论文讨论的重点. 本文中基于LSTM堆栈基础上应用了MOE结果使得参数量提升至137B大小, 相比之前模型容量提升了有1000倍, 但是计算量只增加了一少部分, 具体数据和效果看最后.

阅读全文 »

1. Context Parallel并行原理介绍

megatron中的context并行(简称CP)与sequence并行(简称SP)不同点在于,SP只针对LayernormDropout输出的activation在sequence维度上进行切分,CP则是对所有的input输入和所有的输出activation在sequence维度上进行切分,可以看成是增强版的SP。除了Attention模块以外,其他的模块(Layernorm、Dropout)由于没有多token的处理,在CP并行时都不用任何修改。

阅读全文 »

1. 背景介绍

Gemma模型是在2024.2.21号Google新发布的大语言模型, Gemma复用了Gemini相同的技术(Gemini也是Google发布的多模态模型),Gemma这次发布了了2B和7B两个版本的参数,不仅提供了预训练的checkpoints,还提供了用于对话、指令跟随等fine-tune的checkpoints。在QA问答、常识。在11

阅读全文 »

1. 使用入口

  • DistributedOptimizer类定义在megatron/optimizer/distrib_optimizer.py文件中。创建的入口是在megatron/optimizer/__init__.py文件中的get_megatron_optimizer函数中。根据传入的args.use_distributed_optimizer参数来判断是用DistributedOptimizer还是Float16OptimizerWithFloat16Params
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def get_megatron_optimizer(model,
no_weight_decay_cond=None,
scale_lr_cond=None,
lr_mult=1.0):
...
# Megatron optimizer.
opt_ty = DistributedOptimizer \
if args.use_distributed_optimizer else \
Float16OptimizerWithFloat16Params
return opt_ty(optimizer,
args.clip_grad,
args.log_num_zeros_in_grad,
params_have_main_grad,
args.use_contiguous_buffers_in_local_ddp,
args.fp16,
args.bf16,
args.params_dtype,
grad_scaler,
model)
阅读全文 »