long-context-attention icon indicating copy to clipboard operation
long-context-attention copied to clipboard

Comparing Ulysses and Ring with torch profiler

Open feifeibear opened this issue 1 year ago • 4 comments

FWD_FLAG="--fwd_only" NHEADS=8 HEAD_SIZE=128 GROUP_NUM=1 BS=2 ulysses degree=8

  • SEQLEN=16384
image
  • SEQLEN=8192
image

Conclusion: Long Context, Less Comm/Computation Ratio. Because computation is O(N^2), while communication is O(N).

  • Ulysses Degree=8
image
  • Ring Degree=8
image

Conclusion: Ulysses is more efficient in Communication and Computation, as you can see in four iterations ring-attn elapse is over 100ms, while Ulysses is about 60ms.

feifeibear avatar Apr 15 '24 07:04 feifeibear

结合上面分析和 benchmark 数据,这里怎么理解单用 ulysses 比混用 ulysses 和 ring 性能差?原因是单用 ulysses 做完 alltoall,会把 h 切的比较小,影响了 gemm 计算的密度?

nullnonenilNULL avatar Apr 19 '24 11:04 nullnonenilNULL

结合上面分析和 benchmark 数据,这里怎么理解单用 ulysses 比混用 ulysses 和 ring 性能差?原因是单用 ulysses 做完 alltoall,会把 h 切的比较小,影响了 gemm 计算的密度?

你没正确理解这个图。它想说单机八卡nvlink环境,Ring-Attention性能不如Ulysses。 ulysses比ring整体性能好很多。因为ring把完整attention计算切分了,导致整体计算时间变长。Ulysess增加额外all2all但是时间比例很小。二者比较下来ring就有劣势。

feifeibear avatar Apr 20 '24 00:04 feifeibear

结合上面分析和 benchmark 数据,这里怎么理解单用 ulysses 比混用 ulysses 和 ring 性能差?原因是单用 ulysses 做完 alltoall,会把 h 切的比较小,影响了 gemm 计算的密度?

你没正确理解这个图。它想说单机八卡nvlink环境,Ring-Attention性能不如Ulysses。 ulysses比ring整体性能好很多。因为ring把完整attention计算切分了,导致整体计算时间变长。Ulysess增加额外all2all但是时间比例很小。二者比较下来ring就有劣势。

嗯嗯,感谢你的工作和回复。图里表达的逻辑,我没有疑问哈; image

结合您这里的分析和 readme中的吞吐数据,我主要是在理解,假设 ulysses 切分不受限情况下,为什么单用 ulysses 比混用两种方案性能低,为什么不是 ulysses 性能最优;

nullnonenilNULL avatar Apr 22 '24 04:04 nullnonenilNULL

结合上面分析和 benchmark 数据,这里怎么理解单用 ulysses 比混用 ulysses 和 ring 性能差?原因是单用 ulysses 做完 alltoall,会把 h 切的比较小,影响了 gemm 计算的密度?

你没正确理解这个图。它想说单机八卡nvlink环境,Ring-Attention性能不如Ulysses。 ulysses比ring整体性能好很多。因为ring把完整attention计算切分了,导致整体计算时间变长。Ulysess增加额外all2all但是时间比例很小。二者比较下来ring就有劣势。

嗯嗯,感谢你的工作和回复。图里表达的逻辑,我没有疑问哈; image

结合您这里的分析和 readme中的吞吐数据,我主要是在理解,假设 ulysses 切分不受限情况下,为什么单用 ulysses 比混用两种方案性能低,为什么不是 ulysses 性能最优;

ulysses在nvlink单个节点通常最有。因为nvlink是同构网络,点对点带宽都一样。如果换成异构网络,比如pcie或者多机多卡,ulysses就不是最优了。详细数据见readme里的技术报告链接。

feifeibear avatar May 19 '24 03:05 feifeibear