본문 바로가기

AI Compiler framework

Compute Property - 단일 개념 정의

정의

Compute Property 란, 연산의 수학적 의미를 보존하면서 실행 방식을 변형할 수 있게 해주는 불변 성질이다. - 이 연산을 바꿔도 되는 이유

 

왜 필요한가

기존 방식

  •  GEMM 은 이렇게 최적화
  • Attention 은 이렇게 최적화

전부 op 별 규칙의 집합

중복 + 확장 불가 + 구조 붕괴

 

Compute Property 도입 이후

  • 이 연산은 Tile-Composable 이다
  • Domain-Prunable
  • Order-Rewritable...

최적화는 op 가 아니라 성질에 의해 결정됨

 

핵심 역할

Compute Property 는 시스템에서 3가지 역할을 한다.

1. Legality ( 가능 여부 결정 )

이 변환을 해도 되는가

if (prop.order_rewritable) {
    reorder_reduction();
}

 

2. Transform Enablement (변환 활성화)

어떤 종류의 최적화를 적용할 수 있는가

  •  Tile-Composable - tailing 가능
  • Domain-Prunable - skip 가능
  • Layout-Flexible - vectorization 가능

 

3. Runtime Specialization 조건

어떤 실행 variant 를 선택할 수 있는가

  • Schedule-Invariant -> persisent kernel 가능
  • Layout-Flexible -> fast path 선택 가능
  • Precision-Relaxable -> mixed precision 선택 가능

 

구조적 위치

Compute Property
    ↓ defines
Transformation (optimization)
    ↓ selected by
Cost Model
    ↓ produces
Runtime Execution Variant

 

주요 특징 4가지

1. Property 는 연산 자체의 성질이다.

  • op 이름과 무관
  • 구현 방식과 무관
  • hardware 와도 독립적

  • sum 은 associative
  • ReLU 는 domain-prunable

 

2. Property 는 여러 개 동시에 가진다.

하나의 op 는 하나의 category 가 아니다

예: GEMM

Tile-Composable
+ Local-Accumulable
+ Layout-Flexible
+ Schedule-Invariant

 

3. Property 는 subgraph 에도 적용된다.

fusion 이후에도 유지되어야 한다.

  • GEMM + Bias + ReLU
    • 여전히 Tile-Composable + Domain-Prunable

 

4. Property 는 Transform 이 아니다

  • Property : 가능성 ( 왜 되는가 )
  • Transform : 행동 ( 무엇을 하는가 )

 

실제 적용 흐름

  1. Op -> Property 추출
  2. Property 기반 transform 선택
  3. Cost 기반 최종 선택
  4. Runtime variant 실행