执行摘要
此 PR 回滚了之前合并的 #5599,移除了对 Qwen3.5 模型的 LoRA 微调和 MTP 推测解码支持。核心变更为删除 vLLM rollout 中的权重名称规范化函数、替换 Megatron PEFT 工具中的 base_layer 处理逻辑、移除相关测试。Revert 到合并前的稳定状态,对不使用相关功能的用户无影响。
功能与动机
PR 标题和 body 信息很少,仅声明回滚。从 Issue 评论可见社区成员对回滚原因感兴趣但未获解释。可能原实现存在兼容性或稳定性问题,或与当前架构方向不一致。
实现拆解
- 在
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 行代码。
- 在
verl/utils/megatron_peft_utils.py 中,用新增的 add_base_layer_suffix 函数替换了原有的 add_base_layer_to_name、remove_base_layer_from_name、resolve_base_layer_name 三个函数。add_base_layer_suffix 接受参数名迭代器,根据预定义的 STACKED_PARAMS 列表为指定模块(如 q_proj, k_proj 等)的参数名添加 .base_layer 后缀。同时从 MEGATRON_TO_HF_MODULES 映射中移除了 GDN 相关的 in_proj 和 out_proj 条目。
- 在
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 对导出的参数名进行转换。
- 删除
tests/utils/test_vllm_weight_name_normalization_on_cpu.py 文件(252 行),该文件包含 4 个测试函数,覆盖了权重名称规范化的各种场景。
- 在
tests/utils/test_bucketed_weight_transfer.py 中,移除了 test_iter_weights_retains_direct_tensor_until_ack 测试(依赖被删除的 iter_weights 方法),并清理了相关导入(gc, weakref)。
- 在
verl/workers/rollout/vllm_rollout/bucketed_weight_transfer.py 中,删除了 iter_weights 方法(28 行),该方法曾被用于逐个产出接收到的权重。
- 在
verl/workers/rollout/vllm_rollout/vllm_rollout.py 中移除一行导入,verl/trainer/ppo/v1/trainer_base.py 中调整控制流(+4/-9)。
关键源码片段
无
评论区精华
PR 本身无 review 评论,但在关联 Issue 中,Junxiao-Zhao 和 Mengyuyang 分别询问回滚原因,目前未得到作者回应。
风险与影响
- 风险:使用 Qwen3.5 LoRA 或 MTP 的训练流程将因缺少必要函数而报错。对于未使用这些功能的用户,代码回退到经过验证的基线,风险较低。
- 影响:影响范围限于使用 Megatron 引擎训练 Qwen3.5 并启用 LoRA 或 MTP 的用户。其他模型和训练流程不受影响。
关联脉络
- 本 PR 直接 revert 了 #5599([megatron] fix: Qwen3.5 LoRA & MTP support (with Megatron-Bridge))。
- 近期合并的 #7161 和 #7109 等均在重构 FSDP 和 vLLM 的权重管理,但与本 revert 无直接关联。
- 被删除的功能如果未来需要重新引入,需在更稳定的基础上设计。
参与讨论