DeepSeek开源周,第四弹, 一次性开源3个项目!

大模型机器学习数据库

今天连续开源3个项目,地主家的存货真多~

picture.image

DualPipe

项目地址:https://github.com/deepseek-ai/DualPipe/blob/main/README.md

DualPipe项目。 是DeepSeek-v3中提及的一种分布式大模型训练测u额。

常规的流水线并行是一种常见的加速大规模模型的训练的方式,在分布式训练场景下,把模型分割成多个部分,分别在不同的设备上运行。而DualPipe的特殊之处在于它是“双向”的,也就是说可能同时处理前向传播和反向传播,或者在两个方向上并行执行任务。

流水线并行中常见的问题,就是当流水线中的某些阶段因为通信或者计算等待而产生空闲时间(气泡),这些气泡会降低整个系统的效率。DualPipe 支持双向(前向与后向)同时运行所以在处理微批次数据时,前向和后向的计算能够相互穿插,避免了传统流水线并行中的大量等待时间。

picture.image

DualPipe 与其他常见流水线并行方法在流水线气泡、参数内存占用以及激活内存占用方面的对比:

picture.image

项目的实现不是完全开箱即用的,需要根据具体任务进行调整 ,比如不同模型结构、不同数据流等都需要重新实现 overlapped_forward_backward 这个核心方法。

EPLB

项目地址:https://github.com/deepseek-ai/EPLB/blob/main/README.md

专家并行负载均衡的算法实现。

专家并行(EP)训练技巧,不同专家被分配到不同的 GPU 上,但因为负载不均衡(比如某些专家的计算量特别大),GPU 之间的负载也会不均衡。

解决这个问题的方法之一是使用冗余专家(redundant experts)的策略,然后通过某些算法将这些冗余专家分配到不同的 GPU 上,从而实现负载均衡。

还有一个额外的优化点,就是尽量把同一组的专家放到同一个节点上,以减少节点间的通信开销。“group-limited expert routing” 。

两种负载均衡策略:分层负载均衡(Hierarchical Load Balancing)和全局负载均衡(Global Load Balancing)。

  • 分层负载均衡适用于节点数量能整除专家组数量的情况,它的逻辑是先在节点层面实现负载均衡,然后再在节点内部的 GPU 上分配专家。
  • 全局负载均衡则不管专家分组,直接全局分配冗余的专家到所有可用的 GPU 上。

这两种策略分别适用于预填充阶段和解码阶段。

picture.image

profile-data

项目地址:https://github.com/deepseek-ai/profile-data

profile-data项目,公开分享他们的训练和推理框架的性能分析数据(profiling data),帮助大家更好地理解通信-计算重叠策略和底层实现细节。

性能分析数据是通过PyTorch Profiler捕获的,下载后可以通过Chrome或Edge浏览器的chrome://tracing或edge://tracing页面进行可视化。

项目包含训练-推理2大块的数据

训练(Training)

picture.image

  • 展示了DualPipe框架中单个前向和后向计算块的重叠策略。
  • 每个块包含4个MoE(Mixture of Experts)层。
  • 并行配置与DeepSeek-V3预训练设置一致:EP64(Expert Parallelism)、TP1(Tensor Parallelism),序列长度为4K。
  • 为了简化,性能分析中未包含PP(Pipeline Parallelism)通信。

推理(Inference)

预填充(Prefilling)

picture.image

  • 预填充阶段的性能分析采用EP32和TP1(与DeepSeek V3/R1的实际在线部署一致),提示长度为4K,每个GPU的批量大小为16K tokens。
  • 在预填充阶段,使用两个微批量(micro-batches)来重叠计算和all-to-all通信,同时确保两个微批量之间的注意力计算负载平衡。

解码(Decoding)

picture.image

  • 解码阶段的性能分析采用EP128、TP1,提示长度为4K(与实际在线部署配置非常接近),每个GPU的批量大小为128个请求。

  • 与预填充类似,解码也利用两个微批量来重叠计算和全对全通信。

  • 与预填充不同的是,解码阶段的all-to-all通信不占用GPU SM(Streaming Multiprocessor):在RDMA(Remote Direct Memory Access)消息发出后,所有GPU SM被释放,系统在计算完成后等待全对全通信完成。

  • 关于all-to-all实现的更多信息,可以参考前2天的项目https://github.com/deepseek-ai/DeepEP

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
大规模高性能计算集群优化实践
随着机器学习的发展,数据量和训练模型都有越来越大的趋势,这对基础设施有了更高的要求,包括硬件、网络架构等。本次分享主要介绍火山引擎支撑大规模高性能计算集群的架构和优化实践。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论