机器之心报道
编辑:Panda
昨天,DeepSeek 在 GitHub 上线了一个新的代码库:LPLB。
项目地址:https://github.com/deepseek-ai/LPLB
没有发推文,也没有公众号更新,少有的几个技术博主分享的推文也关注不多。截至目前,该项目的 star 数量也还没超过 200。
但仔细一看,这个项目却似乎并不简单,值得更多关注。X 网友 gm8xx8 评论认为这表明 DeepSeek 正在解决正确性和吞吐量瓶颈问题,为下一版模型发布做准备。
项目简介
LPLB,全称 Linear-Programming-Based Load Balancer,即基于线性规划的负载均衡器。
顾名思义,LPLB 是一个并行负载均衡器,它利用线性规划(Linear Programming)算法来优化 MoE(混合专家)模型中的专家并行工作负载分配。
具体来说,LPLB 通过以下三个步骤实现动态负载均衡:
更具体而言,LPLB 的专家重排序过程由 EPLB 协助完成。而实时工作负载统计信息可以由用户提供、通过 torch.distributed 收集,或直接从 Deep-EP 缓冲区的内部通信器中获取。至于求解器,则使用了内置的 LP(线性规划)求解器,其实现了单 SM(Streaming Multiprocessor)内点法(IPM),并利用了 NVIDIA 的 cuSolverDx 和 cuBLASDx 库进行高效的线性代数运算。
如此一来,MoE 负载不均的问题可以得到有效解决,即在 MoE 模型中,某些「专家」可能比其他专家接收到更多的 Token,导致某些 GPU 忙碌而其他 GPU 空闲。
X 网友 big goose 指出这与英伟达的用于调度 SM (Streaming Multiprocessor,是英伟达 GPU 的核心计算单元) 的方案非常相似,只是将抽象提升到了 pipeline 层级。LPLB 强调「单 SM」,意味着它的求解过程非常轻量化,不会占用过多计算资源。
不过需要指出,LPLB 目前应该还未被用于生产流程。DeepSeek 在 Readme 文件中表示:「LPLB 目前处于早期研究阶段,性能改进情况仍在评估中。」
LPLB 的工作原理
LPLB 是在 EPLB(专家并行负载均衡器)基础上的扩展,旨在解决 MoE 训练中的动态负载不均衡问题。
EPLB vs. LPLB
核心机制
实现流程
局限性
尽管 LPLB 提供了动态优化,但目前仍存在一些局限:
典型拓扑结构
LPLB 允许通过修改 r2o 矩阵来定义专家副本的分布方式。以下是几种典型的拓扑:
结语
DeepSeek 开源的这个 LPLB 库,本质上是在试图解决大模型训练中「木桶效应」的问题,即训练速度往往取决于最慢(负载最重)的那个 GPU。
它的创新点在于引入了线性规划这一数学工具来实时计算最优分配,并利用底层的 NVSHMEM 技术来打破通信瓶颈。对于正在研究 MoE 架构训练加速的开发者来说,这是一个非常有价值的参考实现。
具体的安装和测试指南请访问原代码库。