Prhub

#50266 [CI] KimiLinear PD in nightlies

原始 PR 作者 NickLucche 合并时间 2026-08-03 20:20 文件变更 2 提交数 6 评论 0 代码增减 +24 / -2

执行摘要

新增 Kimi-Linear 48B 的 P/D 夜间回归测试到 CI

PR body 明确说明:"Follow up to https://github.com/vllm-project/vllm/pull/49762 to cover Kimi KDA disagg on CI. moonshotai/Kimi-Linear-48B-A3B-Instruct is still a bit too big to run on each PR, so I am adding it to nightlies as a fast proxy to track K3 P/D." 也就是在 CI 中覆盖 Kimi KDA 分离推理场景,用 Kimi-Linear 作为跟踪 K3 P/D 的轻量代理。

值得 CI/可靠性团队精读,了解如何用较小模型(Kimi-Linear)作为大模型(K3)的回归代理,以及如何通过 TP/DP/EP 组合适配大权重显存限制。对普通功能开发者价值有限,核心 vLLM 逻辑无改动,不需要深读。

讨论亮点

该 PR 没有实质 review 讨论。claude[bot] 因 fork 自动评审被禁用,仅提示 maintainer 可手动触发 @claude review;ZJY0516 直接批准。真正的技术决策体现在提交历史中:为适配 48B 权重在 H200 上的显存限制,作者先后加入 cache mode、max-model-len 上限、4 GPU 分片和 DS 布局等调整,这些迭代比 review 评论更能反映设计权衡。

实现拆解

实现步骤

  1. 新增夜间测试步骤:在 .buildkite/test_areas/disaggregated.yaml 的 DSv4-Flash 步骤后追加 Kimi-Linear-48B-A3B Disaggregated DP EP 步骤,配置 device: h200num_devices: 4optional: true,设置 PREFILLER_TP_SIZE: "2"DECODER_TP_SIZE: "2"DP_EP: "1",并在 VLLM_SERVE_EXTRA_ARGS 中加入 --trust-remote-code--mamba-cache-mode align--max-model-len 32768,以适配 Kimi-Linear 的 SSM 状态缓存和远程代码模型。
  2. 适配精度评估脚本:在 tests/v1/kv_connector/nixl_integration/test_accuracy.pytest_accuracy() 中,为 lm_eval 的本地 chat/completions 和 completions 两条路径都补充 trust_remote_code=True,并修正第一处参数拼写(tokenizer_backend=huggingface 后补逗号),保证带远程代码的模型能被 lm_eval 正常加载和评分。
  3. 资源约束与参数取舍:Kimi-Linear-48B 的 bf16 权重约 92GiB,单块 H200 (140GiB) 无法容纳;提交历史显示作者最终采用 Prefill TP2 + Decode DP2/EP 的 4 卡组合,并设置 GPU_MEMORY_UTILIZATION: "0.9",避免 profiling 阶段出现负 KV cache。步骤标记 optional: true 避免阻塞主流水线。
  4. 测试配套:本 PR 不新增单元测试,仅扩展夜间集成测试;后续由 run_accuracy_test.sh 驱动端到端请求与 lm_eval 指标断言,若 EXPECTED_VALUES 中无对应模型则跳过精度检查。
文件 模块 状态 重要度
.buildkite/test_areas/disaggregated.yaml CI 作业 modified 4.25
tests/v1/kv_connector/nixl_integration/test_accuracy.py 评测脚本 modified 4.19

关键符号

test_accuracy

关键源码片段

tests/v1/kv_connector/nixl_integration/test_accuracy.py test-coverage

修改精度测试脚本,为 lm_eval 添加 trust_remote_code,使远程代码模型可被评估。

def test_accuracy():
    """端到端精度测试:先验证基础请求,再用 lm_eval 检查指标。"""
    run_simple_prompt() # 基础可用性检查
​
    if "gemma-4" in MODEL_NAME:
        # Gemma-4 对 chat template 敏感,改用 chat completions 通道评估
        model_args = (
            f"model={MODEL_NAME},"
            f"base_url={BASE_URL}/chat/completions,"
            f"num_concurrent={NUM_CONCURRENT},"
            "tokenizer_backend=huggingface,"
            "trust_remote_code=True" # 本仓库模型依赖远程代码执行
        )
        results = lm_eval.simple_evaluate(
            model="local-chat-completions",
            model_args=model_args,
            tasks=TASK,
            num_fewshot=5,
            apply_chat_template=True,
        )
    else:
        model_args = (
            f"model={MODEL_NAME},"
            f"base_url={BASE_URL}/completions,"
            f"num_concurrent={NUM_CONCURRENT},tokenized_requests=False,"
            "trust_remote_code=True"
        )
        results = lm_eval.simple_evaluate(
            model="local-completions",
            model_args=model_args,
            tasks=TASK,
        )
​
    measured_value = results["results"][TASK][FILTER]
    expected_value = EXPECTED_VALUES.get(MODEL_NAME)
​
    print(f"Measured accuracy value: {measured_value}\n")
    if expected_value is None:
        print(
            f"Warning: No expected value found for {MODEL_NAME}. "
            "Skipping accuracy check."
        )
        return
​
    assert (
        measured_value - RTOL < expected_value
        and measured_value + RTOL > expected_value
    ), f"Expected: {expected_value} | Measured: {measured_value}"

评论区精华

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

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

风险与影响

  • 外部模型依赖:MODEL_NAMES 指向 moonshotai/Kimi-Linear-48B-A3B-Instruct,并启用了 --trust-remote-code,若模型仓库被篡改会直接影响夜间测试环境,属于供应链风险。
  • 资源占用:每轮夜间测试需要 4 块 H200,持续 60 分钟,会增加 GPU 资源和队列时间;若与其他 nightly 任务并发,可能造成资源争抢。
  • 精度断言脆弱:test_accuracy.py 依赖 EXPECTED_VALUES 中的阈值,新模型没有基准值时会打印 warning 并跳过检查,可能让测试"通过"但并未真正校验精度。
  • 配置耦合:VLLM_SSM_CONV_STATE_LAYOUT=DS--mamba-cache-mode align 等参数是 Kimi-Linear 特有,模型升级或 vLLM 侧 SSM 布局变化后,该步骤可能悄悄失效。

对用户无直接影响,仅 CI 流水线变化。夜间测试覆盖新增 Kimi KDA P/D 场景,能在 vLLM 主仓库内持续跟踪 K3 式模型的分离推理回归。团队需要维护 nightly 环境中的 H200 配额和外部模型可用性;测试是 optional,不会阻塞 PR 合入,但会增加夜间队列的资源和时间消耗。

外部模型依赖 信任远程代码 夜间资源消耗

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论