대부분의 일반 모델 학습에서는
실제로 그래프 구조가 iteration 마다 크게 달라지지 않음,
대부분 iteration 에서 동일한 형태의 dynamic graph 가 반복 생성되는 것
단순히 새로 생성되는 것 뿐이지, 구조적으로는 거의 동일한 형태
그래프 caching 에 관심, autograd 특성 때문에 정식 지원 확장 불가능
하지만 특정 모델 / 훈련 패턴에서는
구조가 iteration 마다 바뀌는 경우도 존재
- NLP generation
- Mixture-of-Experts
- Dynamic routing network
- Early-exit network
- 조건 기반 loss switching
- RL / 시뮬레이션 기반 모델
- variable - length input
- variable - length decoding
- dropout / masking / random augmentation
- if loss > x :auxiliary loss 추가 같은 조건부 branch
이 경우 그래프의 경로 자체가 달라진다.
일반적인 CNN 학습 vs 현대적인 LLM / Multimodal 학습은 완전히 다름
1. 일반적인 학습 반복에서는 왜 그래프가 거의 동일한가?
이유 1: 대부분의 네트워크는 explicit control-flow 가 없다
ResNet, VGG, U-Net, ViT 이런 순차적 네트워크는
for epoch...
for batch...
y = model(x)
loss = criterion(y, target)
loss.backward()
- 조건 분기 없음
- 반복을 Python loop 가 담당
- forward pass 는 항상 같은 구조
- bacnkward pass 도 항상 같은 구조
그래서 PyTorch autograd graph 는 매 iteration 마다 새로 생성되지만 구조 자체는 거의 동일하다.
재생성은 하지만 구조적 변화는 거의 없음
2. 그럼 왜 같은 그래프를 매번 다시 생성할까?
PyTorch 는
- operation 이 실행되면 즉시 grad_fn 만들고
- 메모리에 쌓고
- backward 끝나면 버린다.
즉,
PyTorch 의 dynamic graph 는 구조 최적화를 위한 것이 아니라, 실행된 ops 를 자동으로 기록하기 위한 메커니즘
그래서 구조가 동일하더라도 autograd tape 는 매번 다시 생성됨
각 iteration 마다 텐서 포인터, 버퍼 주소, 중간 gradient, requires_grad 상태가 다 다르기 때문
구조가 같다고 해도 같은 tape 를 재사용하는 것은 불가능한 구조이다.
3. 그래프가 실제로 자주 달라지는 경우
1)NLP generation / transformer decoder
시퀀스 길이에 따라 자연스럽게 구조가 iteration 마다 다름
2) Mixture-of-Experts (MoE)
router 가 선택한 export 에 따라 forward 경로가 매번 바뀜
3) RL / 시뮬레이션 / online learning
4) variable-length input / masking
5) Early Exit / branch-based network
'dev_AI_framework' 카테고리의 다른 글
| AI Compiler 의 역할 재정의 - 기존 역할과 학습 단계에서의 새로운 역할 구분 (0) | 2025.12.12 |
|---|---|
| 🧭 GE2 Runtime — 설계 회고 (Design Retrospective) (3) | 2025.12.01 |
| 상용 딥러닝 프레임 워크는 Inference Runtime 기반 구조이다...! (0) | 2025.12.01 |
| gemm_bias_act_f32_tilled_kernel 만 자세히 봐보자 (0) | 2025.11.24 |
| 현재 구현된 gemm 의 fwd 부분 커널 코드 확인 (0) | 2025.11.24 |