导言
all-to-all 要让每个参与者给其他参与者发送数据,为什么还要分 group?分组可以控制同时争用有限资源的请求,让通信更接近硬件能稳定处理的速度;但它是否能“防止阻塞”,取决于分的是什么,以及阻塞发生在哪一层。本文从四个 rank 的调度例子出发,解释限流、错峰、接收许可和拓扑分层,再区分 NCCL group 的并发推进语义。目标是看懂通信实现的设计动机,并知道怎样验证收益;文中的容量与规模例子均为推导,没有集群性能实测。
导言
all-to-all 要让每个参与者给其他参与者发送数据,为什么还要分 group?分组可以控制同时争用有限资源的请求,让通信更接近硬件能稳定处理的速度;但它是否能“防止阻塞”,取决于分的是什么,以及阻塞发生在哪一层。本文从四个 rank 的调度例子出发,解释限流、错峰、接收许可和拓扑分层,再区分 NCCL group 的并发推进语义。目标是看懂通信实现的设计动机,并知道怎样验证收益;文中的容量与规模例子均为推导,没有集群性能实测。
导言
先理解设计解决什么问题,再看分组公式。 从两张卡直接发送开始,观察参与者增多后接收方的竞争,尝试分批、错开目的地与接收方许可,最后回到 MoonEP 的 64P group。交互容量是教学假设,源码映射是固定版本事实;本文不把模拟结果作为性能测量。
Ascend DeepEP MoE Dispatch Optimization
导言
我面对的是一个很具体、也很容易被“理论带宽”带偏的问题:Ascend DeepEP 的 MoE dispatch 吞吐只有硬件理论值的一半,128P 跨机场景尤其明显,而且系统里还有两层路由。麻烦在于,我既不熟悉 MoE dispatch 的接口与数据协议,也没写过典型 URMA/UDMA 算子,更不知道应该在哪里计时、打印和判断瓶颈。
这篇文章不从零散优化技巧出发,而是沿一条 token 的真实旅程,依次读懂 Python 接口、Host 侧 workspace/notify、Device 侧 AIV/UDMA/QP、目标 rank 的接收布局与反向 combine;再把 ascend_deepep、海思 hierarchy 和 MoonEP 的 peer 调度放进同一张拓扑图。最终目标不是立即猜出一个“神奇参数”,而是建立一条可证伪的优化路线:先区分数据面、控制面和同步面,再判断 128P 下真正撞到的是字节带宽、WQE 提交率、P 维路由扫描、拓扑扇出还是最慢 rank 的尾延迟。