Prhub

#5669 [fsdp, perf, doc] fix: fix Liger integration for VL models and RL training, allowing liger speed improvement

原始 PR 作者 EricMarcus-ai 合并时间 2026-03-23 13:22 文件变更 4 提交数 2 评论 0 代码增减 +105 / -11

执行摘要

修复 Liger 内核集成以兼容视觉语言模型和强化学习训练,提升训练速度。

修复 issue #2609 中报告的 Liger 集成问题:当 use_liger=True 时,_apply_liger_kernel_to_instance 默认设置 fused_linear_cross_entropy=True,导致与 verl 的前向补丁冲突,使 VL 模型崩溃。PR body 说明修复此问题以允许 Liger 在 VL 模型和 RL 训练中工作,并关闭相关 issue。

建议精读此 PR,关注 _apply_liger_kernel_to_instance 的参数传递设计决策,以及如何通过测试确保兼容性。对于涉及内核优化和模型集成的开发者,此 PR 提供了避免冲突的实用模式和性能基准参考。

讨论亮点

review 中仅有正面反馈,没有争议讨论。gemini-code-assist[bot] 评论认为 PR 有效解决了兼容性问题,测试验证了修复;wuxibin89 直接批准。讨论焦点在正确性和测试覆盖上,无未解决疑虑。

实现拆解

实现方案包括:

1) 在 verl/workers/fsdp_workers.py 和 verl/workers/engine/fsdp/transformer_impl.py 中修改 _apply_liger_kernel_to_instance 调用,添加参数 fused_linear_cross_entropy=False 和 swiglu=True;
2) 新增测试文件 tests/models/test_liger_vl_compat.py 以验证 VL 模型与 Liger 的兼容性;
3) 更新文档 docs/perf/perf_tuning.rst,澄清 Liger 的使用和兼容性。

文件 模块 状态 重要度
verl/workers/fsdp_workers.py FSDP 工作流 modified 8.0
verl/workers/engine/fsdp/transformer_impl.py FSDP 引擎 modified 8.0
tests/models/test_liger_vl_compat.py 测试 added 6.0
docs/perf/perf_tuning.rst 文档 modified 4.0

关键符号

_apply_liger_kernel_to_instance test_liger_vl_forward_with_monkey_patch

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

评论区精华

Liger 集成修复验证 正确性

gemini-code-assist[bot] 评论认为 PR 有效解决了兼容性问题,测试验证了修复。

结论:批准合并,无争议。 · 已解决

风险与影响

技术风险较低:修复通过显式禁用 fused_linear_cross_entropy 避免冲突,从 body 看该优化在 verl 中是惰性的,但修改涉及核心训练路径(verl/workers/fsdp_workers.py 和 verl/workers/engine/fsdp/transformer_impl.py),需确保无回归影响其他模型类型或训练场景。测试覆盖了 VL 模型,但可能未覆盖所有边缘情况。

对用户影响积极:现有 use_liger=True 配置现在可正确用于 VL 模型和 RL 训练,无需 API 变更,提升训练效率。系统性能提升显著,基准测试显示速度提升 20-50%,内存使用减少高达 28%。团队需更新文档以推广 Liger 使用,优化整体训练工作流。

核心路径变更 兼容性修复依赖

关联 Issue

#2609 `use_liger`'s `_apply_liger_kernel_to_instance(model=actor_module)` should be called as `_apply_liger_kernel_to_instance(model=actor_module, fused_linear_cross_entropy=False)` when `use_fused_kernels=True`

完整报告

参与讨论