본문 바로가기

AI Compiler framework

core_v2 Stage 1 : IR 표현 + Dump 검증 문서

목표

  • 사용자 코드를 실행하지 않고 tracing-only IR 로 기록한다.
  • IR 을 사람이 확인 가능한 형태로 dump 하여
    • op 시퀀스
    • 입력 / 파라미터 / 출력 텐서의 메타
    • op 연결을 검증한다. 

stage 1 에서는 다음만 다룬다.

  • linear
  • relu
  • msegrad

 

구현 구성

파일 구조

aicf_fw/core_v2/
  ir.py        # IRGraph/IRValue/IRNode (SSA 기반 value id)
  trace.py     # tracing context + object/torch handle -> IRValue 캐시
  ops.py       # SymTensor + (Linear/ReLU/MseGrad) tracing-only ops
  compile.py   # trace_ir(step_fn) -> IRGraph
  printer.py   # dump_ir(ir) -> str

핵심 데이터 모델

IRValue

  • id : 정수 vid
  • name : 사람이 확인하는 이름
  • shape : tuple
  • dtype : string
  • device : string

IRNode

  • op : 문자열
  • inputs : vid 리스트
  • outputs : vid 리스트
  • attrs : op 별 부가 정보

IRGraph

  • values : vid - IRValue
  • nodes : IRNode[]

 

Tracing 설계

TraceContext

  • tracing 은 trace.py 가 전담
  • tracing 중에만 IR emit 이 가능하다 

캐시 정책

  • SymTensor 기반 캐시
    • 입력 / 파라미터 / 중간값을 동일 객체면 동일 IRValue 로 매핑
  • torch tensor 핸들 기반 캐시
    • key = (data_ptr, shape, dtype, device)

동일 SymTensor 객체가 여러 op 에 입력으로 들어갈 때, vid 가 안정적으로 재사용됨을 확인

 

Stage 1 테스트

테스트 스크립트

  • SymTensor 로 x / t / W / b 를 선언
  • step_fn 에서 다음 순서를 emit
    • linear - lin0_out
    • relu - relu0_out
    • linear - lin1)out
    • msegrad - dY

실제 dump 결과

 

IR values : 10, nodes : 4

values

  • v001 : x (64, 8)
  • v002 : 0.W (8, 8)
  • v003 : o.b (8,)
  • v004 : relu0_out (64, 8)
  • v005 : 2.W (8, 8)
  • v006 : 2.b (8,)
  • v007 : lin1_out (64, 8)
  • v008 : t (64, 8)
  • v009 : dY (64, 8)

nodes

  • #000 Linear (x, 0.W, 0.b) - lin0_out, bias = True
  • #001 ReLU (lin0_out) - relu0_out
  • #002 Linear (relu0_out, 2.W, 2.b) - lin1_out, ,bias = True
  • #003 MseGrad (lin1_out, t) - dY

확인된 사항

  • linear / relu / msegrad 의 데이터플로우가 vid 기준으로 정확히 연결됨
  • 파라미터 이름과 IRValue 가 잘 보존됨
  • attrs 출력이 기대한 형태로 표시

 

제한 사항

  • 실행 ( backends op_call_out ) 은 없음
  • backward / optimizer op 는 없음
  • SSA / alias / in-place semantics 는 아직 다루지 않음
  • dtype / device 는 문자열 저장

 

다음 계획

Stage 2 는 Lowering 출력 검증이 목표