Prhub

#38315 [CI] Fix stale ServerArgs fake in chunked-SGMV LoRA test

原始 PR 作者 mmangkad 合并时间 2026-09-07 19:25 文件变更 1 提交数 1 评论 1 代码增减 +37 / -34

执行摘要

修复 chunked-SGMV LoRA 测试中过时的 ServerArgs 模拟对象,确保测试配置与生产路径一致。

根据 PR body 描述,变更动机是修复因 #38049 引入的实现变更(ChunkedSgmvLoRABackend 开始读取 get_lora().max_lora_chunk_size)而导致的 base-b-kernel-unit 测试失败。测试中先前使用 type("ServerArgs", (), {"max_lora_chunk_size": 16}) 创建的模拟对象已与新的生产代码不兼容。

这是一个必要的测试修复,对于维护 CI 健康和确保 LoRA 功能正确性有价值。建议精读,以理解 #38049 引入的变更如何影响测试,以及 override_server_args 上下文管理器的正确用法。

讨论亮点

PR body 中直接引用了关联 PR #38049 作为变更原因。Issue 评论仅包含 /tag-and-rerun-ci 命令,表明测试失败是触发修复的直接原因。没有发现关于实现方案或设计权衡的讨论。

实现拆解

  1. 引入运行时上下文:在测试文件 test/registered/kernels/ops/gemm/test_chunked_sgmv_cuda_graph.py 中新增 from sglang.srt.runtime_context import get_context 导入,以访问全局运行时上下文。
  2. 替换模拟 ServerArgs:在 test_prepare_batch_neutralizes_static_tail_segments 函数中,将原来动态创建的模拟 ServerArgs 类(type("ServerArgs", (), {"max_lora_chunk_size": 16}))替换为使用 get_context().override_server_args(max_lora_chunk_size=16) as server_args 上下文管理器。
  3. 调整代码结构:将 ChunkedSgmvLoRABackend 的初始化及其后续的 prepare_lora_batch 调用移动到 with 代码块内部,确保在正确的上下文作用域内执行。
  4. 保持断言不变:测试的核心断言逻辑(检查 num_segments、weight_indices 和 seg_indptr)未作修改,表明此修复仅关注测试配置的正确性,而非测试逻辑本身。
文件 模块 状态 重要度
test/registered/kernels/ops/gemm/test_chunked_sgmv_cuda_graph.py 测试用例 modified 5.82

关键符号

test_prepare_batch_neutralizes_static_tail_segments

关键源码片段

test/registered/kernels/ops/gemm/test_chunked_sgmv_cuda_graph.py test-coverage

这是唯一变更的文件,包含了修复测试配置的核心逻辑。它直接关联到 `ChunkedSgmvLoRABackend` 在 CUDA Graph 模式下的正确性验证。

# 变更前:使用 type() 动态创建一个模拟的 ServerArgs 类实例
server_args = type("ServerArgs", (), {"max_lora_chunk_size": 16})
backend = ChunkedSgmvLoRABackend(
    max_loras_per_batch=NUM_LORAS,
    device=torch.device("cuda"),
    server_args=server_args,
)
​
# 变更后:使用运行时上下文管理器获取与生产环境一致的配置
# 这确保了 ChunkedSgmvLoRABackend 在读取 max_lora_chunk_size 时能获得正确值
with get_context().override_server_args(max_lora_chunk_size=16) as server_args:
    backend = ChunkedSgmvLoRABackend(
        max_loras_per_batch=NUM_LORAS,
        device=torch.device("cuda"),
        server_args=server_args,
    )
    backend.init_cuda_graph_batch_info(
        max_bs_in_cuda_graph=BS, num_tokens_per_req=1
    )

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险较低。变更仅限于一个测试文件,不涉及生产代码。主要风险是如果 get_context().override_server_args 的行为与测试期望的 ServerArgs 模拟对象不一致,可能导致测试逻辑失效。但鉴于 PR 的目的是修复测试,且断言未变,此风险可控。

影响范围局限于 CI 测试套件。具体影响是修复 base-b-kernel-unit 测试阶段的失败,确保与 LoRA 和 CUDA Graph 相关的内核单元测试能正常运行。对生产环境无直接影响。

测试配置依赖运行时上下文

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论