모델은 행렬 연산의 반복이다
딥러닝 모델은 복잡해 보이지만, 큰 흐름에서는 여러 층의 행렬 연산이 이어진 계산 그래프로 볼 수 있다.
예를 들어 linear layer는:
처럼 입력 X에 weight W를 곱한다. Transformer의 attention, MLP도 내부를 열어보면 큰 행렬 곱셈과 elementwise 연산이 반복된다.
추론과 학습의 차이
추론(inference)은 입력을 넣고 출력만 얻으면 된다.
input -> forward -> output
학습(training)은 출력과 정답을 비교해 loss를 만들고, 그 loss를 줄이도록 parameter를 업데이트해야 한다.
input -> forward -> loss -> backward -> gradients -> optimizer update
그래서 학습은 추론보다 더 많은 일을 한다. forward 결과만 필요한 것이 아니라, backward 계산에 필요한 중간값도 저장해야 하고, parameter마다 gradient도 만들어야 하며, Adam 같은 optimizer는 추가 state도 유지한다.
이 경로에서는 모델 구조의 세부사항보다 한 번의 training step에서 어떤 텐서들이 생기는가에 집중한다.
확인
- 추론에서는 왜 forward만 수행해도 되는가?
- 학습에서는 forward 이후에 어떤 단계들이 더 필요한가?
- 모델을 행렬 연산의 반복으로 보면 성능 분석과 메모리 분석이 왜 쉬워지는가?