seq parallel doc

This commit is contained in:
wangbluo 2024-09-27 15:49:03 +08:00
parent f4daf04270
commit 10232bba82

View File

@ -150,6 +150,13 @@ for step, batch in enumerate(tqdm(dataloader, desc="Step", disable=not dist.get_
### 结论
在上述序列并行方法中ring attention对head number没有要求可训练超长文本但是由于细分了计算计算性能会有所下降。TP+SP DeepSpeed-Ulysses对于head number有要求需要可被sp group size 整除。这些序列并行都可与其他高性能注意力兼容如flash attention。sp可与Gemini一起使用训练超大规模模型也可以与TPPPDP等组成4D并行。
在上述序列并行方法中ring attn和Ulysses各有优劣我们需要根据情况来选择合适的序列并行方法
通信方面Ulysses通信量优于ring attnUlysess主要包含三次All2All通信量复杂度为3*O(Nxd),而ring attn的通信会随着序列长度增长而平方增长。不过另一方面all2all对底层硬件的要求也会更高。
内存占用:二者类似。
模型结构泛化ring attn优于Ulysses。Ulysses模型泛化性一般对于head number有要求需要满足:head number // (tp group size * sp group size)而ring attn没有此限制。
由于使用简单对Attention计算不侵入修改Ulysses目前是序列并行的主流。这些序列并行都可与其他高性能注意力兼容如flash attention还可以与ZeRO、TP、PP、DP等多种并行训练策略混合使用。
总的来说对于初学者、中小型企业客户我们更推荐您使用all_to_all经过测试在双机16卡的情况下使用```--tp 2 --sp 8 --sp_mode all_to_all```的启动参数可以很轻松训练128k长度的序列同时他的性能表现也是所有序列并行模式中最好的。但如果追求极致性能优化或者使用较多机器训练长文本可以考虑使用ring attention模式的序列并行。
<!-- doc-test-command: torchrun --standalone --nproc_per_node=4 sequence_parallelism.py -->