[转]Megatron-LM源码系列(八): Context Parallel并行
原文链接: Megatron-LM源码系列(八): Context Parallel并行
Context Parallel并行(CP)与sequence并行(SP)相比,皇冠皇冠核心差异在于SP只针对Layernorm和Dropout输出的源码源码activation在sequence维度进行切分,而CP则进一步扩展,信用对所有input输入和所有输出activation在sequence维度上进行切分,出售图书座位编程源码形成更高效的皇冠皇冠并行处理策略。除了Attention模块外,源码源码其他如Layernorm、信用Dropout等模块在CP并行中无需任何修改,出售因为它们在处理过程中没有涉及多token间的皇冠皇冠交互。
Attention模块之所以特殊,源码源码是信用地区溯源码因为在计算过程中,每个token的出售查询(query)需要与同一sequence中其他token的键(key)和值(value)进行交互计算,存在内在依赖性。皇冠皇冠因此,源码源码在进行CP并行时,信用计算开始前需要通过allgather通信手段获取所有token的猎手专注源码KV向量,反向计算时则通过reduce_scatter分发gradient梯度。
为了降低显存使用,前向计算阶段每个GPU仅保存部分KV块,反向阶段则通过allgather通信获取全部KV数据。这些通信操作在特定的xstream源码分析rank位置(相同TP组内)进行,底层通过send和recv等操作实现allgather和reduce_scatter。
以TP2-CP2的transformer网络为例,CP并行的通信操作在Attention之前执行,其他则为TP通信。AG表示allgather,f统计源码RS表示reduce_scatter,AG/RS表示前向allgather反向reduce_scatter,RS/AG表示前向reduce_scatter反向allgather。
TP2对应为[GPU0, GPU1], [GPU2, GPU3],CP2指的就是TP组相同位置的rank号,即[GPU0, GPU2], [GPU1, GPU3]。CP并行类似于Ring Attention,但提供了OSS与FlashAttention版本,并去除了冗余的low-triangle causal masking计算。
LLM常因序列长度过长而导致显存耗尽(OOM)。传统解决方法包括重计算或扩大TP(tensor parallel)大小,但各自存在计算代价增加或线性fc计算时间减少与通信难以掩盖的问题。CP则能更高效地解决这一问题,每个GPU处理一部分序列,同时减少CP倍的通信和计算量,同时保持TP不变,使得activation量也减少CP倍。性能优化结果展示于图表中,用户可通过指定--context-parallel-size在Megatron中实现CP。
具体源码实现以Megatron-Core 0.5.0版本为例进行说明。
参考资料:[链接]2024-12-28 23:25
2024-12-28 23:20
2024-12-28 22:41
2024-12-28 21:51
2024-12-28 21:43