执行摘要
此PR废弃了legacy FSDP和Megatron workers实现,通过将配置文件中的use_legacy_worker_impl默认设为disable,并添加弃用装饰器,强制用户迁移到新engine workers架构。这是为v0.8.0移除旧代码做准备的关键步骤,影响trainer模块的核心工作流和用户配置。
功能与动机
动机源于代码库的统一化需求,旨在淘汰旧的分布式训练worker实现(如DataParallelPPOActor和MegatronPPOActor),转而使用更现代的TrainingWorker引擎。根据PR body,目标是在v0.8.0版本中完全移除这些legacy workers,因此在此版本中先进行弃用,以减少未来升级的破坏性。关键表述来自PR body:"Deprecate legacy engine fsdp and megatron workers, which will be removed in v0.8.0."
实现拆解
主要改动点按模块拆解如下:
- 配置文件层:在多个yaml文件(如
verl/trainer/config/ppo_trainer.yaml和生成文件)中,将use_legacy_worker_impl从auto改为disable,确保新实例默认使用新实现。
- 核心逻辑层:在
verl/trainer/main_ppo.py的add_critic_worker函数中添加条件导入:
python
if use_legacy_worker_impl in ["auto", "enable"]:
from verl.workers.megatron_workers import CriticWorker
elif use_legacy_worker_impl == "disable":
from verl.workers.engine_workers import TrainingWorker
CriticWorker = TrainingWorker
- 弃用标记层:在6个旧worker类(如
verl/workers/actor/dp_actor.py中的DataParallelPPOActor)上添加@deprecated装饰器,消息为"legacy worker implementation is deprecated and will be removed in v0.8.0"。
- Engine增强层:在fsdp和megatron的transformer实现中,引入
model_type字段支持(如verl/workers/engine/fsdp/transformer_impl.py中新增value模型加载逻辑),确保新engine能处理多种模型类型。
评论区精华
review讨论由gemini-code-assist[bot]主导,聚焦于@deprecated装饰器的使用问题。关键交锋在于装饰器消息的格式:
gemini-code-assist[bot]指出:"当前消息将产生混淆警告:... Please use 'legacy worker implementation is deprecated and will be removed in v0.8.0' instead. 为提升清晰度,请提供替换类名或重新措辞消息。"
此讨论未获回复,PR已合并,意味着警告消息可能继续产生用户体验问题,但设计权衡倾向于快速推进弃用流程。
风险与影响
技术风险:
- 弃用警告混淆:当前deprecated消息格式不当,可能导致用户误解警告内容,影响调试效率。
- 兼容性风险:默认配置变更可能破坏现有工作流,用户需手动覆盖
use_legacy_worker_impl或调整脚本(如示例脚本中的USE_FUSED_KERNELS和use_remove_padding调整)。
- 回归风险:engine逻辑变更(如value模型支持)在
verl/workers/engine/fsdp/transformer_impl.py中涉及复杂条件分支,需加强测试覆盖以避免运行时错误。
影响评估:
- 用户影响:中高程度。所有用户将默认使用新engine workers,需验证配置兼容性;弃用警告虽提醒迁移,但消息缺陷可能降低有效性。
- 系统影响:高程度。推动架构统一,减少技术债务,但需监控新实现的稳定性和性能。
- 团队影响:中程度。标志着trainer模块的演进方向,为后续v0.8.0移除奠定基础,需团队协作确保平滑过渡。
关联脉络
从历史PR看,此PR是engine workers演进链条的一部分:
- PR #5627为
TrainingWorker添加NUMA亲和性,显示对新worker的性能优化。
- PR #5669修复fsdp workers的Liger集成,反映legacy代码的维护负担。
- PR #5705调整megatron配置,与本PR的megatron engine增强协同。
这些PR共同揭示仓库正从分散的legacy实现向统一、可维护的engine架构迁移,本PR是此过程的关键里程碑,为未来版本移除旧代码铺平道路。
参与讨论