Reverse-mode 자동 미분, eager Python 안에서
Autograd 는 PyTorch 의 자동 미분 엔진이야. 하나만 해: scalar (loss 같은) 를 계산하면, 그 scalar 를 만든 op 들을 backward 로 걸어가면서 scalar 에 대한 gradient 를 — gradient tracking 을 요청한 모든 leaf tensor 에 누적.
'reverse-mode' 가 중요해: forward-mode AD 는 derivative 를 forward 로 계산 (input 적고 output 많을 때 좋음); reverse-mode 는 backward (input 많고 output 하나일 때 좋음 — 정확히 deep learning 의 loss-vs-parameter shape). 100M parameter 와 scalar loss 에선 reverse-mode 가 유일한 실용적 옵션.
'Dynamic graph' — 그게 사주는 것
PyTorch 는 graph 를 on the fly 로, 매 forward 마다 만들어. 의미:
forward()안에서 Python control flow (if/else, while, for) 사용 가능. graph 가 이 input 에 실제로 탄 path 반영.- print, breakpoint, pdb 로 디버깅 가능. forward pass 가 그냥 Python.
- graph 가 backward 후 버려져 (retain 요청 안 하면). 메모리 bounded.
비용: dynamic graph 가 static graph 보다 setup 살짝 느려 — ahead-of-time optimization 기회 없으니까. torch.compile() (나중 트랙) 이 dynamic feel 안 포기하고 static-graph speedup 줘 — 근데 autograd 자체는 dynamic 으로 유지.