随着大语言模型(LLM)长上下文推理需求飙升至 128K Tokens,首字延迟(TTFT)和显存压力已成为制约工业化落地的核心瓶颈。在处理数万字的法律合同或长篇技术手册时,过高的 TTFT 往往让用户面临漫长的等待。
2025 年 12 月 23 日,SGLang 社区官方宣布:百度百舸 AIAK 团队为 DeepSeek V3.2 开发的上下文并行(Context Parallelism, CP)方案已正式合入 SGLang 主分支。实测数据显示,该方案在 32K 序列长度下实现了高达 80% 的 TTFT 降幅,成功将长文本推理推向秒级响应时代。
开源代码地址:
1. DSA 架构的挑战与并行策略的进化
在超长上下文应用场景中,DeepSeek V3.2 引入了 DSA (DeepSeek Sparse Attention) 架构。这一架构旨在通过算法创新降低计算复杂度,但在工程落地中,传统的并行策略遇到了冲突。
传统策略:TP + SP 加速长序列的原理
在 DeepSeek V3.2 出现之前,张量并行(TP)与序列并行(SP) 的组合是加速长文本推理的行业标准方案:
TP 解决计算瓶颈: 通过沿隐藏层维度H切分权重,将大规模矩阵乘法分摊至多张 GPU,是降低首字延迟(TTFT)的关键手段。
SP 解决显存瓶颈: 沿序列长度维度L切分激活值(如 KV Cache),有效避免长序列导致的显存溢出(OOM)。
DSA 的核心机制:打破O(L^2)限制
传统注意力机制的计算量随序列长度平方级增长(O(L^2))。在 128K 级别的超长序列场景下,这种二次方的增长使得推理时间过长。DeepSeek V3.2 通过 DSA 架构中的 Indexer(索引器) 机制打破了这一限制:
工作原理:Indexer 为每一个 Query Token 快速筛选出全量序列中最相关的 Top-K 个 Key Token。
复杂度优化: 将注意力计算的复杂度从O(L^2)优化为近乎线性的O(L·K),使 128K 长度的推理在理论上成为可能。
DSA 部署面临的工程难题
尽管有了 Indexer 的稀疏化优化,单张 GPU 在面对 128K 序列时仍不堪重负:
单卡压力的延续: QKV 投影计算(O(L)级别)及 Indexer 筛选过程(涉及近似O(L^2)的负荷)在 128K 长度下已是单张 GPU 难以独立完成的任务。
TP 与 Indexer 的冲突:Indexer 模块在计算相关性时需要在H轴执行聚合(Reduce Sum)。如果采用 TP 切分H轴,会引发高频且昂贵的 AllReduce 通信开销。这种开销会抵消 TP 的计算加速收益,导致整体性能下降。
因此,Context Parallelism (CP) 成为破解这一难题的关键:它避开了对H轴的切分,转而沿序列长度L维度进行任务分摊。
2. CP 核心原理:计算分摊与负载均衡
百度百舸设计的 CP 方案通过切分输入数据,从根本上分摊了每张 GPU 的计算与显存压力。
计算分摊与 TTFT 缩减
CP 策略将输入序列沿着L维度切分成N份(N为并行度/CP 大小),让多张卡共同协作处理一个请求。如架构图所示,通过cp_split_tokens模块,每个 Rank 只接收1/N的 Query 片段。
这直接将 QKV 投影计算量和 Indexer 的O(L^2)筛选负荷分摊给N张卡,将单卡计算量降至O(L^2/P)级别,实现了近线性的 TTFT 缩减
2N块重排负载均衡
由于因果注意力机制的特性,序列不同位置的 Token 计算量并不均等。为解决此问题,方案引入了负载均衡序列切分(Load-balanced sequence splitting):
重排逻辑: 将 Hidden States 精细划分为2N个子块。
首尾配对: 采用「首尾配对」方式重新组合(例如 Rank 0 处理b_1和b_2N块)。这确保了各 Rank 承担的计算负荷高度一致,显著压低整体 TTFT。
3. 深度解析:高效混合并行流水线
该方案不仅是简单的切分,而是一套与 DeepSeek 特色架构(如 MLA、MoE)深度融合的精密流水线。
根据架构图,数据在系统中的流动遵循以下高效路径:
数据切分和重排: 经过 Embedding 后,cp_split_tokens将 Token 序列进行2N负载均衡重排并分发至各并行 Rank。
层内计算与局部投影(图中qkv_a_atten_tp1):TP 大小设为 1,每个 Rank 仅负责计算本地1/N长度的局部Q_i和K_i,V_i,大幅缩短了 TTFT,规避了 AllReduce 开销。
全局 KV 聚合与顺序恢复:进入 attention 计算前,所有 Rank 的K_i和V_i片段通过 AllGather 集合通信,聚合为完整的K_full,V_full。其中 rerange 操作将负载均衡导致的乱序片段重新校准回正确的逻辑顺序。这使得每张 GPU 在做 Attention 计算时,依然拥有超长序列的「全局视野」,使得模型输出与单机方案完全一致。
核心计算(图中 Attention 内部流程)
Indexer 筛选(对应Indexer_prepare): Indexer 模块利用本地Q_i与全量的K_full进行相关性评估,为每个 Query Token 筛选出全量序列中最相关的 Top-K 个 Key 位置索引。
稀疏 Attention 计算(对应MLA_prepare与核心算子):Attention 算子根据筛选出的 Top-K 索引,从全量的 K_full,V_full 中提取对应的 token 向量,与本地 Q_i 进行极低 FLOPs 的稀疏矩阵乘法。
专家并行协同: FFN 阶段采用moe_dense_tp1并结合Deep_EP(专家并行),实现与 CP 的高效协同。
最终输出聚合: 在完成 61 层计算后,执行hidden_states_allgather_rerange,确保每个 Rank 最终持有完整的 Hidden States 并由logits_processor输出。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |