Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comparing Ulysses and Ring with torch profiler #40

Closed
feifeibear opened this issue Apr 15, 2024 · 4 comments
Closed

Comparing Ulysses and Ring with torch profiler #40

feifeibear opened this issue Apr 15, 2024 · 4 comments

Comments

@feifeibear
Copy link
Owner

feifeibear commented Apr 15, 2024

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 feifeibear changed the title Optimize Ulysses AlltoAll Comparing Ulysses and Ring with torch profiler Apr 15, 2024
@nullnonenilNULL
Copy link

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

@feifeibear
Copy link
Owner Author

feifeibear commented Apr 20, 2024

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

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

@nullnonenilNULL
Copy link

结合上面分析和 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
Copy link
Owner Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants