深度解读DeepSeek:开源周(Open Source Week)技术解读
深度解读DeepSeek:源码解读 DeepSeek-V3
深度解读DeepSeek:技术原理
深度解读DeepSeek:发展历程
文章目录
- 一、开源内容概览
- Day1:FlashMLA
- Day2:DeepEP
- Day3:DeepGEMM
- Day4:DualPipe & EPLB
- Day5:3FS
- 二、技术突破与创新
- 三、技术原理
- DeepEP
2025年2月24日至28日,DeepSeek通过连续五天的“开源周”活动,向全球开源了8个核心项目,覆盖AI训练、推理、并行计算等多个关键领域。
一、开源内容概览
DeepSeek 开源周共发布 五个核心项目 及多个辅助工具,涵盖 AI 开发的三大核心领域:计算优化、通信效率、存储加速。以下是各项目的核心价值:
Day1:FlashMLA
功能:针对 NVIDIA Hopper GPU 优化的多头线性注意力解码内核,支持可变长度序列处理。
突破:在 H800 GPU 上实现 580 TFLOPS 计算性能 和 3000 GB/s 内存带宽,推理效率提升 2-3 倍,适用于实时翻译、长文本处理等场景18。
意义:打破大厂对高效推理工具的垄断,降低开发者使用门槛,推动边缘设备部署。
Day2:DeepEP
功能:专为混合专家模型(MoE)设计的通信库,优化节点间数据分发与合并。
突破:通过低延迟内核和通信-计算重叠技术,实现 训练速度提升 3 倍、延迟降低 5 倍,支持 FP8 低精度通信。
意义:挑战英伟达 NCCL 生态,打破硬件与软件耦合的技术壁垒。
Day3:DeepGEMM
功能:基于 FP8 的高效矩阵乘法库,专为 MoE 模型优化。
突破:代码仅 300 行,通过即时编译(JIT)和 CUDA 核心双层累加技术,实现 1.1-2.7 倍加速,最高性能达 1350 TFLOPS。
意义:推动低精度计算普及,降低千亿参数模型部署成本,成为“AI 工业革命的基石”。
Day4:DualPipe & EPLB
功能:创新双向流水线并行算法(DualPipe)与动态负载均衡工具(EPLB)。
突破:通过任务交叉排布和专家模型动态复制,减少 GPU 空闲时间,优化资源利用率。
意义:类比“泰勒管理制”和“福特流水线”,重构 AI 训练流程,提升工业级效率。
Day5:3FS
功能:高性能分布式文件系统,支持 RDMA 网络和 SSD 存储。
突破:实现 6.6 TB/s 读取速度,加速海量数据训练与推理阶段的向量搜索。
意义:补全 AI 基础设施的最后一块拼图,解决存储瓶颈问题。
二、技术突破与创新
DeepSeek 开源周的核心技术突破体现在以下三方面:
-
硬件性能压榨
-
GPU 极限优化:如 FlashMLA 将 H800 GPU 的内存带宽利用率提升至理论极限的 90%,DeepGEMM 通过直接编写机器指令绕过 CUDA 生态限制。
-
低精度计算革命:FP8 的广泛应用(如 DeepGEMM)在保证精度损失 <0.5% 的前提下,将存储和算力需求降低至 FP32 的 1/4。
-
-
并行计算重构
- 通信与计算重叠:DeepEP 通过钩子机制实现通信与计算并行,减少 GPU 空闲时间。
- 动态负载均衡:EPLB 根据专家模型调用频率动态调整任务分配,避免 GPU 资源浪费。
-
开源生态挑战
- 对抗英伟达垄断:DeepGEMM 和 DeepEP 直接挑战 CUDA 和 NCCL 生态,推动国产软硬件适配。
- 透明化技术黑箱:公开训练框架分析数据,推动行业技术共享与协作。
三、技术原理
DeepEP
网络知识扫盲:GPU通信互联技术介绍
MoE介绍:深度解读DeepSeek
DeepEP是由DeepSeek团队推出的首个专为混合专家模型(MoE)设计的专家并行(EP)通信库。主要解决MoE模型在分布式训练和推理中的通信瓶颈问题,通过优化数据传输和资源调度,实现“降本增效”。
-
高效的全对全通信(All-to-All):支持节点内(NVLink)和节点间(RDMA)的高带宽通信,优化数据在不同专家子网络间的快速交换。
-
动态资源调控:基于群组限制门控算法(group-limited gating),动态分配GPU计算单元(SM)数量,任务多时增加资源,任务少时降低功耗,减少资源浪费。支持低精度运算:原生支持FP8格式,减少内存占用并加速计算,适用于大规模分布式训练
传统的基于NVSwitch的All-to-All通信结构:
通信内核(通信SM控制代码)的实现与MoE门控算法和集群网络拓扑是按照软硬件协同的思路来进行设计的。具体来说,在集群中,跨节点GPU与IB完全互连,节点内(单台服务器内)通信通过NVLink完成。NVLink 提供 160 GB/s 的带宽,约是IB的 3.2 倍 (50 GB/s)。
之前的MoE普遍使用NCCL的p2p通信进行all-to-all,结果纷纷吐槽all-to-all性能差,带宽利用率低。但是,很少有人真的去分析all-to-all性能差的原因,并尝试去改进。而DeepEP的出现,可以说彻底解决了all-to-all打不满带宽的问题。DeepEP直接放弃了NCCL,转而使用更底层的NVSHMEM进行通信,结果基本用满了NVLink和IB的带宽。
ps:NCCL(NVIDIA Collective Communications Library)是英伟达(NVIDIA)开发的一个专为多GPU和多节点通信优化的库,主要用于加速分布式深度学习训练和科学计算中的集体通信操作。,支持以下关键操作:
- All-Reduce:将多个GPU上的数据汇总(如梯度求和)并分发回所有GPU。
- Broadcast:将单个GPU的数据广播到其他所有GPU。
- All-Gather:将每个GPU的数据收集到所有GPU。
- Reduce-Scatter:将数据汇总后按块分发给各个GPU。
- Point-to-Point:单GPU到单GPU的直接数据传输。
为了有效利用IB和NVLink的不同带宽,DeepSeek将每个Token(词元)的分发限制为最多4 个节点,从而减少IB流量限制的影响。 对于每个Token,在做节点间路由决策时,先通过IB传输到目标节点上具有相同节点内索引的GPU;到达目标节点后,再通过NVLink 转发到托管目标专家的特定GPU。通过这种方式,通过IB和NVLink的通信重叠,平均每个Token可以在每个节点选择3.2名专家,而不会产生额外的NVLink开销。
实际算法中,V3/R1只通过路由选择了8个专家,但在保持相同通信成本的情况下,该架构可以扩展到最多13 个专家(4 个节点x3.2个专家/节点)。
DeepSeek还采用了warp(线程束)专用化技术,将20个SM划分为10个通信信道。
1)在调度过程中,(a)IB 发送、(b)IB 到NVLink 转发、(c) NVLink 接收由相应的warp处理。分配给每个通信任务的warp数量会根据所有SM的实际工作负载动态调整。
2)在合并过程中,(a) NVLink 发送、(b)NVLink到IB的转发和累积、(c)IB接收和累积也由动态调整的warp处理。
3)dispatching 和combining kernel都与计算流重叠,采用定制的PTX(Parallel Thread Execution)指令以自动调整通信块大小,减少了对L2缓存的使用和对其他 SM 的干扰。
下面我们沿着README.md里的例子,分析一下DeepEP究竟是如何实现的。
https://github.com/deepseek-ai/DeepEP
DeepEP主要实现了EP通信过程(dispatch分发+combine聚合),涉及两种实现模式:
- Normal kernel模式:Nvlink+RDMA混合模式,用于训练/推理prefill阶段
- Low-latency kernel模式:IBGDA+纯RDMA模式,用于推理decode阶段
性能测试结果:
核心概念
1,Dispatch(分发):
- 前向传播:将输入数据(x)根据topk_idx和topk_weights分配到不同的专家(可能位于不同GPU/进程)。
- 反向传播:通过combine操作合并来自各节点的梯度(反向传播的Dispatch对应正向Combine的逆过程)。
2,Combine(合并):
- 前向传播:聚合各专家处理后的结果,生成最终输出。
- 反向传播:通过dispatch操作将梯度分发回各节点(反向传播的Combine对应正向Dispatch的逆过程)。
代码示例:
参考:
https://www.cnblogs.com/CQzhangyu/p/18741625