Prhub

#34089 [CI] Add Kimi-K3 low-latency performance check

原始 PR 作者 mmangkad 合并时间 2026-08-09 04:42 文件变更 1 提交数 2 评论 3 代码增减 +6 / -2

执行摘要

Kimi-K3 B300 CI 新增低延迟性能阈值检查

该测试原本只用 GSM8K 准确率守护 Kimi-K3 服务配方(低延迟 DSPARK 与 Balanced DCP/HiCache)的模型质量,无法发现“准确率不变但低延迟路径变慢”的性能回退。本 PR 在文档字符串中明确了新增目标:Low Latency recipe 还需保证单请求 decode 性能。PR body 未提供详细背景,以上动机主要依据代码变更推断:引入 SpecDecodingMixin 并声明阈值,是为了让 CI 能在每提交阶段捕获 DSPARK 配置下的解码速度与推测接受长度下降。

值得关注:这是性能保障模式(SpecDecodingMixin + 类属性阈值)在 Kimi-K3 低延迟配方上的落地,可了解 sglang.test.kits.spec_decoding_kit 的断言机制。设计决策是用声明式类属性配置性能门槛,简单可扩展。对维护 K3 性能的工程师有参考价值,但对一般读者只需了解其把关作用即可。

讨论亮点

本 PR 没有实质性的 review 讨论:唯一审核记录是 Fridge003 的 APPROVED,评论为空。值得留意的是作者在 PR 上两次通过 /rerun-test 让 CI 重跑该测试(8-gpu-b300 上均通过),说明在合入前已确认性能断言在目标环境上稳定成立,没有出现阈值过紧导致的偶发失败。

mmangkad:/rerun-test test/registered/models_e2e/test_kimi_k3_b300.py
github-actions[bot]:8-gpu-b300 运行通过 ✅

实现拆解

  1. 引入性能断言能力:在文件头新增 from sglang.test.kits.spec_decoding_kit import SpecDecodingMixin,并将 TestKimiK3B300LowLatency 的继承列表改为 GSM8KMixin, SpecDecodingMixin, CustomTestCaseSpecDecodingMixin 提供与推测解码相关的性能断言工具,是复用既有测试 kit 的标准做法。
  2. 声明性能阈值:在类属性中新增 accept_length_thres = 6.6bs_1_speed_thres = 440。从命名推断,前者用于断言平均接受长度不低于 6.6(反映推测解码有效性),后者用于断言 batch size 1 时解码速度不低于 440 token/s(反映低延迟路径吞吐)。阈值在第二个 commit「Set Kimi-K3 performance thresholds」中确定,说明先跑通检查再定标。
  3. 同步更新模块 docstring:在文件顶部说明中补充“Low Latency recipe 还必须保持单请求 decode 性能”,使测试意图与代码一致。
  4. 测试与 CI 配套:该文件通过 register_cuda_ci(est_time=900, stage="base-c", runner_config="8-gpu-b300") 注册到 B300 8 卡 CI,本 PR 未改动任何 workflow、配置或生产代码。PR 上作者两次发起 /rerun-testtest/registered/models_e2e/test_kimi_k3_b300.py),均在 8-gpu-b300 上通过。
文件 模块 状态 重要度
test/registered/models_e2e/test_kimi_k3_b300.py 性能巡检 modified 4.8

关键符号

TestKimiK3B300LowLatency

关键源码片段

test/registered/models_e2e/test_kimi_k3_b300.py test-coverage

唯一变更文件,为 Kimi-K3 B300 低延迟 DSPARK 测试引入 SpecDecodingMixin 并声明性能阈值,是性能回归检查的核心落地位置。

# 文件: test/registered/models_e2e/test_kimi_k3_b300.py(Kimi-K3 B300 每提交 CI)
# 本 PR 为该类混入 SpecDecodingMixin,并声明性能阈值,用于低延迟 DSPARK 配置的性能回归把关
class TestKimiK3B300LowLatency(GSM8KMixin, SpecDecodingMixin, CustomTestCase):
    """TP8 Low Latency recipe with DSPARK linear ReplaySSM speculation."""
​
    # 质量门槛:GSM8K 200 例准确率不低于 0.95,沿用原有精度守护
    gsm8k_score_threshold = 0.95
    gsm8k_num_examples = 200
​
    # 性能门槛(本次新增):
    # accept_length_thres:DSPARK 平均接受长度应 ≥ 6.6,用于捕获推测解码质量的回退
    # bs_1_speed_thres:batch size 1 单请求解码速度应 ≥ 440 token/s,用于捕获低延迟路径性能回退
    accept_length_thres = 6.6
    bs_1_speed_thres = 440
​
    @classmethod
    def setUpClass(cls):
        # 使用 B300 节点固定快照权重,TP=8 + DSPARK + 线性 ReplaySSM 推测解码
        cls.model = MODEL_PATH
        cls.base_url = DEFAULT_URL_FOR_TEST
        cls.process = popen_launch_server(
            cls.model,
            cls.base_url,
            timeout=SERVER_LAUNCH_TIMEOUT,
            other_args=[
                "--trust-remote-code",
                "--tp-size", "8",
                "--mem-fraction-static", "0.85",
                "--weight-loader-prefetch-checkpoints",
                "--reasoning-parser", "kimi_k3",
                "--tool-call-parser", "kimi_k3",
                "--mamba-full-memory-ratio", "0.86",
                "--speculative-algorithm", "DSPARK",
                "--speculative-draft-model-path", DSPARK_DRAFT_MODEL,
                "--speculative-dspark-block-size", "7",
                "--enable-linear-replayssm-spec",
            ],
        )

评论区精华

K3 B300 CI 运行稳定性验证 other

作者在 PR 上两次发起 /rerun-test,重跑 test/registered/models_e2e/test_kimi_k3_b300.py 在 8-gpu-b300 上的执行;两次均由 github-actions[bot] 回报通过。

结论:性能阈值在目标 CI 环境上验证通过,未发现 flaky 迹象。 · 已解决

风险与影响

风险较低但存在偶发失败隐患:bs_1_speed_thres = 440accept_length_thres = 6.6 是在当前 B300 环境的固定模型快照上标定的阈值;若 CI 节点 GPU 时钟波动、NVLink 状态异常或模型权重快照更新,可能出现误报失败。仅覆盖单一配置:该检查只针对 TP8 + DSPARK + ReplaySSM 的 B300 低延迟配方,对 DCP/HiCache 配方、其他 GPU 规格或非推测解码路径无保护。与 K3 相关改动联动:近期 PR#33764 修复 K3 router GEMM 精度、PR#33981 新增 K3 DSpark MLA verify 内核等改动可能影响该测试的指标表现,阈值需随性能预期调整。

影响范围:仅 CI 测试用例,对生产服务和用户无直接影响。对团队的价值是建立持续性能回归防线,防止低延迟路径静默变慢;对维护 Kimi-K3 的工程师而言,后续涉及 DSPARK、MLA 或 Mamba 相关改动时,本测试会自动提示性能波动。影响程度较小但具有持续防护价值。

性能阈值依赖环境稳定 仅覆盖 B300 单配置 无生产代码变更

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论