MLIR

개요

MLIR 또는 Multi-Level Intermediate Representation은 모델 표현과 하드웨어별 코드를 생성하는 하위 수준 컴파일러/실행기 사이에 있는 컴파일러 유틸리티의 표현 형식 및 라이브러리입니다.

MLIR의 핵심은 최신 최적화 컴파일러를 위한 유연한 인프라입니다. 즉, IR (중간 표현)에 대한 사양과 해당 표현에 대해 변환을 수행하는 코드 툴킷으로 구성됩니다. (컴파일러 용어에서 상위 수준 표현에서 하위 수준 표현으로 이동할 때 이러한 변환을 "lowerings"라고 할 수 있습니다.)

MLIR은 LLVM의 영향을 많이 받았으며 많은 훌륭한 아이디어를 자유롭게 재사용합니다. 유연한 유형 시스템을 갖추고 있으며, 같은 컴파일 단위에서 여러 수준의 추상화를 결합하는 그래프를 표현, 분석 및 변환할 수 있습니다. 이러한 추상화에는 TensorFlow 연산, 중첩된 다형 루프 영역 외에도 LLVM 명령어와 고정 하드웨어 연산 및 유형도 포함됩니다.

MLIR은 다음과 같은 많은 그룹의 관심을 끌 것으로 기대합니다.

  • 머신러닝 모델의 성능 및 메모리 소비를 최적화하려는 컴파일러 연구원 및 구현자
  • TPU, 휴대 전화의 이동식 신경 하드웨어, 기타 사용자 정의 ASIC 등 하드웨어를 TensorFlow와 연결하는 방법을 찾고 있는 하드웨어 제조업체
  • 언어 바인딩을 작성하여 컴파일러 최적화 및 하드웨어 가속을 활용하려는 사람들

TensorFlow 에코시스템에는 여러 수준의 소프트웨어 및 하드웨어 스택에서 동작하는 여러 컴파일러 및 옵티마이저가 포함되어 있습니다. MLIR을 점진적으로 적용하여 이 스택의 모든 측면을 단순화할 수 있을 것으로 기대합니다.

MLIR overview diagram