tbo-sbo

tbo-sbo

tbo 就是 two batch overlap,最开始由deepseek提出,主要的目标是基于deepep的实现思路,优化计算和通信的overlap

在整体的计算流程中,有 attention -> alltoall -> moe -> alltoall -> ...,我们可以构造两个batch,实现一个做矩阵计算,另一个做alltoall通信,从而overlap

tbo是给decode准备的,主要原因是decode是带宽瓶颈,计算耗时短,两个batch可以相互干扰影响低

不过实际蚂蚁在h20上部署deepseek时发现了tbo在高并发下反而会更慢,因为h20算力太低,高并发会延迟爆炸不满足slo

因此也是联合deepseek,sglang提出了sbo:

两点优化:

  1. 计算shared experts时进行dispatch通信
  2. 计算down的时候就边计算边发送,按照block_m粒度进行处理,一个块好了就直接发送

sbo的pr链接:

NOTE

对于tbo和sbo的实现和可用性

  • tbo是官方deepep版本对lowlatency支持,使用双buffer进行支持,对于prefill官方deepep没有支持,sglang是自己进行了两个batch切分,实例化了两个deepep对象,来实现tbo
  • sbo在deepep用的特定的蚂蚁的优化分支antgroup-opt,这个优化暂时还没有合入到主分支,虽然当前sglang环境变量都始终开了sbo,但是要特定的版本才能真正有用,不然也会退化到不用sbo