Closed feifeibear closed 5 months ago
结合上面分析和 benchmark 数据,这里怎么理解单用 ulysses 比混用 ulysses 和 ring 性能差?原因是单用 ulysses 做完 alltoall,会把 h 切的比较小,影响了 gemm 计算的密度?
结合上面分析和 benchmark 数据,这里怎么理解单用 ulysses 比混用 ulysses 和 ring 性能差?原因是单用 ulysses 做完 alltoall,会把 h 切的比较小,影响了 gemm 计算的密度?
你没正确理解这个图。它想说单机八卡nvlink环境,Ring-Attention性能不如Ulysses。 ulysses比ring整体性能好很多。因为ring把完整attention计算切分了,导致整体计算时间变长。Ulysess增加额外all2all但是时间比例很小。二者比较下来ring就有劣势。
结合上面分析和 benchmark 数据,这里怎么理解单用 ulysses 比混用 ulysses 和 ring 性能差?原因是单用 ulysses 做完 alltoall,会把 h 切的比较小,影响了 gemm 计算的密度?
你没正确理解这个图。它想说单机八卡nvlink环境,Ring-Attention性能不如Ulysses。 ulysses比ring整体性能好很多。因为ring把完整attention计算切分了,导致整体计算时间变长。Ulysess增加额外all2all但是时间比例很小。二者比较下来ring就有劣势。
嗯嗯,感谢你的工作和回复。图里表达的逻辑,我没有疑问哈;
结合您这里的分析和 readme中的吞吐数据,我主要是在理解,假设 ulysses 切分不受限情况下,为什么单用 ulysses 比混用两种方案性能低,为什么不是 ulysses 性能最优;
结合上面分析和 benchmark 数据,这里怎么理解单用 ulysses 比混用 ulysses 和 ring 性能差?原因是单用 ulysses 做完 alltoall,会把 h 切的比较小,影响了 gemm 计算的密度?
你没正确理解这个图。它想说单机八卡nvlink环境,Ring-Attention性能不如Ulysses。 ulysses比ring整体性能好很多。因为ring把完整attention计算切分了,导致整体计算时间变长。Ulysess增加额外all2all但是时间比例很小。二者比较下来ring就有劣势。
嗯嗯,感谢你的工作和回复。图里表达的逻辑,我没有疑问哈;
结合您这里的分析和 readme中的吞吐数据,我主要是在理解,假设 ulysses 切分不受限情况下,为什么单用 ulysses 比混用两种方案性能低,为什么不是 ulysses 性能最优;
ulysses在nvlink单个节点通常最有。因为nvlink是同构网络,点对点带宽都一样。如果换成异构网络,比如pcie或者多机多卡,ulysses就不是最优了。详细数据见readme里的技术报告链接。
FWD_FLAG="--fwd_only" NHEADS=8 HEAD_SIZE=128 GROUP_NUM=1 BS=2 ulysses degree=8
Conclusion: Long Context, Less Comm/Computation Ratio. Because computation is O(N^2), while communication is O(N).
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.