1. 기존 AI Compiler 의 주된 역할
기존 AI Compiler 는 모델의 의미 semantics 를 보존한 채 실행 형태를 변환하는 시스템
입력은 모델의 구조, 출력은 동치 (equivalent) iR 또는 실행 코드, 다음의 목표
- 실행 효율 극대화
- 메모리 트래픽 감소
- 런타임 오버헤드 제거
- 하드웨어 제약 하에서의 최적 실행
AI Compiler 는 모델이 무엇을 계산하는지는 바꾸지 않는다.
추론은 AI Compiler 가 가장 잘 작동하는 환경
- 그래프 구조 고정
- 파라미터 불변
- side-effect 없음
- 결정적 실행 가능
이로 인해 aggressive optimization, CUDA Graph cpature, kernel fusion 등이 가능
학습 단계에서의 AI Compiler 의 한계
- 파라미터 및 optimizer state 변화
- 비결정성
- autograd 에 의한 그래프 재생성
- 수치 동역학의 민감성
학습에서 보수적 최적화만 수행할 수 있다.
- 국소적 fused o[
- 메모리 재사용 / 스케줄링
- 일부 고정 구간에 한정된 graph capture
학습단계에서 비용만 줄이는 역할
내가 생각한 새로운 역할의 정의 - 학습 단계에서의 AI Compiler
AutoML 과 비교해서
- 무작위/탐색 기반 - 관측/귀납 기반
- 블랙박스 모델 공간 - IR-level 구조 공간
- 고비용 탐색 - 이미 존재하는 모델/로그 활용
- 해석 어려움 - 구조 패턴으로 해석 가능
IR 기반 구조 귀납 시스템으로 볼 수 있음
- IR 구조 관측
- 문제 특성 - IR 패턴 상관 분석
- 구조적 귀납 추출
- 새 문제에 대한 IR 구조 제안
더 나아가
IR 제안에 그치지 않고, 사용자가 모델을 주면 - IR 로 변환 - 실제 학습 루프 안에서 구조 변환을 실행
User Model
↓
Frontend (Model → IR)
↓
Training-aware IR Runtime
├─ observe (training dynamics)
├─ decide (structure change)
├─ transform (IR rewrite)
└─ resume training
학습을 멈추지 않고, 상태를 보존한 채 구조를 바꾼다
기존 AI Compiler
- IR 변환은 정적
- 실행 전 완료
- 의미 보존이 전제
내 시스템
- IR 변환이 동적
- 학습 중 발생
- 의미 비보존 허용
- 성능/수렴 관측을ㅇ 근거로 판단
compiler-time -> train-time IR rewriting
실제 학습 중 구조 변환이 가능하려면 필요 조건
IR 이 반드시 가져야 할 속성
IR 은 단순 연산 그래프면 안 된다. 최소한 아래가 필요
- 파라미터 소유권 명시 - 어떤 노드가 어떤 파라미터를 소유하는지
- Optimizer state 연결 - Adam moment, momentum 의 매핑 규칙
- Gradient flow 표현 - bankward graph 를 포함하거나 추론 가능
- State checkpoint 가능성 - rollback / fork 를 위한 snapshot
구조 변환의 실행 시점
현실적으로는 이산적 시점에서만 가능
- epoch boundary
- N step warmup 이후
- loss plateau 감지 시점
- instability 발생 시점
train - observe - pause - rewrite IR - rebind stats - resume
연속적인 변환은 거의 불가능하고, quasi-online 형태가 된다.
'dev_AI_framework' 카테고리의 다른 글
| From FlashAttention to AI Framework Ops 문서 (0) | 2025.12.16 |
|---|---|
| 🧭 GE2 Runtime — 설계 회고 (Design Retrospective) (3) | 2025.12.01 |
| 어느 환경에서 학습 시 매 번 새로운 graph 가 생성될까 (0) | 2025.12.01 |
| 상용 딥러닝 프레임 워크는 Inference Runtime 기반 구조이다...! (0) | 2025.12.01 |
| gemm_bias_act_f32_tilled_kernel 만 자세히 봐보자 (0) | 2025.11.24 |