메모리 절약과 효과적인 대용량 학습을 가능하게 하는 기술이다. 이 방법은 특히 GPU 메모리가 부족하여 한번에 큰 배치 크기를 처리할 수 없는 상황에서 주로 사용된다.
동작원리
일반적으로, 딥러닝 모델을 훈련할 때, 데이터는 미니 배치로 나누어 모델에 입력되고, 각 배치에 대해 forward pass와 backward pass가 수행된다. 그 후, 기울기가 계산되고 옵티마이저에 의해 가중치가 업데이트된다.
gradient accumulation step을 사용하면 다음과 같은 과정이 추가된다.
gradient accumulation step가 무조건 크다고 좋을까? NO!
기울기 업데이트 빈도
gradient accumulation step=4일 때 기울기가 더 자주 업데이트된다. 즉 4번의 배치마다 모델이 업데이트되고 이로 인해 학습 과정이 더 세밀하게 진행될 수 있다. 반면 gradient accumulation step=8일 때는 8번의 배치를 쌓아서 업데이트하기 때문에 기울기 업데이트 빈도가 낮아지게 된다.
일관된 학습 방향
기울기 누적이 길어질수록, 즉 gradient accumulation step 값이 커질수록 다양한 미니 배치로부터의 기울기가 평균화되면서 노이즈가 섞일 가능성이 있다. 이는 모델이 정확한 학습 방향을 잡기 힘들게 할 수 있다. gradient accumulation step가 작을수록 업데이트가 더 자주 이루어져 노이즈가 누적되기 전에 기울기 업데이트가 이루어져 학습이 일관되게 진행될 수 있다.
과도한 누적으로 인한 정보 손실
gradient accumulation step=8처럼 기울기를 누적하는 과정이 길어지면, 미니 배치에서 얻어지는 세부적인 정보가 사라지거나 평균화될 수 있따. 이는 세밀한 기울기 정보를 반영하지 못하게 되어 성능 저하를 일으킬 수 있다.