본문 바로가기

dev_AI_framework

AI Model 의 정적, 동적 경로 조건

어느 방법으로 갈 지 결정하기 위해서는 런타임 조건과 모델 구조의 속성을 명확히 이해해야 한다.

"무엇을 기준으로 정적 실행이 가능한지"

"언제 동적 모드로 전화해야 하는지"

 

모델의 실행 경로가 Python 레벨에서 고정되어 있는냐로 판정됨,

모델의 Layer 시퀀스가 항상 동일 ✅ 예: MLP, CNN ❌ 분기나 반복이 존재
입력 shape과 dtype이 항상 동일 ✅ (CUDA Graph requirement) ❌ (입력 shape 변화 시)
조건문 (If / EarlyExit) 이 없음 ❌ cond에 따라 다른 경로 실행
반복문 (Repeat, RNN unroll 등) 이 없음 ❌ 반복 횟수가 입력에 따라 달라짐
Dropout 등 RNG 사용이 결정적 (advance_seed로 해결 가능) ✅ (둘 다 가능)
모든 연산이 capture-safe (cudaMalloc, memcpy, sync 없음) ❌ (동기 연산 포함 시 capture 불가)

모델이 항상 같은 연산 그래프를 수행하면 정적 실행 가능

실행 때마다 조건/반복이 달라질 수 있으면 동적 실행 필요

 

성능 관점에선 launch overhead 와 python 인터프리터 비용이 제거되는 정적 실행이 병목 제거 효과 제공

약 3 ~ 10 배 정도의 차이

 

정적 모드는  stream / event / allocator 가 완전히 고정됨

GPU 워크로드가 균등하게 배분되고, memory fragmentation 최소화

 

동적 모드는 path 마다 stream 수, workspace 필요량이 달라져 memory pool 캐시가 branch fragmentation 을 일으킬 수 있음.

 

하지만 필연적 동적 실행이 필요한 경우들이 다수 존재...