MLIR 언어
개요
서로 다른 하드웨어 및 소프트웨어 대상을 분리하기 위해 MLIR에는 다음과 같은 "언어"가 있습니다.
TensorFlow IR, TensorFlow 그래프에서 가능한 모든 것을 나타냅니다.
XLA HLO IR, XLA의 컴파일 기능(특히 TPU에 대한 출력 포함)을 활용하도록 설계되었습니다.
다형 표현과 최적화에 초점을 맞춘 실험적인 affine 언어
LLVM IR, LLVM 자체 표현과의 1:1 매핑을 사용하여 MLIR이 LLVM을 통해 GPU 및 CPU 코드를 내보낼 수 있습니다.
TensorFlow Lite, 모바일 플랫폼에서 실행되는 코드로 변환됩니다.
각 언어는 "이것은 이항 연산자이며, 입력과 출력의 유형이 같습니다."와 같이 정의된 고정 연산 집합으로 구성됩니다.
MLIR에 추가하기
MLIR에는 전 세계적으로 알려진 연산의 고정/내장 목록이 없습니다("내부 함수" 없음). 언어는 완전히 사용자 정의 유형을 정의할 수 있으며, MLIR이 LLVM IR 유형 시스템(일급 집계 포함), 양자화 유형과 같은 ML 최적화 가속기에 중요한 도메인 추상화, Swift 또는 Clang 유형 시스템(Swift/Clang 선언 노드를 중심으로 구축) 등을 모델링할 수 있습니다.
하위 수준의 새로운 컴파일러를 연결하려면 TensorFlow Graph 언어와 자신의 언어 간에 새로운 언어와 수준 낮추기(lowerings)를 생성합니다. 이렇게 하면 하드웨어 및 컴파일러 제조업체 경로가 매끄러워집니다. 같은 모델에서 다양한 수준의 언어를 대상으로 할 수도 있습니다. 높은 수준의 옵티마이저는 IR의 익숙하지 않은 부분을 존중하고 낮은 수준에서 처리할 때까지 기다립니다.