본문 바로가기

dev_AI_framework

AI Compiler 의 역할 재정의 - 기존 역할과 학습 단계에서의 새로운 역할 구분

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 기반 구조 귀납 시스템으로 볼 수 있음

 

  1. IR 구조 관측
  2. 문제 특성 - IR 패턴 상관 분석
  3. 구조적 귀납 추출
  4. 새 문제에 대한 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 형태가 된다.