执行摘要
- 一句话:修复 MockDSV4ModelRunner 缺少 spec_algorithm 属性
- 推荐动作:值得精读,以理解 mock 对象维护的重要性。建议同步检查其他 mock runner 是否也需要类似修复。
功能与动机
DSpark (#30261) 切换了 DSV4 注意力后端初始化时读取 spec_algorithm 的源,导致所有 dsv4 注意力单元测试(如 test/registered/attention/unittests/dsv4/test_deepseek_v4.py)在构造后端时 AttributeError。该 PR 旨在修复 CI 阻塞。
实现拆解
- 在 python/sglang/test/kits/attention_unittest/attention_methods/dsv4_attention.py 中添加 from sglang.srt.speculative.spec_info import SpeculativeAlgorithm。
- 在 MockDSV4ModelRunner.init 中设置 self.spec_algorithm = SpeculativeAlgorithm.NONE,匹配 DSpark 变更前的行为(server_args.speculative_algorithm is None 等价于 NONE)。
关键文件:
python/sglang/test/kits/attention_unittest/attention_methods/dsv4_attention.py(模块 DSV4 注意力;类别 test;类型 test-coverage): 唯一的变更文件:为 MockDSV4ModelRunner 添加 spec_algorithm 属性及对应 import,修复单元测试崩溃。
关键符号:MockDSV4ModelRunner.init
关键源码片段
python/sglang/test/kits/attention_unittest/attention_methods/dsv4_attention.py
唯一的变更文件:为 MockDSV4ModelRunner 添加 spec_algorithm 属性及对应 import,修复单元测试崩溃。
# 文件 : python/sglang/test/kits/attention_unittest/attention_methods/dsv4_attention.py
# 在文件头部新增 import
from sglang.srt.speculative.spec_info import SpeculativeAlgorithm
class MockDSV4ModelRunner:
def __init__(self, ...):
# ... 其他属性 ...
self.is_draft_worker = False
self.spec_algorithm = SpeculativeAlgorithm.NONE # 新增 : 默认为非推测模式
self._kernel_warmed_up = True
评论区精华
PR 无 review 评论,变更直接合并。
风险与影响
- 风险:低风险。仅影响测试 mock 对象,不涉及生产代码。spec_algorithm 设为 NONE 与 DSpark 变更前行为等价,不会引入回归。
- 影响:修复了所有 dsv4 注意力单元测试的 CI 崩溃,确保后续 PR 可通过这些测试。
- 风险标记:测试基础设施修复
关联脉络
- PR #30261 DSpark: 本 PR 修复 DSpark 引入的回归,DSpark 切换了 spec_algorithm 的读取源。
参与讨论