执行摘要
修复 VeOmni CI 测试中 MoE 处理函数获取失败问题
修复 VeOmni CI 失败问题。原代码直接使用字典键访问,在配置不匹配时导致 KeyError,通过引入默认处理器提供更健壮的 fallback 机制。
PR 内容明确,改动简单且正确,建议合并。可作为理解 VeOmni MoE 参数处理机制的小案例阅读。
无人工 review 评论。Gemini Code Assist 机器人自动评论仅说明本次变更内容及自身服务下线通知,未涉及技术讨论。
修复 VeOmni CI 失败问题。原代码直接使用字典键访问,在配置不匹配时导致 KeyError,通过引入默认处理器提供更健壮的 fallback 机制。
PR 内容明确,改动简单且正确,建议合并。可作为理解 VeOmni MoE 参数处理机制的小案例阅读。
无人工 review 评论。Gemini Code Assist 机器人自动评论仅说明本次变更内容及自身服务下线通知,未涉及技术讨论。
仅修改了一个测试文件:
verl/workers/engine/veomni/utils 导入中新增 default_moe_param_handler 符号。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 |
tests/utils/veomni/test_special_export_unfused_experts.py
test-coverage
测试文件,修复了 VeOmni CI 的 KeyError 问题。
# tests/utils/veomni/test_special_export_unfused_experts.py
# 修改了导入和字典访问方式,添加 fallback 避免 KeyError
from verl.workers.engine.veomni.utils import MOE_PARAM_HANDERS, default_moe_param_handler
def 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 链接,后续同步到相关引用后会出现在这里。
参与讨论