본문 바로가기

AI Compiler framework

AICF v2 – FWD Optimize Snapshot 기반 Autodiff + CUDA Graph 학습 경로

기존에는 Builder.ops (fwd + bwd + opt 가 섞인 최종 ops) 를 역순회하며 자동 미분 그래프를 생성

목표는

  • FWD 를 먼저 최적화 단계에 통과
  • 그 결과의 FWD op snapshot 을 기준으로
  • emit_bwd 를 호출해 자동 미분 그래프 생성 구조

 

1. 전체 파이프라인

  • FWD  build
  • FWD optimiz hook ( 현재는 identity)
  • FWD ops snapshot 
  • snapshot 기반 autodiff : emit_bwd 로 BWD graph 생성
  • optimizer.step graph 추가
  • full compile
  • CUDA Graph capture & replay
model.build_backward_after_fwd_opt(loss_vid)
  • optimize_ir 호출
  • fwd_ops_snapshot = list 저장
  • build_backward_from_ops 실행

 

2. Dump 결과 기반 그래프 구조 검증

(A) FWD 빌드 결과

[DUMP] 01_fwd_built__builder.json
num_ops=6
num_values=12
inputs=2
params=4
states=0

Op 구성

  • gemm x2
  • bias_add x2
  • relu x1
  • cross_entropy x1

 

(B) BWD 생성 방식 변경 후 결과

[DUMP] 02_bwd_built_post_fwd_opt__builder.json
  • BWD 가 self.b.ops 저체가 아니라 fwd snapshot 만 역순회하여 생성되었는지
  • 실행 결과가 동일하게 수렴 / 정상인지

를 확인

 

(C) Compile Plan (Full Graph)

[DUMP] 03_compiled_plan__plan.json
num_ops=18
(alias는 이전과 유사하게 적극적으로 설정될 가능성 높음)
kind_id/attr_schema 모두 정상 채워짐

최적화 / 컴파일 / 커널 lowering 경로는 정상

 

3. CUDA Graph 실행 결과 

측정 결과 

CUDA events (kernel-side)

  • Eager: 0.693 ms/step
  • CUDA Graph: 0.232 ms/step

Wall time (python + sync 포함)

 

  • Eager: 0.656 ms/step
  • CUDA Graph: 0.182 ms/step

 

해석

  • Graph replay는 여전히 Eager 대비 ~3.0–3.6x급 개선
  • 이번 실행에서 CUDA event 상 replay가 조금 느려진(0.19→0.23ms) 것은 자연스러운 분산 범위이며,
    데이터/클럭/런타임 상태 등 환경 영향으로 흔히 발생한다.

중요한 건:

  • 파이프라인 구조 변경(“fwd_opt snapshot → bwd”)이
  • CUDA Graph capture/replay 안정성을 깨지 않았고
  • 학습 실행이 정상 유지된다는 점이다.