202x 年代 AI compiler 架構發展簡述

Compiler 基礎元素

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 會有哪些 事情要處理

Reference

關於

AI Computing / 武術 / 登山 / IT / - 貪多而正努力咀嚼的人生小吃貨