202x 年代 AI compiler 架構發展簡述
Compiler 基礎元素
-
Frontend、Optimizer、backend
圖片引用自 https://aosabook.org/en/v1/llvm.html
-
作業模組
圖片引用自 * 2024 Compilers: Talking to The Hardware
AI Compiler
AI compiler 就是指 input 的 source code 會是各種 AI model、最後產生在各個硬體架構上執行的 machine code
LLVM & MLIR
-
LLVM 原本是 Low-Level Virtual Machine,是一個 C++ base 的 compiler
定義了一套 compiler 框架 以及 Intermediate Representation,IR
現在通常被當做是 machine code 前的後端處理模組 -
MLIR, Multi-Level Intermediate Representation
MLIR 是 LLVM 相關的 IR 模組
在 compiler 操作上介於 application 跟 LLVM IR 之間
domain-specific languages
像是 Pytorch、TensorFlow、TVM 這些框架定義下的 model 格式 file,
這個的目的是提供讓 User 方便使用的 api,讓 User 不用理解底層實作方式就可以直接進行開發
Open Source AI compiler
- TensorRT
- OpenXLA\XLA
- Google 主導, 在 TensorFlow 上加速線性代數的 compiler、後來進而支援 JAX
- Glow
- Facebook 主導,pytorch 在 TPU 上會導入 XLA,但在其他硬體上使用 Glow
- TVM
- Apache 主導
- OpenAI-Triton
- OpenAI 主導
延伸 QA
Q: 架構區分長什麼樣子
Q: frontend 跟 backend 的差異是什麼
Q: 要支援一個不同的 Target 會有哪些 事情要處理