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