feifeibear / long-context-attention

USP: Unified (a.k.a. Hybrid, 2D) Sequence Parallel Attention for Long Context Transformers Model Training and Inference
Apache License 2.0
350 stars 24 forks source link

Comparing Ulysses and Ring with torch profiler #40

Closed feifeibear closed 5 months ago

feifeibear commented 6 months ago

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

image image

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

image 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.

nullnonenilNULL commented 6 months ago

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

feifeibear commented 6 months ago

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

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

nullnonenilNULL commented 6 months ago

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

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

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

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

feifeibear commented 5 months ago

结合上面分析和 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里的技术报告链接。