
同学
在DSA(特定架构)上,实现pingpong buffer并不难,甚至能够进行3 buffer或者4 buffer的流水操作。就我们实现的版本而言,2 buffer在某些形状(shape)下,矩阵利用率能达到90%以上,最低可能也有75%的利用率,mask版本则最低约为60%的利用率。GPU需要在warp(线程束)之间切换,并且要配合硬件的动态寄存器分配能力,而DSA是在SRAM(静态随机存取存储器)中进行多buffer数据交互,一般来说,其核内的SRAM比GPU的大,比如昇腾910的是1.5M。另外,DSA的计算单元执行是异步非阻塞的,虽然在很多DSA架构上同步可能需要手动控制,比较麻烦,但考虑到FA(可能是某个功能或者模块)这么关键,人工编写代码实现一下也是可以的。
不过,从DeepMind对llm各部分flops的统计来看,softmax最多也就占整个网络的0.6%,attention占比也只有几个点,大部分还是在mlp那里。论文虽说能加速1.5倍或者2倍,但算到整个网络的百分比,提升的也没多少。想问下真正做llm训练的同学,实际情况是这样吗?