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.0 | 2026-06-10 | 初版 |
| 1.1.0 | 2026-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-KV | Prefill 的 CP 通信形态:K/V 分块在 CP 组的环上轮转 $\text{cp}-1$ 步,每步与本地 partial attention 并发 | 数据量 GB 级,可被 $O(S^2)$ 计算掩盖 |
| Pass-Q | Decode 的 CP 通信形态:query 发往各 rank,各 rank 用本地 KV 分片算 partial attention,再归约合并 | 数据量 KB 级,与 pass-KV 相差数个数量级 |
| Ring step | pass-KV 环传的一次迭代:rank 计算手头 KV 块的 partial attention,同时收发下一块 KV | — |
| Partial attention | 对 KV 子集计算的不完整 attention 输出,附 online softmax 三量 (max / 分子 / 分母) 用于跨块合并 | 合并满足结合律,顺序无关 |
| Balanced chunk split | causal 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 路径。
- 配置校验:$2 \times 8 \times 4 \times 1 = 64$ 通过;cp=8 → 每 rank 序列 131K token。
- mapping 把每层 attention 展开为 8 个 ring step 子操作 + 7 个 P2P 通信操作;FFN / 投影按既有 TP 切分,序列维 token 数自然变为 $S/8$。
- G5 仿真:每步本地 attention 计算与下一块 KV 的 P2P 传输并发,事件驱动得出该层时长;输出 TTFT 与每芯片峰值内存。
- 工程师把 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 attention | query 分发 + 三量归约 | 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 并行规划 | 配置 → 操作 DAG | attention 按阶段展开 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 Attention、Decode 阶段 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 分摊项。