跳到主内容
快讯直播
AI智模界
AI 词典

序列并行与 Ring Attention:长上下文怎么拆到多卡

一句话定义:序列并行(Sequence Parallelism)把一条超长序列沿长度方向切成几段,每张 GPU 只存一段;Ring Attention 让这些卡围成一圈轮流传阅 K/V 块,边传边算注意力,把可处理的上下文拉到单卡装不下的规模。

打个比方:单卡跑 100 万 token 的序列,像让一个人读完整套百科全书再回答跨卷的问题,书桌根本摊不开。更麻烦的是,注意力机制要求每个 token(词元)都和所有 token 算相关度,所以就算把书分给 8 个人,每人也得看到别人的内容,否则答不出"第 1 卷和第 7 卷有什么关系"。

Ring Attention 的做法是让 8 张卡围成一个环。每张卡先算本地那一段的注意力,再把缓存好的 K/V(键/值)块传给下一位邻居,同时从另一位邻居手里接过别人的 K/V,继续算、继续传。转完一圈,每张卡都见过全部 K/V,结果和单卡算出来的一致。它依赖 AI 词典:FlashAttention">FlashAttention 的在线归一化(online softmax):不把所有分数存下来再统一归一化,而是边算边滚动更新最大值与累加和,中间结果就不会撑爆显存。通信还能和计算重叠——传的时候顺手算上一块,环才转得动。

和相邻概念怎么区分?数据并行(DP)切的是 batch,张量并行(TP)切的是权重矩阵和隐藏维度,流水并行(PP)切的是网络层数,序列并行切的是序列长度这一维,几种方式可以叠加使用。也有人叫它上下文并行(Context Parallelism),思路基本一致,只是更强调长上下文场景。

并行方式切什么主要通信
数据并行 DPbatch梯度 all-reduce
张量并行 TP权重与隐藏维每层 all-reduce
流水并行 PP网络层层间激活传递
序列并行 SP序列长度K/V 块交换

实践中有两个坑值得知道。一是负载均衡:因果注意力下,靠前的 token 只能看历史、算得少,靠后的算得多,所以常用交错切分(把序列首尾配对分给同一张卡)来摊平工作量。二是通信量随卡数增长,环上的步数等于卡数,卡越多延迟越明显,工程上会用更复杂的通信拓扑或重叠策略来缓解。

对从业者:百万级上下文的训练和推理,基本都要靠这套机制才跑得起来;判断一个框架支不支持长上下文,先看它有没有相应实现。对普通人:它意味着可以把一整本书、一整个代码仓库一次性交给模型,而不是切成碎片再拼答案,跨段落的推理质量会明显更好。具体支持哪些并行策略、参数怎么配,以各家框架的官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。