☰
MindSpeed LLM长序列并行指南:Ring Attention与Ulysses上下文并行详解
2026/9/26 11:07:41 网站建设 项目流程

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

【免费下载链接】MindSpeed-LLM昇腾LLM分布式训练框架项目地址: https://gitcode.com/Ascend/MindSpeed-LLM

MindSpeed LLM是昇腾 NPU 上的 LLM 分布式训练框架,其上下文并行(Context Parallel,CP)能力专门解决长序列训练难题:通过Ring Attention与Ulysses两大算法,把超长序列切分到多卡并行计算,让 128K 甚至更长的序列训练变得可行。本文面向新手,讲清两种长序列并行方案的原理差异、核心参数与最佳实践。

为什么长序列训练这么难?

随着会话式 AI、长文档摘要、代码库理解等场景普及,训练序列长度从 4K 一路飙升到 128K 以上。麻烦在于:

  • 显存爆炸:自注意力矩阵随序列长度 S 呈O(S²)增长,单卡根本放不下;
  • 传统并行不覆盖序列维:数据并行、张量并行、流水线并行都不切分序列维度,S 变大时单步显存依然失控。

因此需要一种沿序列维度切分的并行方式,这就是上下文并行(CP)要解决的问题。

两大上下文并行算法:Ring Attention vs Ulysses

MindSpeed LLM 提供多种 CP 算法,其中最具代表性的是megatron_cp_algo(Ring Attention)和ulysses_cp_algo(Ulysses),通过参数--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 等组合会被直接拦截。

🚀 Ulysses:All-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 Attention(megatron_cp_algo)Ulysses(ulysses_cp_algo)
切分方式每 rank 持有序列分块,环传 KV每 rank 持有全序列,切注意力头
通信模式P2P 环状逐块传递(可重叠计算)每层两次 all-to-all
头数整除要求无需 head 数被 cp_size 整除
适合场景CP 较大、超长序列(32K/128K+)CP 较小(≤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。

快速上手:关键参数与配置方法

一键开启上下文并行步骤

  1. 设置并行规模与算法:--context-parallel-size(CP 卡数)+--context-parallel-algo;
  2. 对齐序列长度:--seq-length必须能被 cp_size 整除;
  3. 选择掩码类型:训练建议--attention-mask-type causal;
  4. 开启通信优化:--use-cp-send-recv-overlap让 send/recv 重叠。

最快配置方法:参数速查表

参数说明
--context-parallel-sizeCP 并行卡数,默认 1
--context-parallel-algo可选megatron_cp_algo(Ring)/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 选 causal:GPT 类模型训练场景默认用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.md
  • CP 特性入口与参数定义:mindspeed_llm/features_manager/context_parallel/context_parallel_feature.py
  • Ring Attention 核心算子:mindspeed_llm/core/context_parallel/ring_context_parallel.py
  • CP 数据切批工具:mindspeed_llm/core/context_parallel/get_batch_utils.py
  • Ulysses 特性封装: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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询