Liger GRPO와 TRL 통합

Liger GRPO와 TRL 통합

사용자 보고서에 따르면, bf16 환경에서 DeepSpeed ZeRO-3와 Qwen2.5-0.5B-Instruct 모델을 사용할 때 Liger GRPO 손실에서 형태 불일치 오류가 발생한다고 합니다.

Liger GRPO와 TRL 통합

Liger GRPO와 TRL 통합

Liger GRPO는 Group Relative Policy Optimization (GRPO) 훈련을 최적화하기 위해 TRL(Transformer Reinforcement Learning) 라이브러리와 통합되고 있습니다. 그러나 현재 보고에 따르면 특정 분산 훈련 구성에서 호환성 문제가 발생하고 있습니다.

DeepSpeed ZeRO-3 호환성 문제

DeepSpeed ZeRO-3로 구성된 다중 GPU 훈련 중 Liger GRPO 손실이 실패하는 기술적인 문제가 확인되었습니다.

오류 상세

Qwen/Qwen2.5-0.5B-Instruct 모델을 bf16 정밀도와 DeepSpeed ZeRO-3를 사용해 훈련하려고 할 때 torch._dynamo.exc.TorchRuntimeError가 발생합니다. 이 오류는 행렬 곱셈(matmul) 연산 중 크기 불일치로 특징지어집니다.

구체적으로, 트레이스백은 다음 상황에서 형태 불일치를 보여줍니다:

  • 입력 크기: (s0x896)
  • 벡터 크기: (0)
  • 오류 메시지: size mismatch, got input (s0x896), vec (0)

기술적 맥락

이 실패는 LigerFusedLinearGRPOFunction 내부의 순전파 단계에서 발생하며, 특히 liger_kernel/chunked_loss/fused_linear_ppo.pyaccumulate_chunk를 호출할 때 나타납니다. 이는 융합 커널이 DeepSpeed ZeRO-3가 제공하는 샤드된 파라미터나 상태 관리을 올바르게 처리하지 못해 행렬 곱셈 연산에 빈 텐서(크기 0)가 전달되는 것으로 추정됩니다.

Sources