Prhub

#23303 [CI][MLA] Enable deterministic inference for MGSM MLA FP8 test

原始 PR 作者 fortunecookiee 合并时间 2026-04-21 13:26 文件变更 1 提交数 1 评论 5 代码增减 +8 / -0

执行摘要

为 MLA FP8 测试启用确定性推理,消除 MGSM-EN 分数波动导致的 CI 不稳定。

PR body明确指出,test/registered/mla/test_mla_fp8.py::TestMLA::test_mgsm_en测试在0.8阈值处不稳定,例如一次失败运行得分为0.784,低于阈值约1.6个百分点。根本原因是FP8 KV缓存反量化引入的每令牌数值噪声和DeepSeek-V2-Lite的MoE专家路由中相同logits可能选择不同专家,两者结合导致MGSM-EN分数在1-3点范围内波动,跨越0.8阈值,造成CI随机失败。

该PR是典型的测试稳定性修复,值得快速浏览以了解FP8和MoE模型中的非确定性来源及如何通过现有标志解决。关注点在于PR body中详细分析的根因(FP8反量化噪声和MoE专家路由非确定性)以及--enable-deterministic-inference标志的端到端支持机制。

讨论亮点

review评论中没有实质性技术讨论,只有自动化标签和重跑CI的指令。PR body本身包含了详细的动机、修改和影响分析,相当于自包含的设计文档。

实现拆解

  1. 测试配置调整:修改test/registered/mla/test_mla_fp8.py文件,在TestMLA.setUpClass方法的other_args列表中添加--enable-deterministic-inference标志。
  2. 标志作用机制:该标志在server_args.py中已实现端到端支持,它会自动选择兼容的注意力后端(Hopper上为fa3,Blackwell上为triton),将采样后端固定为pytorch,并禁用分段CUDA图。
  3. 测试策略不变:保持mgsm_en_score_threshold = 0.8阈值不变,因为启用确定性推理后分数将固定为(模型、权重、CUDA堆栈)的函数,如果固定分数低于0.8,后续PR可基于实测值调整阈值。
  4. 性能影响评估:PR body提到,禁用分段CUDA图和强制pytorch采样后端的开销很小,因为测试仅针对小模型运行250个问题单线程,且之前运行的总延迟14.915秒远低于预算106秒。
文件 模块 状态 重要度
test/registered/mla/test_mla_fp8.py MLA 测试 modified 4.03

关键符号

TestMLA.setUpClass

关键源码片段

test/registered/mla/test_mla_fp8.py test-coverage

唯一修改的文件,在 MLA FP8 测试的服务器启动参数中添加了 `--enable-deterministic-inference` 标志,直接解决 CI 不稳定问题。

@classmethod
def setUpClass(cls):
    cls.model = DEFAULT_MLA_FP8_MODEL_NAME_FOR_TEST
    cls.base_url = DEFAULT_URL_FOR_TEST
    cls.process = popen_launch_server(
        cls.model,
        cls.base_url,
        timeout=DEFAULT_TIMEOUT_FOR_SERVER_LAUNCH,
        other_args=[
            "--trust-remote-code",
            "--kv-cache-dtype",
            "fp8_e5m2",
            # 固定 MoE 专家分配和内核归约顺序,防止 MGSM 分数在多次运行中漂移。
            # 评估已使用贪婪解码,但 FP8 反量化 + 非确定性 MoE top-k 平局打破
            # 在没有此标志时会产生约 1-3 点的波动,并跨越 0.8 阈值。
            # 启用确定性推理后,分数变为(模型、权重、CUDA 堆栈)的固定函数,
            # 因此阈值边缘的随机失败不再是随机噪声。
            "--enable-deterministic-inference",
        ],
    )

评论区精华

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

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

风险与影响

  1. 性能风险:启用确定性推理会禁用分段CUDA图并强制使用pytorch采样后端,可能轻微增加推理延迟,但PR body评估开销很小,且测试时间预算充足。
  2. 测试覆盖风险:如果确定性推理本身有bug或未完全覆盖非确定性场景,可能掩盖实际生产环境中的问题,但这是测试配置调整,不影响生产代码。
  3. 阈值风险:保持0.8阈值不变,如果启用确定性推理后固定分数低于0.8,测试将失败,需要后续PR调整阈值,但这是预期策略。
  1. 对CI稳定性:显著提升,消除MGSM-EN分数波动导致的随机失败,使测试结果可复现。
  2. 对用户:无直接影响,这是内部测试配置变更。
  3. 对系统:无功能变更,仅影响测试环境的行为。
  4. 对团队:减少CI噪音,提高开发效率,但需注意确定性推理可能轻微增加测试时间。
测试性能轻微影响 阈值可能需后续调整

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论