ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MindSpeed LLM长序列并行指南:Ring Attention与Ulysses上下文并行详解

MindSpeed LLM长序列并行指南:Ring Attention与Ulysses上下文并行详解 MindSpeed LLM长序列并行指南Ring Attention与Ulysses上下文并行详解【免费下载链接】MindSpeed-LLM昇腾LLM分布式训练框架项目地址: https://gitcode.com/Ascend/MindSpeed-LLMMindSpeed LLM是昇腾 NPU 上的 LLM 分布式训练框架其上下文并行Context ParallelCP能力专门解决长序列训练难题通过Ring Attention与Ulysses两大算法把超长序列切分到多卡并行计算让 128K 甚至更长的序列训练变得可行。本文面向新手讲清两种长序列并行方案的原理差异、核心参数与最佳实践。为什么长序列训练这么难随着会话式 AI、长文档摘要、代码库理解等场景普及训练序列长度从 4K 一路飙升到 128K 以上。麻烦在于显存爆炸自注意力矩阵随序列长度 S 呈O(S²)增长单卡根本放不下传统并行不覆盖序列维数据并行、张量并行、流水线并行都不切分序列维度S 变大时单步显存依然失控。因此需要一种沿序列维度切分的并行方式这就是上下文并行CP要解决的问题。两大上下文并行算法Ring Attention vs UlyssesMindSpeed LLM 提供多种 CP 算法其中最具代表性的是megatron_cp_algoRing Attention和ulysses_cp_algoUlysses通过参数--context-parallel-algo一键切换。 Ring Attention环状分块 KV 通信Ring Attention 借鉴分块 Softmax 原理把序列切成 N 块每块由一个 CP rank 持有本地 QKV。计算时各 rank 先做本地 attention再通过环状Ring通信把 KV 块逐段传给下一个 rank边传边算循环一轮后得到全局完整结果。核心特点通信与计算可互相掩盖KV 块在环上传递的同时本地 attention 继续算通信开销几乎被藏掉无需数据拼接全程分块计算支持的理论序列长度近乎无限无头维整除约束不要求 head_size 能被 cp_size 整除适配性广要求FlashAttention 必须开启且序列分块足够长才能掩盖好通信。核心实现在 AttentionWithCp其中前向过程会构建内外两个 Ring P2P 通信结构按 rank 顺序逐块取 KV 并更新 softmax 归一化因子。参数注册与合法性校验集中在 context_parallel_feature.py例如 CP 不支持 ALiBi 位置编码、推理 KV Cache 等组合会被直接拦截。 UlyssesAll-to-All 序列-头转置Ulysses 的思路完全不同每个 rank 持有完整序列但只负责 1/N 的注意力头。每层 attention 前后各做一次all-to-all通信把切序列的布局转成切头的布局来计算算完再转回来。特点通信量与序列长度解耦CP 较小时经验上 CP ≤ 4通信占比低吞吐更高对注意力头数量有整除要求头数需能被 cp_size 整除框架内置--kv-head-repeat-before-uly-alltoall开关支持 GQA/MQA 模型在 all-to-all 前扩展 KV 头见 ulysses_context_parallel.py。一图看懂两种方案怎么选维度Ring Attentionmegatron_cp_algoUlyssesulysses_cp_algo切分方式每 rank 持有序列分块环传 KV每 rank 持有全序列切注意力头通信模式P2P 环状逐块传递可重叠计算每层两次 all-to-all头数整除要求无需 head 数被 cp_size 整除适合场景CP 较大、超长序列32K/128KCP 较小≤4、序列中等偏长显存/延迟特点通信延迟略高但可掩盖CP 小时延迟更低、吞吐更高官方长序列微调文档中也有实测佐证Llama2-7B、32K 序列、TP2/CP4 配置下Ulysses 吞吐 192.3 TFLOP/s/GPU高于 Ring 的 102.7 TFLOP/s/GPU详见 fine-tuning-with-context-parallel.md。快速上手关键参数与配置方法一键开启上下文并行步骤设置并行规模与算法--context-parallel-sizeCP 卡数--context-parallel-algo对齐序列长度--seq-length必须能被 cp_size 整除选择掩码类型训练建议--attention-mask-type causal开启通信优化--use-cp-send-recv-overlap让 send/recv 重叠。最快配置方法参数速查表参数说明--context-parallel-sizeCP 并行卡数默认 1--context-parallel-algo可选megatron_cp_algoRing/ulysses_cp_algo/hybrid_cp_algo/kvallgather_cp_algo等--seq-length序列总长度需被 cp_size 整除--attention-mask-typecausal倒三角推荐或general全量--use-cp-send-recv-overlap建议开启掩盖 CP 通信延迟--cp-window-sizeRing 窗口大小默认 1典型超长序列训练配置示例--seq-length 131072 \ --context-parallel-size 8 \ --context-parallel-algo megatron_cp_algo \ --attention-mask-type causal \ --use-cp-send-recv-overlap实战避坑让长序列并行跑出最佳性能分块长度别太小Ring Attention 的通信掩盖依赖足够长的计算块。经验法则是seq-length / context-parallel-size 8K否则 8K 以下短分块会导致通信反而慢于计算得不偿失。Mask 选 causalGPT 类模型训练场景默认用causal性能与显存都优于general全量计算。FlashAttention 是硬依赖开启 CP 时必须同时开启 Flash Attention 特性否则功能不可用。组合约束要留意CP 与 ALiBi 位置编码、KV Cache、超长滑窗等互斥DeepSeek V4 类模型需使用kvallgather_cp_algo或deepseek_v4_cp_algo这些都会在参数校验阶段给出明确报错见 validate_args。打包微调场景多样本 pack 训练时配合--reset-position-ids与--reset-attention-mask让 attention mask 按 EOD 分句生成锯齿状掩码与 CP 分块计算正确配合方法详见 长序列微调文档。相关代码与文档在哪里官方文档Ring Attention 原理与使用docs/zh/pytorch/features/mcore/ring-attention-context-parallel.md长序列 CP 微调指南docs/zh/pytorch/features/mcore/fine-tuning-with-context-parallel.mdCP 特性入口与参数定义mindspeed_llm/features_manager/context_parallel/context_parallel_feature.pyRing Attention 核心算子mindspeed_llm/core/context_parallel/ring_context_parallel.pyCP 数据切批工具mindspeed_llm/core/context_parallel/get_batch_utils.pyUlysses 特性封装mindspeed_llm/features_manager/context_parallel/ulysses_context_parallel.py总结MindSpeed LLM 的上下文并行让长序列训练不再是显存噩梦Ring Attention以环状 KV 通信 计算掩盖取胜适合 CP 较大、序列超长的大规模场景Ulysses以 all-to-all 转置取胜CP 较小时延迟更低、吞吐更高。记住三条经验——序列分块大于 8K、Mask 用 causal、FlashAttention 必开就能在昇腾集群上稳定跑通 128K 级别的长序列训练。【免费下载链接】MindSpeed-LLM昇腾LLM分布式训练框架项目地址: https://gitcode.com/Ascend/MindSpeed-LLM创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表