跳到主要内容

长上下文 LLM 部署方案搜索设计规格

版本:1.0.0 状态:Draft 创建日期:2026-06-08 最后更新:2026-06-08 作者:xiang.li 前置互联通信G5仿真建模设计规格

版本号规则 (SemVer):

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

变更历史

版本日期变更说明
1.0.02026-06-08初版

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


概述

本 spec 定义一个部署方案求解器:输入上下文长度,输出满足延迟约束的最少芯片数与 prefill/decode 的最优并行切分方案。求解器只用 G5 仿真引擎做性能评估,不用 Math 代数模型。

求解器面向超长上下文 (128K–1M) 的 LLM 推理部署决策。给定上下文长度 $S$、模型、芯片型号与延迟服务等级目标 (SLA),输出最少芯片数 $N^*$ 与配置 $(N_p, N_d, \text{KV 压缩档})$,以及对应的 TTFT / TPOT。

背景

KBG:现状有什么问题 + 为什么现在做。

Tier6 当前无法评估长上下文部署方案,根因是评估管线缺少上下文并行 (CP) 维度。具体缺口有三:

  • mapping 层无序列切分维度:并行类型只有 TP / EP / REPLICATE,没有沿序列 token 切分的 CP。长上下文的 activation 与 KV cache 无法分摊到多卡,1M 上下文在单卡装不下,评估直接不可达。
  • G5 通信原语缺 CP 形态:点对点通信是两方单次传输,没有 Ring Attention 的环形迭代结构;单核指令发射把跨芯片集合通信简化为单次本地传输,无法表达 CP 的逐步通信。
  • 无部署方案求解能力:即使能评估单个配置,也没有「给定上下文长度求最优配置」的搜索层。

长上下文部署的核心难点是 prefill 与 decode 是两个不同的瓶颈,不能用一套模型套住:

  • Prefill 是算力墙:attention 计算量与序列长度平方成正比 ($O(S^2)$)。$S = 1\text{M}$ 时 attention 浮点运算量约为 FFN 的 50 倍 (量级估算:两者之比 $\approx S / d_{\text{ffn}}$,$S = 1\text{M}$$d_{\text{ffn}} \sim 1.8\text{万}$),主导 TTFT。CP 的 KV 环传通信可被 attention 计算掩盖,网络不是主矛盾。
  • Decode 是 KV cache 的容量墙加带宽墙:每步生成 1 个 token 需读取全量 KV cache。1M 上下文即使用 MLA 压缩,KV 仍达数十 GB 量级,单卡装不下;每步读取耗时由 HBM 带宽决定,构成 TPOT 下界。

本月需要交付:给定不同上下文长度,输出芯片数量与 prefill/decode 最优方案。本 spec 冻结该求解器的接口契约、概念模型与核心算法。

名词定义

名词定义与易混淆概念的区分
上下文并行 (CP)沿序列 token 维度把单条序列切到多个芯片,每芯片持 $S/N$ 个 token 的中间状态与 TP (切权重张量)、SP (TP 组内切序列) 正交;CP 是独立维度,解决单卡装不下长序列
Prefill推理首阶段,一次性处理输入的全部 $S$ 个 token,产出首 token 与初始 KV cache计算密集,$O(S^2)$
Decode推理生成阶段,每步基于已有 KV cache 生成 1 个 token访存密集,瓶颈在 KV cache 读取
Pass-KVPrefill 阶段的 CP 通信形态:K/V 块在芯片环上轮转数据量 GB 级,可被计算掩盖
Pass-QDecode 阶段的 CP 通信形态:每步传 query 向量 (量极小),各芯片用本地 KV 段算 partial attention 后合并与 Pass-KV 相反,传 Q 不传 KV,因 decode 每步 query 远小于 KV
$N_p$Prefill 阶段的 CP 并行度 (序列切分到几张卡)
$N_d$Decode 阶段的 KV 切分并行度PD 分离下与 $N_p$ 独立
KV 容量墙KV cache 总量超过单卡可用显存,强制要求 $N_d$ 达到一个下界与带宽墙区分:容量墙决定「能不能装下」,带宽墙决定「读得多快」
HBM 带宽墙每步 decode 读取全量 KV cache 的耗时由 HBM 带宽决定,构成 TPOT 下界
TTFTTime To First Token,prefill 产出首 token 的延迟
TPOTTime Per Output Token,decode 每步生成 1 token 的延迟
TPS per batch每个 batch 的逐 token 生成速率 (tokens/s),decode 阶段的吞吐指标口径见 验收标准 节的待定项
PD 分离Prefill 与 Decode 部署在独立的芯片池,各自采用独立并行策略Prefill-Decode disaggregation
KV 压缩档每 token 每层 KV 字节数 $c_{\text{kv}}$ 的离散取值,作为求解器输入参数;$c_{\text{kv}}$ 由注意力结构 (MHA / GQA / MLA) 与 dtype (BF16 / FP8) 复合决定,spec 只消费 $c_{\text{kv}}$ 数值本 spec 不建模如何得到 $c_{\text{kv}}$ (不实现 MLA / GQA / 量化算法),只把它当输入档位
单点评估对一个完整确定的配置,用 G5 仿真算出 TTFT / TPOT / 容量占用与求解层区分:单点评估是被求解器反复调用的黑盒

目标与非目标

目标

  • G5 支持 CP 维度建模:mapping 层新增序列切分维度,为 prefill (pass-KV) 与 decode (pass-Q) 发射对应的 CP 通信操作,G5 能对单个 CP 配置算出 TTFT / TPOT。
  • 求解器输出最优部署方案:输入上下文长度 $S$,输出满足 SLA 的最少芯片数 $N^*$ 与配置 $(N_p, N_d, \text{KV 压缩档})$
  • PD 解耦的单调搜索:把求解拆成 prefill 与 decode 两个独立的一维单调子问题,用单调搜索而非全网格,把 G5 仿真调用次数控制在数十次量级。

非目标 (本版本明确不做):

  • 不用 Math 代数模型评估:所有性能数字来自 G5 仿真。
  • 不建模具体 KV 压缩算法:KV 压缩比作为离散输入参数,不实现 MLA / GQA / 量化的内部机制。
  • 不建模 PD 间 KV 搬运:prefill 池算出的 KV 传输到 decode 池 (Mooncake 风格) 的开销忽略,作为一阶近似,后续版本补。
  • 不做 batch 维度搜索:batch 固定为常用值,batch 与 $N_d$ 的耦合搜索后续版本补。
  • 不手写 prefill 的计算-通信 overlap 近似:overlap 由 G5 事件驱动仿真自然产生。

用例说明

走一遍最典型的场景:部署工程师要把一个 671B 模型部署到 1M 上下文,问「最少需要多少芯片,prefill 和 decode 各怎么切」。

输入:

context_length S = 1,048,576
model = deepseek-v3-671b
chip = SG2262
sla = { ttft_max: <待定>, tps_per_batch_min: ~50 }
kv_compress = [c_kv 档1, c_kv 档2] # 每 token 每层 KV 字节数候选档 (如 MLA-BF16 / MLA-FP8)

求解器处理:

  1. Decode 子问题:对每个 KV 压缩档,先用 KV 容量墙算出 $N_d$ 下界 (KV 总量除以单卡可用显存)。从下界开始沿 $N_d$ 递增,每个 $N_d$ 调一次 G5 仿真算 TPOT;首个满足 $\text{TPS} \geq 50$$N_d$ 即该压缩档的 decode 最优解。
  2. Prefill 子问题:沿 $N_p$ 递增,每个 $N_p$ 调一次 G5 仿真算 TTFT;首个满足 TTFT SLA 的 $N_p$ 即 prefill 最优解。
  3. 合成:总卡数 $N^* = $ prefill 池 $+ $ decode 池;在所有 KV 压缩档里取总卡数最小的方案。

输出:

N* = <最少芯片数>
prefill: N_p = <值>, TTFT = <值>
decode: N_d = <值>, TPOT = <值>, KV 压缩档 = <选定档>

工程师改变 $S$ (如 128K),重跑得到不同的 $N^*$,扫出一条 $N^*(S)$ 曲线指导部署。

详细设计

概念模型

求解器分三层,自底向上:

职责复用/新增
CP 建模层mapping 层按 CP 并行度发射 prefill (pass-KV) / decode (pass-Q) 的通信与计算操作序列新增序列切分维度;通信复用 G5 既有原语
单点评估层对一个确定配置,G5 仿真出 TTFT / TPOT / 显存占用复用 G5 事件驱动内核
求解层PD 两个独立一维单调子问题,单调搜索得最优配置新增

PD 分离把搜索空间从乘积塌成相加。Prefill 与 decode 在独立芯片池,各自的最优并行度互不影响。若耦合搜索,空间是 $|N_p| \times |N_d| \times |\text{KV 档}| \times |\text{batch}|$;PD 分离后是两个一维子问题之和,每个子问题再借单调性降到对数或线性次仿真。

设计原理

为什么只用 G5,不用 Math:Math 的 CP 公式尚未建立也未经验证,而 G5 事件驱动仿真能自然产生计算-通信 overlap,无需手写 $\max(\text{compute}, \text{comm})$ 近似。Prefill 的 KV 环传与 attention 子块计算,只要 mapping 把依赖关系发射正确,overlap 在 G5 内核里自动出现。

需界定 overlap 的层次:overlap 发生在 ring step (当前步的通信与本地 attention 子块计算重叠);ring step 仍串行 — 对齐 G5 仿真建模 spec 的 Ring 跨 step 数据依赖约束,不假设跨 step 流水化。「只要依赖发射正确 overlap 自动出现」指 step 内,跨 step 的串行由 G5 既有 msg 同步保证。

为什么 PD 拆成单调子问题:Decode 的 TPOT 主要由每卡 KV 读取耗时决定,$N_d$ 越大每卡读取量越小、TPOT 越低、TPS 越高 — 在 KV 读取主导区间内对 $N_d$ 单调。因此不必全扫,沿 $N_d$ 递增找首个满足 TPS 阈值的点即可。Prefill 的 TTFT 对 $N_p$ 同理单调递减。单调性是把仿真次数从上千降到数十的关键 (单调性的边界风险见 局限与后续工作 节)。

为什么 decode 传 Q 不传 KV:Decode 每步只有 1 个 query token,其数据量比全量 KV 小几个数量级。把 query 传到各持 KV 段的芯片,各芯片用本地 KV 段算 partial attention,再经一次聚合通信 (AllGather / AllReduce 类) 合并 partial 结果,通信开销远低于传 KV。Prefill 与 decode 的通信形态不同,需按推理阶段 (prefill / decode) 把两者分流到不同的通信发射逻辑。本 spec 不锁死 decode 聚合的具体拓扑 (环传或一次性聚合),留给通信原语选择 — 与知识文档「decode 不做 ring 旋转、退化为分片访问 + 聚合」一致。

为什么 KV 压缩参数化:压缩比是撬动容量墙与带宽墙的最大杠杆 (压缩比减半,$N_d$ 下界减半、TPOT 减半)。把它作为离散输入档,求解器能在不实现具体压缩算法的前提下扫出压缩对方案的影响。

算法 / 公式

Decode 子问题 — 在满足 KV 容量墙的前提下,求满足 TPS 阈值的最小 $N_d$:

$$\begin{equation} N_d^* = \min \{ N_d : \text{TPS}(S, N_d, b) \geq \text{TPS}_{\min} \ \wedge\ N_d \geq N_d^{\text{cap}} \} \label{eq:cps-decode-subproblem} \end{equation}$$

KV 容量墙$N_d$ 的硬下界,KV 总量除以单卡可用显存 (向上取整):

$$\begin{equation} N_d^{\text{cap}} = \left\lceil \frac{b \cdot S \cdot c_{\text{kv}}(r) \cdot L}{C_{\text{chip}} - W_{\text{chip}}} \right\rceil \label{eq:cps-capacity-wall} \end{equation}$$
  • $b$: batch (并发序列数);与 decode 子问题 $\eqref{eq:cps-decode-subproblem}$$b$ 同口径,本版本固定 (见 非目标)
  • $c_{\text{kv}}(r)$:每 token 每层 KV 字节数,由 KV 压缩档 $r$ 决定 (含 dtype 与注意力结构的复合,见 名词定义)
  • $L$:模型层数
  • $C_{\text{chip}}$:单卡 HBM 容量
  • $W_{\text{chip}}$:单卡权重分片与 activation 等其他占用;本版本视为常量 (decode 池权重按固定分片),其随并行度变化列入后续工作

TPS 与 TPOT 关系 — 逐 token 速率是 TPOT 的倒数 (TPOT 单位:秒/token):

$$\begin{equation} \text{TPS}_{\text{per-seq}} = \frac{1}{\text{TPOT}}, \qquad \text{TPS}_{\text{per-batch}} = \frac{b}{\text{TPOT}} \label{eq:cps-tps-tpot} \end{equation}$$

decode 子问题 $\eqref{eq:cps-decode-subproblem}$ 采用哪个口径取决于待定项 (见 验收标准 节),两者差 batch 倍。

Prefill 子问题 — 求满足 TTFT SLA 的最小 $N_p$:

$$\begin{equation} N_p^* = \min \{ N_p : \text{TTFT}(S, N_p) \leq T_{\text{ttft}}^{\text{SLA}} \} \label{eq:cps-prefill-subproblem} \end{equation}$$

其中 $\text{TTFT}(S, N_p)$$\text{TPOT}(S, N_d, b)$ 均由 G5 单点仿真给出,不是闭式表达。

总芯片数

$$\begin{equation} N^* = N_p^* + N_d^* \label{eq:cps-total-chips} \end{equation}$$

本版本 prefill / decode 各单实例,总卡数为两子问题解之和。多实例池配比 ($N^* = N_p^* \cdot m_p + N_d^* \cdot m_d$) 见 局限与后续工作 节。

单调搜索:依据 $\eqref{eq:cps-decode-subproblem}$$\eqref{eq:cps-prefill-subproblem}$ 的单调性,从下界开始沿 $N$ 递增、首个满足约束即停;或在已知单调时用二分。两种均把每个子问题的仿真次数压到 $O(N)$$O(\log N)$

约束与规则

  • KV 容量墙是硬约束:不满足 $\eqref{eq:cps-capacity-wall}$$N_d$ 直接剪除,不进入 G5 仿真。
  • SLA 是软约束的边界:求解的目标是「满足 SLA 的最小卡数」,SLA 未满足时继续增大 $N$;若到搜索上界仍不满足,报告不可行。
  • 单调性是搜索的前提假设:子问题搜索依赖 TTFT / TPOT 对并行度单调。该假设的失效边界 (如 $N_d$ 过大时 pass-Q 通信开销反超) 见 局限与后续工作 节。
  • prefill 与 decode 通信分流:按推理阶段 (prefill / decode) 决定发射 pass-KV 还是 pass-Q,两者不可混用一套通信模型。

集成点

衔接对象数据流向说明
配置契约 (EvalConfig)求解器 → 评估管线新增 prefill / decode 的 CP 并行度字段与 KV 压缩档字段
mapping 层并行规划配置 → 通信/计算操作序列新增序列切分维度;按推理阶段发射 pass-KV / pass-Q
G5 通信原语mapping 操作 → 仿真pass-KV 复用环形点对点;pass-Q 复用点对点/聚合通信
求解器编排SLA + 候选空间 → 最优配置调用单点评估,执行单调搜索

完整字段签名与求解器接口见 附录 C。

引用

备选方案

维度方案 A: PD 解耦单调搜索 (选定)方案 B: G5 全网格扫描方案 C: Math 扫描 + G5 校准
评估引擎G5G5Math 为主,G5 校准
搜索空间两个一维子问题之和$N_p \times N_d \times$ KV $\times$ batch 乘积同 A
单次求解仿真次数数十次上千次Math 秒级,G5 少量
评估精度G5 高保真G5 高保真Math 精度未验证
本月可行性可行G5 分钟级 × 上千次,跑不完Math CP 公式未建立

选择理由:方案 A 借 PD 分离与单调性把 G5 仿真次数压到可接受,同时保留 G5 的高保真。方案 B 精度相同但全网格在 G5 分钟级速度下不可行。方案 C 虽快但本月要求 G5-only,且 Math 的 CP 公式尚未建立与验证,精度无保证。完整业界并行策略对比见 附录 A。

非功能性需求

维度本 spec 的考虑
性能 (Performance)单次求解的 G5 仿真调用次数应在数十次量级 (两个子问题各 $O(N)$$O(\log N)$);全网格的上千次为反面基线
兼容性 (Compatibility)新增 CP 并行度与 KV 压缩档字段。按项目「不写向后兼容分支」规则,旧配置缺字段时报错并提示迁移,不静默降级
安全性 / 隐私N/A,内部仿真器,不暴露公网
可观测性求解过程应可追溯每个 $N$ 候选点的仿真结果 (TTFT / TPOT / 是否满足约束),便于诊断搜索路径

局限与后续工作

局限 (本设计的代价)

风险 / 局限影响缓解措施
单调性假设可能在边界失效$N_d$ 过大时 pass-Q 的通信与合并开销可能反超 KV 读取收益,TPOT 呈先降后升,单调搜索可能停在非全局最优在 KV 读取主导区间内单调成立;搜索设上界,超出时退化为该区间内全扫
KV 压缩参数化丢失算法细节压缩比近似,与真实 MLA / 量化的访存模式有偏差压缩比覆盖典型档 (BF16 / FP8),量级对齐;具体算法建模列入后续
忽略 PD 间 KV 搬运prefill 池到 decode 池的 KV 传输开销未计,TTFT-to-TPOT 衔接被低估标注为一阶近似;搬运建模列入后续
batch 固定batch 与 $N_d$ 在 HBM 上的耦合未搜索,decode 吞吐非全局最优第一版固定常用 batch;batch 扫描列入后续

本 spec 的 prefill ring 不手写 overlap 近似,依赖 G5 事件驱动自然产生 overlap。若 G5 内核对该依赖模式的 overlap 处理与预期不符,属实现偏差,记入附录 B,不改本正文。

后续工作 (后续扩展方向)

  • PD 间 KV 搬运建模 (高,前置:本 spec 实现):把 prefill→decode 的 KV 传输带宽计入端到端延迟。
  • batch 维度搜索 (中,前置:本 spec 实现):把 batch 纳入 decode 子问题,处理 batch 与 $N_d$ 的 HBM 耦合。
  • KV 压缩算法建模 (中,前置:无):用 MLA / GQA / 量化的真实访存替换压缩比参数。
  • 多实例池配比 (低,前置:本 spec 实现):求解 prefill / decode 池各自的实例数 $m_p, m_d$

验收标准

场景指标目标值测试方法
CP 单点-守恒prefill / decode CP 通信总字节数守恒与解析值严格相等 (无容差)单测断言通信总量 = 理论值
CP 单点-容量墙KV 容量占用核算$\eqref{eq:cps-capacity-wall}$ 一致给定 $S, r, L$ 核对 $N_d$ 下界
CP 单点-decode 带宽1M decode 每步 KV 读取耗时量级与知识文档 Ring 通信量公式同量级G5 仿真 TPOT 对照解析量级
CP 单点-通信结构prefill pass-KV 展开步数 / decode pass-Q 聚合结构prefill = $N_p - 1$ 步环传;decode = 预期聚合步数对照 G5 集合通信展开,断言操作序列结构
求解器-单调正确性给定 $S$ 输出的 $N_d^*$ 是首个满足约束的点搜索结果 = 全扫结果小规模 $S$ 上全扫验证单调搜索一致
求解器-仿真预算单次求解的 G5 调用次数数十次量级 (远小于全网格上千次)统计求解过程的仿真调用计数
端到端-扫描曲线多个 $S$ (8K / 128K / 1M) 输出 $N^*(S)$曲线单调非降且各点配置可行跑三个 $S$ 核对输出方案满足 SLA

单元测试场景

  • 容量墙:$S = 1\text{M}$、一个 MLA-BF16 量级的 $c_{\text{kv}}$ 档、$L = 61$,核对 $N_d^{\text{cap}} > 1$ (验证 1M 单卡 decode 不可行)。
  • 单调搜索一致性:在 $S = 8\text{K}$ 上对 $N_d \in [1, 8]$ 全扫 TPOT,核对单调搜索找到的首个满足点与全扫最优一致。
  • prefill / decode 通信分流:同一 $S$is_prefill=true 发射 pass-KV、is_prefill=false 发射 pass-Q,断言两者通信操作类型不同。

SLA 口径决策 (经验默认,实现阶段可校准):

  • TPS per batch 口径:采用单序列 50 tokens/s (即 TPOT ≤ 20ms) 作为 decode 子问题 $\eqref{eq:cps-decode-subproblem}$ 的约束默认。实现阶段若改为 batch 总速率口径,按 $\eqref{eq:cps-tps-tpot}$$\text{TPS}_{\text{per-batch}}$ 切换,两者差 batch 倍。
  • prefill TTFT SLA:默认缺省不约束 TTFT,prefill 子问题退化为「求满足容量墙的最小 $N_p$」;TTFT 上限保留为可配置项,设定后按 $\eqref{eq:cps-prefill-subproblem}$ 生效。

附录

附录 A:业界调研

长上下文推理并行策略对比:

系统 / 论文Prefill 策略Decode 策略关键设计
Meta CP (arXiv:2411.01783)Pass-KV (环传)Pass-Q (传 Q + 聚合)prefill/decode 解耦,128×H100 上 405B 达 93% 效率
NVIDIA Helix (arXiv:2507.07120)重设计 sharding面向多百万 token 交互式 decode
DeepSpeed-Ulysses (arXiv:2309.14509)All-to-All 重排 head训练/prefill 为主,需全连接拓扑
Ring Attention (arXiv:2310.01889)KV 环传 + online softmax不直接适配 decode训练/prefill 长序列
vLLM / SGLangChunked prefillTP 切 head;Decode CP 开发中PagedAttention 管 KV

本设计的差异化:Tier6 求解器不是某个推理框架的实现,而是部署方案的评估与搜索器;借 PD 解耦把方案搜索建成两个独立单调子问题,用高保真仿真 (G5) 而非框架实测来扫设计空间。

项目内引用

附录 B:实现说明

实现完成后补充,记录 spec 与实际实现的偏差。本节是 spec 冻结后唯一允许追加的内容,正文不修改。

(待实现阶段填充。)

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

详细设计正文只留概念模型;完整字段与求解器接口待实现阶段细化,以下为契约骨架。

配置契约新增字段 (概念级,非最终命名):

  • prefill CP 并行度 $N_p$
  • decode CP 并行度 $N_d$
  • KV 压缩档 (离散枚举,如 BF16 / FP8)
  • SLA:TTFT 上限、TPS per batch 阈值

求解器接口 (概念级):

  • 输入:上下文长度 $S$、模型标识、芯片型号、SLA、KV 压缩候选档
  • 输出:最少芯片数 $N^*$、配置 $(N_p^*, N_d^*, \text{KV 档})$、对应 TTFT / TPOT
  • 内部:decode 子问题求解 (容量墙剪枝 + 单调搜索)、prefill 子问题求解 (单调搜索)、跨压缩档取最小卡数