본문 바로가기

AI Compiler framework

IR 기반 실행 변경 로드맵

현재 이미

  • tracing IR
  • lowering list
  • runtime trace 비교
  • warmup + CUDA graph capture / replay
  • TrainGraph 로 static IO

위 내용을 갖고 있음

 

단계 1 : IR 을 실행 가능한 형태로 만들기

  • lower_to_backend_ops 
    • op 마다 inputs / outputs / value_ids 포함
    • attrs + in-place 정보 포함
{"op":"gemm", "ins":[x_id, w_id], "outs":[y_id], "attrs":{"transB":True}}

이 단계가 끝나면 

IR 최적화가 value graph 차원 상의 의미를 가짐

 

단계 2 : GraphExecutor 도입

python step_fn 없이도 IR 로 1 step 실행 가능

이 단계를 통해

  • IR 을 최적화하면 실행이 바뀜
  • dead code elimination / op fusion / constant folding 같은 게 효과가 생김

 

단계 3 : 최적화된 IR 을 캡처해서 replay

실행 주체는 IR, 성능은 CUDA Graph replay

  • GraphExecutor 로 한 번 실행
  • 그 실행을 backend.capture_begin ~ end 로 캡처
  • 이후 replay
opt_ir → executable → (1회 실행으로 캡처) → replay 런타임

 

  • 최적화된 IR 이 실제 실행이 되고
  • CUDA Graph 의 이점

 

추후 backward 도 IR 로 가져와야 함