Liger GRPO 与 TRL 集成
Liger GRPO 与 TRL 的集成
Liger GRPO 正在与 TRL(Transformer Reinforcement Learning)库集成,以优化 Group Relative Policy Optimization(GRPO)训练。然而,当前报告表明在使用特定分布式训练配置时存在兼容性问题。
DeepSpeed ZeRO-3 兼容性问题
已发现一个技术问题,即在使用 DeepSpeed ZeRO-3 配置进行多 GPU 训练时,Liger GRPO 损失函数会失败。
错误详情
在尝试使用 bf16 精度和 DeepSpeed ZeRO-3 训练 Qwen/Qwen2.5-0.5B-Instruct 模型时,会出现 torch._dynamo.exc.TorchRuntimeError。该错误表现为矩阵乘法(matmul)操作期间的尺寸不匹配。
具体而言,回溯显示在以下上下文中出现形状不匹配:
- 输入尺寸:
(s0x896) - 向量尺寸:
(0) - 错误信息:
size mismatch, got input (s0x896), vec (0)
技术背景
该失败发生在前向传播期间的 LigerFusedLinearGRPOFunction 中,具体是在 liger_kernel/chunked_loss/fused_linear_ppo.py 中调用 accumulate_chunk 时。这表明融合内核可能未正确处理 DeepSpeed ZeRO-3 提供的分片参数或状态管理,导致一个空张量(尺寸为 0)被传递给矩阵乘法操作。
Sources
- Original🐯 Liger GRPO meets TRL