AI Briefing

Transformers 그래디언트 누적 수정

Fixing Gradient Accumulation

·2024.10.16 09:00

HuggingFace가 Transformers 라이브러리에서 Gradient Accumulation 시 손실 함수 계산이 수학적으로 부정확했던 문제를 수정했다.

HuggingFace의 Transformers 라이브러리에서 Gradient Accumulation(그래디언트 누적) 사용 시, 수학적으로 정확한 손실(loss)이 계산되지 않던 문제가 발견되어 이를 수정했다.

문제의 원인 Causal LM과 같은 토큰 단위 작업에서 올바른 손실 값은 누적 단계 전체의 총 손실을 모든 비패딩(non-padding) 토큰의 총 개수로 나누어야 한다. 그러나 기존 방식은 각 배치별 손실 값의 평균을 구하는 방식을 취해 수학적 불일치가 발생했다.

해결 방법 HuggingFace는 두 가지 방식으로 이 문제를 해결한다:

  • 기본 손실 함수 자동 수정: 사용자가 기본 손실 함수를 사용할 경우, Gradient Accumulation 시 올바른 손실이 보고되고 활용되도록 내부 로직을 업데이트한다.
  • 사용자 정의 API 제공: Trainer에서 사용자가 직접 손실 함수를 전달할 수 있도록 loss_function API를 노출하여, 향후 발생할 수 있는 문제에 유연하게 대응할 수 있게 한다.

현재 주요 모델들에 대한 수정 작업이 진행 중이며, 사용자는 transformersmain 브랜치를 설치하여 즉시 수정 사항을 적용할 수 있다.

이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.

요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.