본문 바로가기

AI Compiler framework

단순 최적화 프레임과 최적화 가능성의 조건을 재정의하는 프레임의 두 층으로 나눈 작업 분류

1층 : 단순 최적화 프레임으로서의 작업

새로운 제약을 둔 뒤, 그 내부에서 더 잘 작동하게 만드는 일

  • 어떤 의미를 보존해야 하는지
  • 어떤 변환이 합법인지
  • 어떤 비용을 더 중요하게 볼지
  • 그 기준 아래에서 실행, 메모리, fusion, lowering 을 최적화

이는 닫한 계, 다음이 미리 정해져 있음

  • 보존해야 할 invariant
  • 허용되는 표현 형식
  • 비교 가능한 성능 지표
  • 시스템이 보는 단위 (op, pattern, region, tile... )

이는 결국

기존 프레임보다 더 좋은 프레임을 하나 세우고, 그 안에서 효율을 끌어올리는 일층 : 단순 최적화 프레임으로서의 작업

새로운 제약을 둔 뒤, 그 내부에서 더 잘 작동하게 만드는 일

 

어떤 의미를 보존해야 하는지

어떤 변환이 합법인지

어떤 비용을 더 중요하게 볼지

그 기준 아래에서 실행, 메모리, fusion, lowering 을 최적화

이는 닫한 계, 다음이 미리 정해져 있음

 

보존해야 할 invariant

허용되는 표현 형식

비교 가능한 성능 지표

시스템이 보는 단위 (op, pattern, region, tile... )

이는 결국

 

기존 프레임보다 더 좋은 프레임을 하나 세우고, 그 안에서 효율을 끌어올리는 일

이는 완전히 브리콜라주적

  • 기존 계산 구조의 재배열
  • 기존 연산 의미를 다시 묶음
  • 기존 하드웨어 제약에 맞춰 표현의 변경
  • 기존 최적화 불가능 구간을 새로운 추상화로 흡수

이미 있는 계산 세계를 다른 분해 방식으로 재조립하는 일

 

2층 : 최적화 가능성의 조건 자체를 바꾸는 작업

성능 개선이 아닌 무엇을 최적화라고 부를 수 있는가를 바꾸는 층

기존 시스템은 이런 전제를 깔고 있음

  • operator 는 고정된 단위
  • graph boundary 가 의미 단위
  • 메모리는 구현 세부사항
  • semantic equivalence 는 coarse 하게만 다뤄도 된다
  • optimization 은 kernel selection / fusion / scheduilng 문제다

하지만 

개별 최적화를 건드는 것이 아닌, 이런 질문을 한다.

  • 연산의 같음은 어디서 결정되는가
  • 동일한 의미를 가진 다른 실현 형태를 어떻게 formalize 할 것인가
  • operator 이전 / 이후의 더 본질적인 단위가 있는가
  • memory movement, online reducibility, rematerializability 같은 것은 부차적 특성이 아닌 1급 의미 객체가 될 수 있는가
  • compiler 가 syntax 가 아니라 semantic invariants 를 중심으로 재구성될 수 있는가

최적화의 대상이 될 수 있는 구조를 다시 정의하는 일이다.