DeepSeek V3 并行训练、推理优化点(一)

训练优化1, FP8计算

DeepSeek-V3在训练过程中统一使用E4M3格式,并通过细粒度的per-tile(1x128)和per-group(128x128)量化来降低误差。

FP8的好处还体现在节省显存上(尤其是激活值)。此外,DeepSeek-V3使用BF16来保存优化器状态,以及对部分操作进行选择性重计算(例如RMSNorm, MLA Up-Proj, SwiGLU)。

优化点2 模型结构

MOE+MLA

训练优化3 DeepSeekV3 数据并行+专家并行 (DP+EP)

DeepSeek-V3使用64路的专家并行,16路的流水线并行,以及数据并行(ZeRO1)。
我们再来回顾一下Zero1:对优化器的状态进行分片
Zero2: 对优化器状态+梯度进行分片
Zero3: 对优化器状态+梯度+参数进行分片
对于LLama-7B模型来说:
模型参数占用的显存:14GB
优化器状态占用的显存:84GB
因为使用float32存储,防止下溢,所以m,v,w = 1423 = 84GB
梯度占用的显存:14GB
这里的优化器状态占用的显存是很大的,所以需要开启Zero1

大规模跨节点专家并行:Expert Parallelism / EP
EP 使得 batch size 大大增加,从而提高 GPU 矩阵乘法的效率,提高吞吐。其次 EP 使得专家分散在不同的 GPU 上,每个 GPU 只需要计算很少的专家(因此更少的访存需求),从而降低延迟。

专家并行会引入all2all通信,由于每个token会激活8个专家,这导致跨节点的all2all通信开销成为主要的系统瓶颈。

在算法层面,DeepSeek-V3使用分组路由的方式,限制每个token只会激活4个节点上的专家从而减半跨节点的通信流量。在系统层面,将节点间通信和节点内通信进行流水,最大化使用网络带宽和NVLink带宽。

多机多卡的专家并行,会带来通信开销,所以采取双batch隐藏通信开销。
在这里插入图片描述
黄色的前向计算,绿色的后向计算。

ATTN 和MLP是主要的计算过程。
前向过程:
ATTN-> Combine(经过MOE专家计算,通信过程)-> Dispatch(分发到不同的GPU,通信过程) -> MLP

推理

在这里插入图片描述
MoE节省flops的好处主要体现在计算密集的prefill阶段,而在访存密集的decode阶段,MoE巨大的参数量然而会带来更加昂贵的数据搬移开销。哪怕能解决访存密集的问题,MoE参数消耗如此多昂贵的HBM空间,这可能也不是一个相当划算的决定。

DeepSeek-V3采取PD分离的方式,分别应对prefilldecode两阶段的挑战。

在prefill阶段,attention模块采用4路张量并行+8路数据并行,moe模块采用32路专家并行。这样并行的目的是在满足首token时延的要求下,最大化系统吞吐。

在decode阶段,DeepSeek-V3采取320路专家并行(256个小专家+64个热点专家),有效降低解码时延,并缓解负载不均衡的问题。

为了填充all2all通信阶段的设备空闲时间,DeepSeek-V3采用NanoFlow中的双流推理策略,将不同micro-batch中的计算和通信任务并发执行,从而提高设备资源利用率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝鲸123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值