본문 바로가기

AI Compiler framework

AI Compiler 처리 파이프라인 해석

1. Input Model

  • 입력은 사용자가 정의한 모델
  • 해당 단계는
    • 연산 의미만 중요
    • 성능, 하드웨어는 아직 고려 안 함

수학적 정의 단계

 

2. High-Level IR + High-Level Optimizations

High-Level IR

  • 연산 의미가 살아있는 중간 표현
    • Conv
    • LayerNorm
    • Attention
  • 아직
    • GPU thread
    • shared memory
    • tile
    • 와 같은 건 모름

High-Level Optimizations

  • 그래프 차원의 최적화
    • op fusion
    • dead op 제거
    • algebraic simplification
    • layout 변경
  • 패턴 매칭이 가장 활발한 구간

무엇을 계산할 것인가를 다듬는 단계

 

3. Low-Level IR + Low-Level Optimizations

Low-Level IR

  • 하드웨어에 가까운 표현
  • 연산이
    • load / store
    • reduce
    • vector op
    • thread / block 개념으로 분해됨

Low-Level Optimizations

  • 하드웨어 의존 최적화
    • tiling
    • unrolling
    • vectorization
    • memory placement
  • 커널 구조가 여기서 결정

어떻게 계산할 것인가의 단계

 

4. Optimized Kernels

  • 특정 하드웨어에 최적화된 커널
    • CUDA kernel
    • LLVM IR
    • OpenCL kernel...
  • 같은 연산이라도
    • GPU 아키텍처
    • shape
    • batch 에 따라 다를 수 있음

여기서 커널 family 가 갈린다

 

5. Serialization - Machine Code

  • 선택된 커널을
    • 바이너리
    • PTX
    • cubin
    • object code 형태로 고정
  • 런타임에서 바로 실행 가능

실행 계획이 고정되는 지점