跳到主要内容

G5 上下文并行建模设计规格

版本:1.1.1 状态:Accepted 创建日期:2026-06-10 最后更新:2026-06-17 作者:xiang.li 前置互联通信G5仿真建模设计规格 被依赖长上下文部署方案搜索设计规格(其「CP 建模层」由本 spec 冻结)

版本号规则 (SemVer):

  • major (X.0.0):架构变更、接口不兼容、公式体系重构
  • minor (1.X.0):新增模型/算法、新增章节、扩展接口(向后兼容)
  • patch (1.0.X):修正笔误、补充说明、更新实现说明

变更历史

版本日期变更说明
1.0.02026-06-10初版
1.1.02026-06-16强化重叠验收标准(加中间区间「重叠生效」测试);澄清 step 内通信与计算并发的依赖契约;修正 TTFT 可信范围声称

@tbl-spec-g5cp-01 文档变更历史


概述

本 spec 定义评估管线的上下文并行 (CP) 维度建模:在 TP/PP/DP/EP 之外新增第五个并行维度 cp,沿序列 token 维切分 attention 的中间状态,使 G5 能对长上下文 (128K–1M) 配置仿真出 TTFT / TPOT。CP 的通信形态按推理阶段分流:prefill 发射 pass-KV 环传,decode 发射 pass-Q 聚合。通信与计算的依赖关系显式进入操作 DAG,重叠程度由 G5 事件驱动仿真产生,不写解析重叠公式。本 spec 冻结 CP 的切分、通信形态与 DAG 依赖契约:其中通信量与容量分摊建模可独立验证,而 prefill TTFT 与掩盖边界还依赖计算时延标定与 step 内重叠的正确实现,二者完成前不可作可信结论(见 局限与后续工作 节)。

背景

长上下文求解器 spec 已冻结目标层与搜索算法,但其依赖的「CP 建模层」只有一行定位,mapping 层 IR 如何切分、通信操作形态如何展开、与既有并行维度如何组合均未冻结。当前实现的缺口量化:

  • 并行维度缺失:mapping 层并行类型只有 TP / EP / 复制;cp 不存在,$S = 1\text{M}$ 配置的 activation 与 KV cache 单卡装不下,评估不可达。
  • CP 通信形态无表达:现有指令发射把跨芯片集合通信简化为单次传输,没有「逐步通信 + 逐步计算」的环形迭代,CP 的核心收益(KV 环传被 attention 计算掩盖)无法仿真。
  • 零测试先例:上一个序列方向特性(TP 组内序列切分开关)落地时一项测试都没有,行为正确性至今不可证。本 spec 把验收测试作为正文要求冻结。

名词定义

名词定义与易混淆概念的区分
上下文并行 (CP)沿序列 token 维把单条序列切到 cp 个芯片,每芯片持 $S/\text{cp}$ 个 token 的中间状态与 TP(切权重张量)正交;与 TP-SP(TP 组内切序列、不引入新 rank 维度)不同,CP 是独立 rank 维度
cp 并行度CP 维度的芯片数,部署约束 $\text{dp} \times \text{tp} \times \text{pp} \times \text{cp} = N_{\text{chips}}$ 的因子
CP 组同一 (dp, tp, pp) 坐标下的 cp 个 rank,CP 通信只发生在组内与 TP 组、EP 组并列
Pass-KVPrefill 的 CP 通信形态:K/V 分块在 CP 组的环上轮转 $\text{cp}-1$ 步,每步与本地 partial attention 并发数据量 GB 级,可被 $O(S^2)$ 计算掩盖
Pass-QDecode 的 CP 通信形态:query 发往各 rank,各 rank 用本地 KV 分片算 partial attention,再归约合并数据量 KB 级,与 pass-KV 相差数个数量级
Ring steppass-KV 环传的一次迭代:rank 计算手头 KV 块的 partial attention,同时收发下一块 KV
Partial attention对 KV 子集计算的不完整 attention 输出,附 online softmax 三量 (max / 分子 / 分母) 用于跨块合并合并满足结合律,顺序无关
Balanced chunk splitcausal mask 下的负载配平切分:序列分 $2\text{cp}$ 块、rank 持头尾配对块,每 rank 每步计算量等额区别于顺序均分(首尾 rank 计算量差 cp 倍)
$c_{\text{kv}}$每 token 每层 K+V 合计字节数(已含 K、V 两份,不再乘 2),由注意力结构 × dtype 复合决定,MLA 用压缩后值与求解器 spec「KV 压缩档」同口径
$d$ / $n_h$$d$ = 模型 hidden 维度;$n_h$ = attention head 数
CP=1 退化cp=1 时 CP 维度不产生任何切分与通信,评估结果与无 CP 路径完全一致回归基准

目标与非目标

目标

  • cp 成为第五并行维度:配置含 cp 字段,参与 $\text{dp} \times \text{tp} \times \text{pp} \times \text{cp} = N_{\text{chips}}$ 校验,CP 组进 rank 映射。
  • Prefill pass-KV 显式 DAG:attention 展开为 cp 个 ring step 的计算子操作 + $\text{cp}-1$ 个 P2P 通信操作。依赖契约冻结两条边——跨 step 串行:第 $i$ 步计算依赖第 $i-1$ 步通信;step 内并发:第 $i$ 步通信(发下一块 KV)与第 $i$ 步计算无依赖,二者可同时执行。重叠由 G5 事件驱动产生。
  • Decode pass-Q 建模:query 分发、本地 partial attention、三量归约三段操作进 DAG。
  • 内存按 cp 分摊:KV cache 与序列方向 activation 占用除以 cp,进内存报告(求解器容量墙的输入)。
  • 验收测试齐套:通信量守恒、DAG 结构、CP=1 退化、重叠生效四类断言随实现交付。重叠生效须在计算与通信耗时相当的中间区间验证,不能只测两端极端(理由见 验收标准 节)。

非目标

  • 不做 Ulysses (All-to-All)、Tree Attention、pass-KV/pass-Q 动态切换;只做 pass-KV + pass-Q 各一种固定形态。
  • Math 路径不支持 cp:cp>1 时 Math 路径直接报错,不实现解析公式。
  • 不建模 CP 对 MoE dispatch 路由分布的影响;EP 通信按既有方式发射。
  • 不做求解器搜索层(属求解器 spec),也不建模 PD 间 KV 搬运。

用例说明

部署工程师评估 1M 上下文单点配置:模型 deepseek-v3-671b、64 芯片、tp=2、cp=8、dp=4、pp=1,prefill 阶段,G5 路径。

  1. 配置校验:$2 \times 8 \times 4 \times 1 = 64$ 通过;cp=8 → 每 rank 序列 131K token。
  2. mapping 把每层 attention 展开为 8 个 ring step 子操作 + 7 个 P2P 通信操作;FFN / 投影按既有 TP 切分,序列维 token 数自然变为 $S/8$
  3. G5 仿真:每步本地 attention 计算与下一块 KV 的 P2P 传输并发,事件驱动得出该层时长;输出 TTFT 与每芯片峰值内存。
  4. 工程师把 cp 提到 16,TTFT 下降、每卡 KV 占用减半,曲线指导求解器搜索。

本用例的 TTFT 与「TTFT 下降」曲线仅示意 CP 评估流程;其数值依赖计算时延标定与 step 内重叠的正确实现(见 局限与后续工作 节),二者完成前不可作可信结论。当前可独立信任的产出是每芯片内存占用与通信量。

decode 同配置:每步 1 token 的 query 发往 CP 组 8 个 rank,各 rank 对本地 131K KV 分片算 partial attention,三量归约后得到该步输出,仿真出 TPOT。

详细设计

概念模型

cp 是与 dp / tp / pp 同级的部署维度。一层 attention 在 CP 组内的展开形态由推理阶段决定:

阶段计算操作通信操作通信量级
Prefill (pass-KV)cp 个 ring step partial attention$\text{cp}-1$ 个 P2P (KV 块)GB 级
Decode (pass-Q)cp 个本地 partial attentionquery 分发 + 三量归约KB 级

非 attention 算子(FFN / 投影 / MoE)不感知 CP 的环结构,只感知序列维 token 数变为 $S/\text{cp}$;其 TP / EP 通信按既有规则插入。

设计原理

为什么显式拆 DAG 而不用解析重叠公式:CP 的全部收益取决于通信被计算掩盖的程度,而掩盖程度受拓扑、路由、与 TP/EP 流量的带宽竞争影响——只有把每步 P2P 进事件仿真才能反映竞争。解析 $\max(\text{compute}, \text{comm})$ 假设通信独占带宽,恰好在长上下文最关心的带宽竞争场景失真。重叠层次对齐前置 spec:ring step 计算与通信并发, step 由依赖串行。依赖契约的精确形式:第 $i$ 步通信只依赖上一步通信交付的数据,不依赖同步号的计算完成——若令其依赖同步号计算,DAG 退化为全串行、重叠消失,这是必须由验收标准把关的失效模式。

为什么 balanced chunk split 是建模假设而非物理排布:causal mask 下顺序均分使首尾 rank 计算量差 cp 倍,没有实现会这么部署;balanced 头尾配对后每 rank 等量,业界已收敛。仿真器只需每 ring step 给每 rank 等额计算量(全量的 $1/\text{cp}^2$),不需要模拟 token 物理排布。

为什么 decode 传 Q 不传 KV:每步 query 字节数 ($b \cdot d$) 比 KV 分片小数个数量级,pass-Q 的归约消息量与 $S$ 无关,容量墙之上加 cp 不再恶化通信。

为什么 Math 路径报错:Math 的 CP 公式未建立未验证,静默给错值比报错危险;项目规则禁止静默兜底。

算法 / 公式

Pass-KV 通信量(per rank、每层):

$$\begin{equation} M_{\text{passkv}} = (\text{cp}-1) \cdot \frac{S}{\text{cp}} \cdot c_{\text{kv}} \label{eq:g5cp-passkv-bytes} \end{equation}$$

$c_{\text{kv}}$ 为每 token 每层 KV 字节数(注意力结构 × dtype 复合,MLA 用压缩后字节数)。每 ring step 传 $\frac{S}{\text{cp}} \cdot c_{\text{kv}}$,与 docs 渐近上界 $M \approx S \cdot c_{\text{kv}}$ 一致。

Ring step 计算量(per rank、每步,balanced):

$$\begin{equation} F_{\text{step}} = \frac{F_{\text{attn}}}{\text{cp}^2} \label{eq:g5cp-step-flops} \end{equation}$$

$F_{\text{attn}}$ 为该层 causal attention 总 FLOPs。cp 步合计 $F_{\text{attn}}/\text{cp}$,即每 rank 总计算量按 cp 均分。

Pass-Q 通信量(per rank、每步、每层):分发 $b \cdot d \cdot s_{\text{dtype}}$,归约 $b \cdot (d + 2 n_h) \cdot s_{\text{dtype}}$,均与 $S$ 无关。归约消息的 $d$ 对应 partial attention 输出向量,$2 n_h$ 对应每 head 的 online softmax max 与分母两个标量。

内存:每 rank KV 占用 $\frac{b \cdot S \cdot c_{\text{kv}} \cdot L_{\text{local}}}{\text{cp}}$;prefill 序列方向 activation 同除 cp。

约束与规则

  • $\text{dp} \times \text{tp} \times \text{pp} \times \text{cp} = N_{\text{chips}}$ 不满足时配置校验报错。EP 不进该乘积:EP 复用 dp×tp 的 rank 空间重划专家组,不引入新 rank 维度,沿用既有约束。
  • cp>1 + Math 路径 → 报错;cp>1 + TP-SP 开关同开 → 报错(两者均切序列维,v1 不组合,放开列入后续工作)。
  • prefill / decode 必须分流到 pass-KV / pass-Q,不可混用。
  • cp=1 时不产生任何 CP 子操作与通信操作。

集成点

衔接对象数据流向说明
配置契约部署配置 → 校验新增 cp 字段,参与维度乘积校验
mapping 并行规划配置 → 操作 DAGattention 按阶段展开 ring step / pass-Q 结构
G5 通信原语DAG → 仿真pass-KV 复用 P2P;pass-Q 复用 P2P + 小消息集合通信
内存报告DAG → 报告KV / activation 按 cp 分摊
Math 路径配置 → 报错cp>1 拒绝

引用

  • Meta, Context Parallelism for Scalable Million-Token Inference, arXiv:2411.01783 — pass-KV / pass-Q 双形态
  • Ring Attention, arXiv:2310.01889 — KV 环传 + online softmax
  • 项目知识文档:上下文并行总览Ring AttentionDecode 阶段 CP

备选方案

维度方案 A:显式 ring step DAG(选定)方案 B:attention 单操作 + 内部 CP 修正方案 C:扩展 TP-SP 开关
重叠保真事件仿真产生,含带宽竞争解析 max 公式,无带宽竞争同 B
通信进路由表部分
改动量mapping 拆操作,较大
满足求解器 spec否(违背 G5-only overlap 原则)否(无独立 rank 维度,容量墙不解决)

选择理由:方案 A 是唯一让重叠与带宽竞争自然产生的形态;B/C 在长上下文最关心的通信竞争场景失真,且 C 不分摊 KV 容量。

非功能性需求

维度本 spec 的考虑
性能attention 操作数膨胀 cp 倍,1M/cp=16 配置 G5 仿真应在分钟级
兼容性新增 cp 字段,旧配置缺字段报错提示迁移,不静默默认
安全性 / 隐私N/A,内部仿真器

局限与后续工作

局限

风险 / 局限影响缓解措施
balanced 假设抹平负载不均不能评估顺序切分等非配平实现业界已收敛 balanced,非配平无评估价值
pass-Q 归约拓扑固定Tree Attention 的 $O(\log)$ 步收益不可见列入后续工作
CP 与 TP-SP 互斥组合空间缩小长上下文主场景 cp 替代 tp_sp 收益
prefill TTFT / 掩盖边界不可独立信任二者依赖计算时延标定与 step 内重叠的正确实现,均不属本 spec 的通信建模范围计算建模现状见 G5 计算建模现状与缺口;重叠正确性由「重叠生效」验收标准把关

后续工作

  • Ulysses 与混合 CP(中,前置:本 spec);Tree Attention 归约(中);CP+TP-SP 组合(低);Math 路径 CP 公式(低,待 G5 数据校准)。

验收标准

场景指标目标值测试方法
通信量守恒pass-KV per-rank 字节$= \eqref{eq:g5cp-passkv-bytes}$ 严格相等单测对 DAG 通信操作求和
DAG 结构prefill 每层操作数cp 个计算 + cp−1 个 P2P,依赖链正确单测断言结构
CP=1 退化TTFT/TPOT/内存与无 CP 路径严格一致集成差分
内存分摊每 rank KV 字节解析值严格相等内存报告断言
配置校验维度乘积 ≠ 芯片数报错单测
Decode DAG 结构每层 query 分发 + cp 个 partial + 归约结构与依赖正确单测断言结构
重叠生效(充分判据)构造计算/通信时长比落在中间区间 $[0.5, 2.0]$,断言 ring step 总时长 $\le 1.1 \cdot \max(\text{计算}, \text{通信})$(重叠成立)且 $\le 0.7 \cdot (\text{计算}+\text{通信})$(排除串行,串行下该比值 =1.0)双不等式同时成立G5 中间区间测试
重叠蜕变(极端 sanity,非充分)$S/\text{cp}$ 大→ring 总时长偏离 $\sum F_{\text{step}}$ 纯计算时长 <10%大端 <10%(小端见 附录 B)G5 蜕变测试
G5 守恒六项守恒 KPI全 0 无容差既有守恒断言
validation 扫描cp×S 网格 TTFT 对 cp 非升单调(掩盖区间内)脚本 + 增量写 DB
Math 拒绝cp>1 走 Math报错单测

为什么重叠必须测中间区间$\max(\text{计算}, \text{通信})$ 与二者之和在某一项远大于另一项时数值重合,因此只测 $S/\text{cp}$ 两端极端的「重叠蜕变」对串行实现与重叠实现给出相同结果,无法证明重叠成立。重叠是否生效只在计算与通信耗时相当的中间区间可分辨(重叠给 $\max$,串行给和,相差约 2×)。故「重叠生效」是重叠正确性的唯一充分判据,「重叠蜕变」仅作极端 sanity。


附录

附录 A:业界调研

完整 CP 系统对比见求解器 spec 附录 A 与 上下文并行总览,本 spec 不重复。差异化:本 spec 不实现推理框架,而是把 Meta CP 双形态翻译为仿真器 IR。

附录 B:实现说明

实现日期 2026-06-11,与正文偏差记录:

  • 重叠蜕变小端不可达:MLA 压缩后 $c_{\text{kv}} \approx 320$ B/token,pass-KV 单步传输亚微秒级,而每 ring step 含本地 tile 搬运(数微秒),通信占比上限实测约 7%,「偏离纯通信 <10%」端点结构上不可达。小端断言放宽为方向性蜕变(小端通信暴露度比大端高 ≥10 倍且占比 >1%),10% 阈值仅大端保留(实测偏离 0.11%)。
  • 实现期顺带修复:G5 指令发射对 fa2 算子无分支导致 attention 计算量为零(与 CP 无关的既有缺陷),与序列维 =1 时 tiling 不可达问题,均在 CP 测试中暴露后修复。
  • decode TPOT 随 cp 略升:decode 计算量不随 cp 切分而减(每 rank 仅 KV 量减),新增 pass-Q 通信使 TPOT 单调上升——cp 在 decode 侧解决的是容量墙,不是带宽墙,与求解器 spec 容量墙下界推理一致。
  • 重叠以滞后流水形态生效(修正早先「未生效」判断):mapping 层把 ring 展开为 step→comm→step 的串行依赖链,但单芯片评估路径的指令发射不沿用该 op 依赖,而是按「通信依赖前一步计算」重新派生,产生滞后流水——第 $i+1$ 步计算与第 $i$ 步通信并发。spike 实测 pass-KV 约 85% 被计算掩盖,故引擎层掩盖机制已生效。早先「全串行、重叠未生效」的判断来自「重叠蜕变」极端测试的测量盲区(该测试硬取 ring = 计算 + 通信之和,对串行与重叠给同值,见 验收标准 节),非引擎实际行为。两点仍待跟踪:(a) 滞后流水的依赖结构与正文契约的 step 内并发(第 $i$ 步通信与第 $i$ 步计算并发)不同形,mapping 层 DAG 尚未直接表达正文契约,由「重叠生效」验收标准把关;(b) prefill 绝对 TTFT 仍因计算时延未标定 placeholder 不可信,与重叠是否生效无关。

附录 C:完整接口签名 / 数据结构

待实现阶段细化。契约骨架:部署配置新增 cp(正整数,默认无→报错要求显式);操作 DAG 新增 CP 切分类型与 ring step 通信原因标签;内存报告新增 per-rank KV/activation cp 分摊项。