Prhub

#21192 Fix CP in-seq-split method for DeepSeek V32 and update related tests

sgl-project/sglang · 作者 Fridge003 · 合并时间 2026-03-24 03:34

分析状态 已生成
文件变更 7提交数 3 · 评论 11
代码增减 +162 / -97
bugfix test refactor

执行摘要

修复 DeepSeek V3.2 上下文并行中 in-seq-split 方法的计算错误并标准化测试。

根据 PR body 和 review,动机是修复 CP in-seq-split 方法中的错误,具体在 server_args.py 中 attn_cp_size 的计算逻辑错误,以及移除 V32-Exp 实验模型,使用官方模型进行测试。

建议工程师精读 server_args.py 的修改,了解上下文并行计算逻辑;测试重构部分可作为测试迁移的参考。

讨论亮点

review 中仅有一个评论来自 gemini-code-assist[bot],建议在测试文件中重命名变量以保持一致性;该建议已被采纳或考虑,无其他争议点,讨论状态为已解决。

实现拆解

实现主要包括三个部分:1) 在 python/sglang/srt/server_args.py 中,修改 _handle_model_specific_adjustments 方法,将 attn_cp_size 从 self.tp_size 改为 self.tp_size // self.dp_size。2) 更新多个测试文件,将模型路径从 'DeepSeek-V3.2-Exp' 替换为 'DeepSeek-V3.2'。3) 重组测试结构,移除旧测试文件 test/registered/8-gpu-models/test_deepseek_v32_cp_single_node.py,并添加新测试文件 test/registered/cp/test_deepseek_v32_cp_single_node.py 到 cp 文件夹。

文件 模块 状态 重要度
python/sglang/srt/server_args.py srt/server_args modified 8.0
test/registered/8-gpu-models/test_deepseek_v32_cp_single_node.py test/registered removed 4.0
test/registered/cp/test_deepseek_v32_cp_single_node.py test/registered/cp added 5.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

关键符号

_handle_model_specific_adjustments

评论区精华

测试变量重命名建议 style

gemini-code-assist[bot] 建议重命名变量 DEEPSEEK_V32_EXP_MODEL_PATH 以保持与其他测试文件的一致性

结论:PR 已修改,可能采纳了建议,无后续争议 · 已解决

风险与影响

风险较低。主要风险是 attn_cp_size 计算错误可能导致上下文并行效率下降或推理错误,但修复后应恢复正常;测试更新可能引入新错误,但 CI 测试覆盖了相关场景;兼容性方面,移除实验模型依赖,对现有用户无影响。

对用户:使用 DeepSeek V3.2 进行上下文并行推理的用户将受益于修复后的正确计算。对系统:仅影响特定模型和并行模式,性能可能提升。对团队:测试环境更标准化,减少维护实验模型的开销。

attn_cp_size 计算错误修复 测试路径更新

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

执行摘要

本 PR 修复了 DeepSeek V3.2 模型在上下文并行模式下 in-seq-split 方法的计算错误,通过调整 attn_cp_size 计算并更新测试使用官方模型,提升推理准确性和测试环境一致性。

功能与动机

动机源于修复 CP in-seq-split 方法中的 attn_cp_size 计算错误。根据 PR body,目标是修复 in-seq-split for CP of V32,并移除实验性模型引用,使用官方 DeepSeek-V3.2 进行测试,以提高测试可靠性和维护性。

实现拆解

主要改动点:

  1. 核心计算修复:在 python/sglang/srt/server_args.py_handle_model_specific_adjustments 方法中,将 self.attn_cp_size = self.tp_size 改为 self.attn_cp_size = self.tp_size // self.dp_size,修复了当数据并行启用时的计算错误。
  2. 测试路径更新:多个测试文件(如 test/manual/nightly/test_deepseek_v32_perf.pytest/registered/8-gpu-models/test_deepseek_v32_basic.py 等)将模型路径从 "deepseek-ai/DeepSeek-V3.2-Exp" 替换为 "deepseek-ai/DeepSeek-V3.2",统一使用官方模型版本。
  3. 测试重组:移除 test/registered/8-gpu-models/test_deepseek_v32_cp_single_node.py,并新增 test/registered/cp/test_deepseek_v32_cp_single_node.py,将 CP 测试迁移到 cp 文件夹并标记为 pr-test,优化测试组织。

评论区精华

review 中仅有一个评论来自 gemini-code-assist[bot]:

"The model path now points to the non-experimental DeepSeek-V3.2 model. For clarity and consistency with other test files, consider renaming the variable DEEPSEEK_V32_EXP_MODEL_PATH to DEEPSEEK_V32_MODEL_PATH and updating its usages in this file."
讨论焦点是代码风格一致性,无争议点,状态为已解决,PR 已合并。

风险与影响

风险:attn_cp_size 计算错误可能导致上下文并行效率降低或推理错误;测试路径更新可能意外引入依赖问题,但 CI 测试覆盖确保正确性。
影响:对使用 DeepSeek V3.2 进行 CP 推理的用户,修复后准确性提升;系统层面仅影响特定模型模式;团队测试环境更标准化,减少维护实验模型的开销。

关联脉络

与历史 PR #21170 "Fix CP residual size mismatch crash when tp_size == attn_cp_size" 相关,两者都针对上下文并行(CP)的 bugfix,显示团队在持续优化并行计算逻辑。

参与讨论