Prhub

#5724 [docker, ci] fix: all CIs, transformers upgrade to 5.3.0 and vllm==0.18.0

verl-project/verl · 作者 ETOgaosion · 合并时间 2026-04-03 13:44

分析状态 已生成
文件变更 29提交数 39 · 评论 11
代码增减 +234 / -137
ci docker misc

执行摘要

修复所有 CI 流水线,升级 transformers 至 5.3.0 和 vLLM 至 0.18.0 以解决兼容性问题。

修复e2e_fully_async_policy_megatron的rope_theta参数错误(由于transformers升级),解决由PR 5717引入的megatron依赖循环,并尝试修复trtllm rollout权重传输错误,以提升CI稳定性。

建议工程团队精读此PR,重点关注模型兼容性修复(如rope_theta处理和visual输出解包)和权重同步逻辑重构,这些设计决策展示了处理重大依赖升级时的系统化方法,对类似升级有借鉴意义。

讨论亮点

核心讨论围绕engine_workers.py中的base_sync_done硬编码问题:HollowMan6指出硬编码为True可能导致LoRA权重同步错误,cavities12确认应使用self.base_sync_done。后续通过重构(commit 8e85750)解决:先获取peft_config判断是否需要基础同步,再分别获取基础权重和适配器权重进行更新。gemini-code-assist[bot]提示config_converter.py中函数移动可能导致NameError,需导入修复。讨论结论是重构方案正确,已解决兼容性问题。

实现拆解

实现分为四个模块:1) CI配置更新:修改多个.github/workflows文件,升级Docker镜像标签至vllm018.dev1,移除transformers版本限制,添加缺失依赖如mbridge。2) Dockerfile调整:更新docker/Dockerfile.stable.vllm基础镜像至Ubuntu 24.04,优化依赖安装顺序。3) 模型兼容性修复:将get_hf_rope_theta函数从verl/models/mcore/config_converter.py移至verl/utils/megatron_utils.py以解决循环依赖;在verl/models/transformers/目录下更新GLM4V、Qwen2_VL等模型代码,适配transformers>=5.0.0的rope_parameters结构。4) 权重同步逻辑优化:在verl/workers/engine_workers.py中重构LoRA权重同步流程,确保先同步基础权重再同步适配器权重,并更新对应测试文件。

文件 模块 状态 重要度
.github/workflows/e2e_fully_async_policy.yml ci modified 8.0
docker/Dockerfile.stable.vllm docker modified 7.0
verl/models/mcore/config_converter.py model modified 6.0
verl/utils/megatron_utils.py model modified 6.0
verl/workers/engine_workers.py worker modified 7.0

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

关键符号

get_hf_rope_theta update_weights unpack_visual_output

评论区精华

engine_workers.py 中 base_sync_done 硬编码问题 正确性

HollowMan6 指出硬编码 base_sync_done=True 可能导致 LoRA 权重同步错误,cavities12 确认应使用 self.base_sync_done,后续通过重构解决。

结论:重构方案确保先获取 peft_config,再分别同步基础权重和适配器权重,已修复问题。 · 已解决

config_converter.py 函数移动导致的导入错误 正确性

gemini-code-assist[bot] 提示移动 get_hf_rope_theta 函数后,config_converter.py 中缺少导入,可能导致 NameError。

结论:需添加导入语句或确保函数可用,基于 commit 历史可能已修复。 · partially resolved

风险与影响

技术风险包括:1) 回归风险:transformers和vLLM版本升级可能引入未预见的bug,影响模型训练和推理流程,特别是在MoE权重格式变更(如Qwen3.5-MoE)时。2) 兼容性风险:模型代码中对rope_parameters的处理可能不完全,导致RoPE计算错误。3) 性能风险:Docker镜像更新和依赖调整可能增加构建时间或运行时开销。4) 安全风险:依赖升级可能引入新漏洞,需后续监控。

影响范围:用户(开发者)将受益于更稳定的CI流水线,减少测试失败;系统层面确保所有端到端测试通过,提升开发效率;团队需适应新依赖版本,但长期看降低维护负担。影响程度中等,涉及多个CI作业和模型模块,但未改变核心算法逻辑。

依赖版本升级 模型兼容性变更 CI 配置变更

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本PR系统性修复了因transformers升级至5.3.0和vLLM升级至0.18.0引发的CI流水线错误,通过更新Docker镜像、调整模型兼容性代码和优化权重同步逻辑,确保了测试环境的稳定性和跨后端兼容性。

功能与动机

此次变更主要为了应对transformers 5.0版本后的API变更,特别是RoPE参数结构改动和MoE权重格式调整,这些变更导致多个CI作业(如e2e_fully_async_policy_megatron)失败。PR body中明确指出目标是“修复所有CIs”,并解决由历史PR引入的依赖循环问题。

实现拆解

  1. CI配置模块:更新了10个.github/workflows/*.yml文件,统一将Docker镜像标签从vllm017.dev2升级为vllm018.dev1,移除对transformers版本的硬性限制(如transformers<5.0.0),并添加缺失依赖(如mbridge)。
  2. Docker构建模块:修改docker/Dockerfile.stable.vllm,基础镜像升级至Ubuntu 24.04,优化pip安装参数以提升构建效率。
  3. 模型处理模块
    • get_hf_rope_theta函数从verl/models/mcore/config_converter.py移至verl/utils/megatron_utils.py,解决循环依赖。
    • verl/models/transformers/下的GLM4V、Qwen2_VL等文件中,添加对rope_parameters字段的兼容性处理。
    • 新增unpack_visual_output函数(verl/utils/transformers_compat.py),处理transformers>=5.0.0中视觉编码器输出格式变化。
  4. 权重同步模块:重构verl/workers/engine_workers.py中的update_weights方法,确保LoRA场景下先发送基础权重再发送适配器权重,并更新对应测试文件。

评论区精华

Review讨论聚焦于权重同步逻辑的正确性:

  • HollowMan6提出:“If the base_sync_done is always set to True... we will always export lora weights instead of base weights”。
  • cavities12确认:“This should stay as self.base_sync_done and not hardcoded True”。
    最终通过重构解决,HollowMan6总结:“I did the refactor... now we still hardcode base_sync_done=True for the initial call”,确保逻辑正确性。

风险与影响

  • 技术风险:transformers和vLLM版本升级可能引入未测试的回归bug,尤其在MoE模型(如Qwen3.5-MoE)中,权重格式变更可能导致加载失败;Docker镜像更新可能影响构建稳定性。
  • 影响评估:短期可能增加CI运行时间,但长期提升测试可靠性;模型兼容性增强支持新transformers特性,但对现有代码有轻微侵入性改动。

关联脉络

本PR是近期CI和依赖维护趋势的一部分:历史PR如5874(新增Megatron脚本)和5861(量化文档)显示团队在扩展功能同时注重基础设施稳定。关联PR 5717引入了megatron依赖循环,本PR直接响应修复;PR 5769涉及类似权重同步问题,表明该领域是持续优化重点。整体上,此次变更反映了系统化应对重大依赖升级的工程实践。

参与讨论