Training Memory Overview

trainingmemory

학습 메모리는 크게 네 덩어리로 나눠 볼 수 있다.

parameters
activations
gradients
optimizer states

Inference

Training

  • Parameters
  • Activations
  • Gradients
  • Optimizer states
정확한 비율은 모델, batch, sequence length, optimizer, checkpointing 설정에 따라 달라진다. 이 그림은 학습에서 gradient와 optimizer state가 추가되고 activation 저장 비용도 커진다는 감각을 주기 위한 단순화다.

네 가지 구성요소

Parameters는 모델의 weight다. 추론과 학습 모두 필요하다.

Activations는 forward 중간값이다. 학습에서는 backward를 위해 저장해야 하므로 커질 수 있다.

Gradients는 parameter마다 만들어지는 업데이트 신호다. 보통 parameter와 같은 shape이다.

Optimizer states는 Adam 같은 optimizer가 유지하는 추가 텐서다. 예를 들어 Adam은 보통 m, v 같은 state를 둔다.

왜 학습이 더 무거운가

추론은 주로 parameter를 읽고 forward 출력을 만들면 된다.

학습은 여기에 다음 비용이 추가된다.

  • backward 계산을 위한 activation 저장
  • parameter gradient 저장
  • optimizer state 저장
  • forward와 backward 모두의 연산

그래서 같은 모델이라도 학습은 추론보다 메모리와 연산량이 훨씬 크다.

확인

  • 학습 메모리의 네 가지 큰 구성요소는 무엇인가?
  • activation memory와 gradient memory는 어떻게 다른가?
  • Adam이 optimizer state 메모리를 추가로 요구하는 이유는 무엇인가?