Prhub

#7036 [ci] chrore: fix veomni ci

原始 PR 作者 wuxibin89 合并时间 2026-07-14 11:09 文件变更 1 提交数 1 评论 0 代码增减 +2 / -2

执行摘要

修复 VeOmni CI 测试中 MoE 处理函数获取失败问题

修复 VeOmni CI 失败问题。原代码直接使用字典键访问,在配置不匹配时导致 KeyError,通过引入默认处理器提供更健壮的 fallback 机制。

PR 内容明确,改动简单且正确,建议合并。可作为理解 VeOmni MoE 参数处理机制的小案例阅读。

讨论亮点

无人工 review 评论。Gemini Code Assist 机器人自动评论仅说明本次变更内容及自身服务下线通知,未涉及技术讨论。

实现拆解

仅修改了一个测试文件:

  1. 增加导入:在 verl/workers/engine/veomni/utils 导入中新增 default_moe_param_handler 符号。
  2. 替换字典访问:将 MOE_PARAM_HANDERS["qwen3_5_moe"] 改为 MOE_PARAM_HANDERS.get("qwen3_5_moe", default_moe_param_handler),使得当键不存在时使用默认处理器,避免 KeyError。
文件 模块 状态 重要度
tests/utils/veomni/test_special_export_unfused_experts.py 测试 modified 3.76

关键符号

get_per_tensor_param test_veomni_export_unfused_experts

关键源码片段

tests/utils/veomni/test_special_export_unfused_experts.py test-coverage

测试文件,修复了 VeOmni CI 的 KeyError 问题。

# tests/utils/veomni/test_special_export_unfused_experts.py
# 修改了导入和字典访问方式,添加 fallback 避免 KeyErrorfrom verl.workers.engine.veomni.utils import MOE_PARAM_HANDERS, default_moe_param_handlerdef get_per_tensor_param(model, device_mesh):
    ep_rank, ep_size, ep_group = (
        device_mesh["ep"].get_local_rank(),
        device_mesh["ep"].size(),
        device_mesh["ep"].get_group(),
    )
    # 使用 .get() 并指定 fallback 处理器,防止配置键缺失时 KeyError
    process_func = MOE_PARAM_HANDERS.get("qwen3_5_moe", default_moe_param_handler)
    for name, param in model.named_parameters():
        if not isinstance(param, DTensor):
            continue
        unsharded_tensor = param.full_tensor()
        buffer = torch.empty_like(unsharded_tensor)
        for src_ep_rank in range(ep_size):
            tensor = unsharded_tensor if src_ep_rank == ep_rank else buffer
            torch.distributed.broadcast(tensor, group_src=src_ep_rank, group=ep_group)
            yield from process_func(name, tensor, ep_rank=src_ep_rank)

评论区精华

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

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

风险与影响

风险极低。变更仅涉及测试文件中的两行代码,且为添加 fallback 行为,不会影响生产逻辑。若 MOE_PARAM_HANDERS 中不存在对应键时,使用 default_moe_param_handler 可能导致与预期不同的处理行为,但测试原本就会因 KeyError 失败,因此这是一种改进。

直接影响 VeOmni 相关 CI 测试的稳定性,使测试在配置键缺失时不会崩溃,而是使用默认处理器继续执行。对用户和系统无影响。

测试文件变更

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论