Activations
Activation은 layer를 통과하면서 만들어지는 중간 텐서다.
x0 -> layer 1 -> x1 -> layer 2 -> x2 -> layer 3 -> x3
여기서 x1, x2, x3가 activation이다. 각 activation은 다음 layer의 입력이 된다.
왜 저장해야 하나
학습에서는 backward pass가 parameter gradient를 계산한다. 예를 들어 linear layer를 단순화해서:
라고 하면, weight gradient는 대략 다음 형태로 계산된다.
즉 W의 gradient를 계산하려면 forward 때의 입력 X가 필요하다. 이 X가 activation이다.
activation memory가 커지는 이유
activation 크기는 대체로 다음 요인에 비례한다.
batch 또는 token 수 x sequence length x hidden size x layer 수
큰 모델을 학습할 때 메모리가 부족해지는 이유는 parameter만 커져서가 아니다. 긴 sequence, 큰 batch, 많은 layer가 만나면 activation 저장 비용이 매우 커진다.
확인
- activation은 forward에서 어떤 역할을 하는가?
- backward에서 activation이 다시 필요한 이유는 무엇인가?
- batch, sequence length, hidden size, layer 수가 커지면 activation memory는 어떻게 변하는가?