开源周的最后一天,
DeepSeek
分享了
DeepSeek-V3/R1
的架构设计思路
,让大家能够更系统更全面的了解其推理系统的设计过程,以及更深刻的理解之前开源的
6
个项目。
DeepSeek-V3/R1
推理系统的核心目标是什么?
通过软件架构的优化,达到:
1.
更高的吞吐量;
2.
更低的延时;
为什么
DeepSeek
要走这一条路?
曾经
AI
技术发展,
GPU
就是瓶颈。
GPU
是瓶颈的时候,有两条路可走:
其一,水平扩展
scale out
:囤卡,堆
GPU
;
其二,垂直扩展
scale up
:
GPU
升级换代;
但这两条路,都被死死的卡在漂亮国的手里。
卡,限制你,不让你囤。
先进的卡,不卖给你,谁叫你你落后
5
年。
为了突破瓶颈,D
eepSeek
被逼无奈
的走出了第三条路:
通过软件优化架构优化
。
为了达成目标,
DeepSeek
的核心方案是啥?
大规模的跨节点
专家并行
EP
,
Expert Parallelism
。
通过提升专家并行
EP
的数量(
batch size
),提升
GPU
矩阵乘法的效率,
提高吞吐
;与此同时,多专家分散在不同的
GPU
,每个
GPU
只需要计算更少的专家,访问更少的数据,从而
降低延迟
。
大规模的跨节点专家并行
EP
,会对软件架构带来什么新的挑战?
1. EP
跨节点传输,
要解决传输与计算并行的问题;
2. EP
多节点联动,
要解决数据分发汇总,负载均衡等问题
;
大规模的跨节点专家并行
EP
的部署与策略是怎么样的?
由于
V3/R1
的专家数量众多,并且每层
256
个专家中仅激活其中
8
个,
DeepSeek
采用多机多卡间的专家并行策略来达到以下目的:
Prefill
预填充阶段
:路由专家
EP-32
、
MLA
和共享专家
DP-32
,一个部署单元是
4
节点,
32
个冗余路由专家,每张卡
9
个路由专家和
1
个共享专家;
Decode
解码阶段
:路由专家
EP-144
、
MLA
和共享专家
DP-144
,一个部署单元是
18
节点,
32
个冗余路由专家,每张卡
2
个路由专家和
1
个共享专家;
这两个阶段的负载均衡策略各不相同。
如何解决计算与传输并行的问题?
多机多卡的专家并行会引入比较大的通信开销,所以DeepSeek使用
双向通道
,提高整体吞吐。
预填充阶段:
计算和通信交错进行,一个通道计算的时候,另一个通道通信。
解码阶段类似:
计算与通讯交错进行,通过流水线来实现计算和通信的重叠。
如何最大程度的负载均衡?
由于采用了很大规模的数据并行与专家并行,如果某个
GPU
的计算或通信负载过重,
单个长尾将成为整个系统的瓶颈。与此同时其他
GPU
因为等待而空转,造成整体资源利用率下降
。因此必须尽可能地为每个
GPU
平均分配计算负载、通信负载。
预填充阶段