Training Memory Overview
학습 메모리는 크게 네 덩어리로 나눠 볼 수 있다.
parameters
activations
gradients
optimizer states
- Parameters
- Activations
- Gradients
- Optimizer states
네 가지 구성요소
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 메모리를 추가로 요구하는 이유는 무엇인가?