系列:推理系统基础设施手记

推理系统基础设施手记(七):DCP —— 解码上下文并行,把 KV 缓存沿序列维度分片

0. 一句话主线

在长上下文场景里,Decode 阶段的瓶颈不是算力而是 KV 缓存在各卡间的冗余复制。DCP(Decode Context Parallelism,解码上下文并行)把 KV 缓存沿序列长度维度分片到不同 GPU,并用 Scratch Buffer 复用做集合通信——既省显存,又降通信延迟,端到端吞吐最高可提升 1.5%~4%。本篇把它和本系列前面的 HiCache(sys1)、HiSparse(sys6)、P/D 分离串起来。

1. 为什么需要 DCP:Decode 阶段的 KV 墙

标准张量并行(TP)下,每一层注意力要把 KV 缓存放到参与该层的每张卡上。序列越长,KV 越大,而 TP 沿隐藏维度切分、并不切序列维度,于是:

Decode 是逐 token 生成、计算强度低但访存密集,所以 KV 的”存得下、取得快”比矩阵算力更关键。DCP 正是冲着这一点来的。

2. 核心机制:KV 沿序列维度分片

DCP 把 KV 缓存从”每卡全量复制”改成”每卡只存自己那段”:

TP 切分:KV 在 hidden 维复制 → 每卡一份全序列 KV(冗余)
DCP 切分:KV 在 sequence 维分片 → 每卡只存 [start:end] 这一段(无冗余)

3. 通信优化:复用 Scratch Buffer

分片带来的代价是 Decode 每步都要跨卡通信。DCP 的关键工程技巧是**复用 Scratch Buffer(临时缓冲区)**执行 all_gather / reduce_scatter 等集合通信:

4. 影响的解码与预填充环节

DCP 不只改 Decode,也触达预处理:

5. 收益场景与协同特性

DCP 的价值在以下场景最突出:

6. 和本系列其他优化的位置

优化解决什么维度
HiCache(sys1)Host KV 放哪个 NUMA 节点、NIC 怎么一起看硬件拓扑/数据链路
HiSparse(sys6)HBM 当缓存、主机 DRAM 存全量 KV、GPU 只留热槽分层缓存(容量墙)
DCP(sys7)KV 沿序列维度分片 + Scratch Buffer 通信并行分片(冗余/通信墙)
P/D 分离Prefill 与 Decode 实例解耦架构拆分

三者是互补视角:HiCache 管”放哪”,HiSparse 管”留多少”,DCP 管”怎么并行切”。

7. ⚠️ 术语消歧:DCP 的三义

在高性能推理框架(vLLM / SGLang)语境下,DCP 几乎总是指 Decode Context Parallelism(解码上下文并行)。但在别处它也可能指:

写文/读论文时先确认语境,别把”并行分片”和”提示压缩/视觉剪枝”混为一谈。

8. 小结

DCP 是长上下文 Decode 的显存/通信优化:KV 沿序列维度分片消除冗余复制,Scratch Buffer 复用压低通信延迟,与 Prefix Caching、推测解码、P/D 分离天然协同。它和 HiSparse、HiCache 一起,构成”长上下文服务三件套”的不同切面——容量墙、数据链路、并行分片。

注:本篇基于 2026-09-08 用户提供的 DCP 技术说明整理成系统条目,吞吐量 1.5%~4% 为框架实测区间,实际收益随序列长度/批大小/通信拓扑变化。

觉得有用?欢迎点赞、收藏,或请作者喝咖啡 ☕️

支付宝收款码

支付宝

微信收款码

微信

💬 留言

评论由 Giscus 驱动(基于 GitHub Discussions)。 当前仓库 NaphJohn/LLM-blog 尚未启用 Discussions:请在 GitHub 仓库 Settings → General → Features 勾选 Discussions 后刷新本页,评论区即自动显示。