Prhub

#7173 Revert "[megatron] fix: Qwen3.5 LoRA & MTP support (with Megatron-Bridge) (#5599)"

原始 PR 作者 wuxibin89 合并时间 2026-07-28 15:19 文件变更 8 提交数 1 评论 3 代码增减 +92 / -598

执行摘要

回滚 Qwen3.5 LoRA 与 MTP 支持

PR 标题明确为回滚操作,body 仅说明 'As title.' 从 issue 评论看,社区成员询问回滚原因但未获回复,推测原实现可能存在兼容性问题或不再符合架构方向。

该 PR 本身决策明确(回滚),不包含创新设计。建议关注后续是否有重新实现 Qwen3.5 支持的 PR。对于维护者,如果之前未熟悉 #5599 的改动,可以借此了解被移除的权重同步架构,以便将来改进。

讨论亮点

PR 本身无 review 评论,但 Issue 中有两名社区成员(Junxiao-Zhao 和 Mengyuyang)询问回滚原因,目前未得到作者回复。

实现拆解

  1. verl/workers/rollout/vllm_rollout/utils.py 中,删除了 _map_weight_name_for_vllm_is_leaf_weight_or_bias_name_strip_bridge_base_layer_from_expert_alias_adapt_weight_names_for_model_iter_packed_owner_weight_names_resolve_weight_name_for_vllm_candidate_exists_iter_normalized_base_sync_weights 共 8 个辅助方法,移除约 193 行代码。
  2. verl/utils/megatron_peft_utils.py 中,用新增的 add_base_layer_suffix 函数替换了原有的 add_base_layer_to_nameremove_base_layer_from_nameresolve_base_layer_name 三个函数。add_base_layer_suffix 接受参数名迭代器,根据预定义的 STACKED_PARAMS 列表为指定模块(如 q_proj, k_proj 等)的参数名添加 .base_layer 后缀。同时从 MEGATRON_TO_HF_MODULES 映射中移除了 GDN 相关的 in_projout_proj 条目。
  3. verl/workers/engine/megatron/transformer_impl.py 中,将导入语句从 remove_base_layer_from_name, resolve_base_layer_name 改为 add_base_layer_suffix;在 get_per_tensor_param 方法中,当 non_merge_lora_sync 为 True 时调用 add_base_layer_suffix 对导出的参数名进行转换。
  4. 删除 tests/utils/test_vllm_weight_name_normalization_on_cpu.py 文件(252 行),该文件包含 4 个测试函数,覆盖了权重名称规范化的各种场景。
  5. tests/utils/test_bucketed_weight_transfer.py 中,移除了 test_iter_weights_retains_direct_tensor_until_ack 测试(依赖被删除的 iter_weights 方法),并清理了相关导入(gc, weakref)。
  6. verl/workers/rollout/vllm_rollout/bucketed_weight_transfer.py 中,删除了 iter_weights 方法(28 行),该方法曾被用于逐个产出接收到的权重。
  7. verl/workers/rollout/vllm_rollout/vllm_rollout.py 中移除一行导入,verl/trainer/ppo/v1/trainer_base.py 中调整控制流(+4/-9)。
文件 模块 状态 重要度
verl/workers/rollout/vllm_rollout/utils.py 权重同步 modified 8.81
verl/utils/megatron_peft_utils.py PEFT 工具 modified 8.41
tests/utils/test_vllm_weight_name_normalization_on_cpu.py 权重测试 removed 7.91
tests/utils/test_bucketed_weight_transfer.py 传输测试 modified 6.81
verl/workers/rollout/vllm_rollout/bucketed_weight_transfer.py 分桶传输 modified 6.93
verl/workers/engine/megatron/transformer_impl.py Megatron 引擎 modified 6.13
verl/trainer/ppo/v1/trainer_base.py 训练器 modified 5.59
verl/workers/rollout/vllm_rollout/vllm_rollout.py Rollout modified 4.18

关键符号

_map_weight_name_for_vllm _is_leaf_weight_or_bias_name _strip_bridge_base_layer_from_expert_alias _adapt_weight_names_for_model _iter_packed_owner_weight_names _resolve_weight_name_for_vllm _candidate_exists _iter_normalized_base_sync_weights add_base_layer_to_name remove_base_layer_from_name add_base_layer_suffix resolve_base_layer_name iter_weights test_normalize_base_sync_weight_names_preserves_expert_logical_aliases test_iter_weights_retains_direct_tensor_until_ack

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

回滚原因询问 question

社区成员 Junxiao-Zhao 和 Mengyuyang 在 Issue 中询问回滚原因。

结论:未获回复,原因不明。 · unresolved

风险与影响

主要风险是移除了对 Qwen3.5 LoRA 和 MTP 的支持,依赖这些功能的用户将无法正常工作。但 revert 回的是一个已知稳定的基线,对于不使用这些新功能的用户没有风险。另外,因为改动全部属于删除,不会引入新的 bug。

影响范围:特定于使用 Megatron 引擎训练 Qwen3.5 模型并启用 LoRA 或 MTP 的用户。系统其他部分不受影响。团队需要重新评估该功能的实现方案。

功能移除 动机不明

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论