XLA ์์ธ
๊ฐ์
XLA(Accelerated Linear Algebra)๋ Google์ด ๊ฐ๋ฐํ ์คํ์์ค ๋จธ์ ๋ฌ๋ ์ปดํ์ผ๋ฌ ํ๋ ์์ํฌ๋ก, TensorFlow ๋ฐ JAX ๋ชจ๋ธ์ ๋ค์ํ ํ๋์จ์ด ๊ฐ์๊ธฐ์์ ํจ์จ์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ์ต์ ํ๋ ์ค๊ฐ ํํ(IR)๊ณผ ์ฝ๋ ์์ฑ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. 2017๋ ์ ์๊ฐ๋ ์ดํ TPU, GPU, CPU ๋ฑ ๊ด๋ฒ์ํ ํ๋์จ์ด๋ฅผ ์ง์ํ๋ฉฐ, ์ต๊ทผ์๋ StableHLO๋ฅผ ํตํด ํ๋ ์์ํฌ ๋ ๋ฆฝ์ ์ธ ํธํ์ฑ์ ์ถ๊ตฌํ๊ณ ์๋ค.
XLA์ ํต์ฌ ์ค๊ณ ์ฒ ํ์ "์ง์ฐ ์ปดํ์ผ(lazy compilation)"๊ณผ "์๋ํฌ์๋ ์ต์ ํ"์ด๋ค. ๋ชจ๋ธ์ ์ฐ์ฐ ๊ทธ๋ํ๋ฅผ HLO(High Level Optimizer) ์ค๊ฐ ํํ์ผ๋ก ๋ณํํ ํ, ํ๋์จ์ด ํนํ ์ต์ ํ์ ์ฝ๋ ์์ฑ์ ์ํํ๋ค. ์ด๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํจํด ์ต์ ํ, ์ฐ์ฐ ์ตํฉ, ๋ณ๋ ฌํ ๋ฑ์ ์๋์ผ๋ก ์ํํ์ฌ ๋์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ค.
ํต์ฌ ๊ฐ๋
XLA ์คํ ์ํคํ ์ฒ
XLA ์คํ์ ํฌ๊ฒ ๋ค ๊ฐ์ง ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋๋ค:
| ๊ณ์ธต | ๋ชจ๋ | ์ค๋ช |
|---|---|---|
| ํ๋ก ํธ์๋ | TensorFlow/JAX | ๋ชจ๋ธ์ HLO๋ก ๋ณํ |
| ์ค๊ฐ ํํ | HLO (High Level Optimizer) | ๊ทธ๋ํ ์์ค ์ถ์ํ |
| ์ต์ ํ | XLA Compiler | ์ฐ์ฐ ์ตํฉ, ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ |
| ๋ฐฑ์๋ | Target Specific | TPU/GPU/CPU๋ณ ์ฝ๋ ์์ฑ |
HLO: ํต์ฌ ์ค๊ฐ ํํ
XLA์ ๋ชจ๋ ์ต์ ํ๋ HLO(High Level Optimizer) ์ค๊ฐ ํํ์ ์ค์ฌ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. HLO๋ ํ๋ ์์ํฌ ๋ ๋ฆฝ์ ์ธ ์ ๋ ฌ๋ ์ด์ ๋ธ๋ฆฌ์ ๊ฐ์ ์ญํ ์ ํ๋ฉฐ, ๋ค์ ํน์ง์ ๊ฐ์ง๋ค:
- HLO Instruction: ๊ฐ๋ณ ์ฐ์ฐ์ ํํํ๋ ๊ธฐ๋ณธ ๋จ์.
add,multiply,convolution๋ฑ์ ๋ช ๋ น์ด๋ก ๊ตฌ์ฑ๋๋ค. - HLO Computation: ๋ช ๋ น์ด๋ค์ ๊ทธ๋ํ ๊ตฌ์กฐ. ๋ชจ๋ธ์ ์๋ธ๊ทธ๋ํ์ ๋์ํ๋ค.
- HLO Module: ์ ์ฒด ๋ชจ๋ธ์ ๋ํ๋ด๋ ์ต์์ ๊ตฌ์กฐ. ์ฌ๋ฌ Computation์ ํฌํจํ๋ค.
StableHLO: ํ๋ ์์ํฌ ๋ ๋ฆฝ์ IR
StableHLO๋ XLA์ ๋ฐ์ ๋ ํํ๋ก, ํ๋ ์์ํฌ ๊ฐ ํธํ์ฑ์ ์ถ๊ตฌํ๋ ์คํ์์ค ํ๋ก์ ํธ์ด๋ค:
- OPSET ์ ์: ์์ ์ ์ธ ์ฐ์ฐ ์ธํธ๋ฅผ ์ ์ํ์ฌ ํ๋ ์์ํฌ ๊ฐ ์ด์์ฑ ๋ณด์ฅ
- Versioned Serialization: ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ ์ง๋ ฌํ ํ์
- ํฌํฐ๋ธ๋ฆฌํฐ: TensorFlow, JAX, PyTorch ๋ฑ ๋ค์ํ ํ๋ ์์ํฌ์์ ์ฌ์ฉ ๊ฐ๋ฅ
- StableHLO Tooling: ๋ณํ, ๊ฒ์ฆ, ์ง๋ ฌํ ๋๊ตฌ ์ ๊ณต
JIT ์ปดํ์ผ
XLA๋ JIT(Just-In-Time) ์ปดํ์ผ ๋ฐฉ์์ ์ฑํํ์ฌ ์คํ ์์ ์์ ์ต์ ํ๋ฅผ ์ํํ๋ค:
- ์ง์ฐ ์ปดํ์ผ(Lazy Compilation): ๋ชจ๋ธ ์คํ ์ง์ ์ ์ปดํ์ผ ์ํ
- ์บ์ฑ: ์ปดํ์ผ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ์ฌ ๋ฐ๋ณต ์คํ ์ ์ค๋ฒํค๋ ์ต์ํ
- ๋์ shape ์ง์: ๋ฐํ์์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ ํ ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ
๋น๊ต/๋ถ์
XLA vs ๋ค๋ฅธ AI ์ปดํ์ผ๋ฌ
| ํญ๋ชฉ | XLA | TVM | TensorRT | Glow |
|---|---|---|---|---|
| ๊ฐ๋ฐ์ฌ | Apache | NVIDIA | Meta | |
| ๋ผ์ด์ ์ค | Apache 2.0 | Apache 2.0 | ๋ ์ | BSD |
| ์ง์ ํ๋์จ์ด | TPU, GPU, CPU | ๋ฒ์ฉ (GPU/CPU/NPU/TPU) | NVIDIA GPU | GPU, NPU |
| ์๋ ํ๋ | ์์ | MetaSchedule | ์์ | ์์ |
| ํ๋ ์์ํฌ ์ง์ | TensorFlow, JAX | ONNX, PyTorch, TF, MXNet | TensorRT ํ์ | PyTorch, Caffe2 |
| LLM ์ง์ | StableHLO | Relax + TIRx | TensorRT-LLM | ์ ํ์ |
| ๋ถ์ฐ ์คํ | TPU Pod | Disco (NCCL/RCCL) | ๋ด์ฅ | ์ ํ์ |
XLA ์ต์ ํ ๊ธฐ๋ฒ ๋น๊ต
| ์ต์ ํ | XLA | TVM | TensorRT |
|---|---|---|---|
| ์ฐ์ฐ ์ตํฉ | O | O | O |
| ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ | O | O | O |
| ์๋ ํ๋ | X | O (MetaSchedule) | X |
| ๋์ shape | O | O | ์ ํ์ |
| ์ ๋ฐ๋ ์ต์ ํ | O | O | O (FP16/INT8) |
ํ๋์จ์ด๋ณ XLA ์ง์ ๋น๊ต
| ํ๋์จ์ด | XLA ์ง์ | ํน์ง |
|---|---|---|
| TPU | ์์ ์ง์ | XLA์ ์ฃผ์ ํ๊ฒ, ์ต์ ํ๋ PTX ์์ฑ |
| GPU (NVIDIA) | ์ง์ | CUDA/cuDNN ํธ์ถ ์ฝ๋ ์์ฑ |
| GPU (AMD) | ์ ํ์ | ROCm ๋ฐฑ์๋ ๊ฐ๋ฐ ์ค |
| CPU | ์ง์ | LLVM ๊ธฐ๋ฐ ๊ธฐ๊ณ์ด ์์ฑ |
๋์ ์๋ฆฌ
XLA ์ปดํ์ผ๋ฌ ํ์ดํ๋ผ์ธ
-
๋ชจ๋ธ ์ํฌํธ ๋จ๊ณ:
- TensorFlow:tf.function(jit_compile=True)๋ฐ์ฝ๋ ์ดํฐ ์ฌ์ฉ
- JAX:@jax.jit๋ฐ์ฝ๋ ์ดํฐ ์ฌ์ฉ
- ํ๋ ์์ํฌ ๊ทธ๋ํ๋ฅผ HLO๋ก ๋ณํ -
HLO ๊ทธ๋ํ ์ต์ ํ ๋จ๊ณ:
- Constant Folding: ์ปดํ์ผ ์์ ์ ์์ ์ฐ์ฐ ์ํ
- Dead Code Elimination: ๋ถํ์ํ ์ฐ์ฐ ์ ๊ฑฐ
- Operation Fusion: ๋ ๋ฆฝ์ ์ธ ์ฐ์ฐ ๊ฒฐํฉ
- Layout Optimization: ํ๋์จ์ด์ ์ต์ ๋ ๋ฐ์ดํฐ ๋ ์ด์์ ๊ฒฐ์ -
HLO ๋ก์ด๋ง ๋จ๊ณ:
- HLO ๋ช ๋ น์ด๋ฅผ ํ๋์จ์ด๋ณ ์ค๊ฐ ํํ์ผ๋ก ๋ณํ
- TPU: XLA-specific PTX ์์ฑ
- GPU: CUDA/cuDNN ํธ์ถ ์ฝ๋ ์์ฑ
- CPU: LLVM IR ์์ฑ -
์ฝ๋ ์์ฑ ๋จ๊ณ:
- ํ๋์จ์ด๋ณ ๊ธฐ๊ณ์ด ์์ฑ
- ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ๊ด๋ฆฌ ์ฝ๋ ์์ฑ
- ๋ฐํ์ ํตํฉ ์ฝ๋ ์์ฑ -
๋ฐํ์ ์คํ ๋จ๊ณ:
- ์ปดํ์ผ๋ ์ปค๋ ์คํ
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐ ๋๊ธฐํ
- ๊ฒฐ๊ณผ ๋ฐํ
HLO ์ฐ์ฐ ์ตํฉ
HLO๋ ๋ค์ํ ์ตํฉ ํจํด์ ์ง์ํ๋ค:
| ์ตํฉ ํจํด | ์ค๋ช | ์์ |
|---|---|---|
| ์นดํ ๊ณ ๋ฆฌ ์ตํฉ | ๋์ผํ ์นดํ ๊ณ ๋ฆฌ์ ์ฐ์ฐ ๊ฒฐํฉ | Conv + Bias + ReLU |
| ์์ง ์ตํฉ | ๋ ์ด์ด ๊ฐ ์ตํฉ | Conv โ Pool โ BN |
| ์ํ ์ตํฉ | ๋์ผ ์ ๋ ฅ์ ๊ณต์ ํ๋ ์ฐ์ฐ ์ตํฉ | ๋ณ๋ ฌ ์ปจ๋ณผ๋ฃจ์ ๋ธ๋์น |
| ์ฌ์ฌ์ฉ ์ตํฉ | ์ค๊ฐ ๊ฒฐ๊ณผ ์ฌ์ฌ์ฉ | Attention ์ค์ฝ์ด ๊ณ์ฐ |
TPU์์ ํตํฉ
XLA๋ TPU์ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์๋ค:
- TPU Compiler: HLO๋ฅผ TPU-specific PTX๋ก ๋ณํ
- ๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์: TPU์ 2D ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ์ต์ ํ๋ ๋ ์ด์์ ์๋ ๊ฒฐ์
- ์ฐ์ฐ ์ค์ผ์ค๋ง: TPU์ ๋งคํธ๋ฆญ์ค ์ ๋ ํ์ฉ๋๋ฅผ ๊ทน๋ํํ๋ ์ค์ผ์ค๋ง
- ๋ถ์ฐ ์คํ: TPU Pod ๊ฐ ํต์ ์ต์ ํ
์ฅ๋จ์
XLA ์ฅ๋จ์
| ์ฅ์ | ๋จ์ |
|---|---|
| TensorFlow/JAX ๊ธด๋ฐ ํตํฉ | TensorFlow/JAX ์ธ ์ง์ ์ ํ |
| TPU ์ต์ ํ | GPU ์ฑ๋ฅ ์ ํ |
| JIT ์ปดํ์ผ๋ก ๋์ shape ์ง์ | ๋ฐํ์ ์ปดํ์ผ ์ค๋ฒํค๋ |
| StableHLO๋ก ํ๋ ์์ํฌ ๋ ๋ฆฝ์ฑ ์ถ๊ตฌ | ์๋ ํ๋ ๊ธฐ๋ฅ ๋ถ์กฑ |
| Google์ ์ง์์ ์ธ ์ง์ | ์ปค๋ฎค๋ํฐ ์์กด |
| ์์ ์ ์ธ HLO OPSET | ์ผ๋ถ ์ต์ ํ๋์จ์ด ์ง์ ์ง์ฐ |
XLA ์ฌ์ฉ ์ ๊ณ ๋ ค์ฌํญ
| ์ํฉ | ๊ถ์ฅ ์ ํ |
|---|---|
| TensorFlow/JAX + TPU ์ฌ์ฉ ์ | XLA |
| NVIDIA GPU ์ถ๋ก ๋ง ํ์ํ ๊ฒฝ์ฐ | TensorRT |
| ๋ค์ํ ํ๋์จ์ด ํ๊ฒ์ด ํ์ํ ๊ฒฝ์ฐ | TVM |
| ์ค์๊ฐ ์ถ๋ก ์ฑ๋ฅ์ด ์ต์ฐ์ ์ธ ๊ฒฝ์ฐ | TensorRT ๋๋ ์๋ ์ต์ ํ |
| ์ฐ๊ตฌ์ฉ ํ๋กํ ํ์ดํ | TVM (MetaSchedule ํ์ฉ) |
| ์ฃ์ง ๋๋ฐ์ด์ค ๋ฐฐํฌ | TVM (ํฌ๋ก์ค ์ปดํ์ผ + RPC) |
๊ด๋ จ ๊ธฐ์
๊ด๋ จ ๋ฌธ์
- AI ์ปดํ์ผ๋ฌ ๊ฐ์: AI ์ปดํ์ผ๋ฌ ์ ์ฒด ์งํ
- TVM ์์ธ: TVM๊ณผ XLA ๋น๊ต
- CUDA ์์ธ: XLA GPU ๋ฐฑ์๋์ ๊ด๋ จ๋ CUDA ์ํคํ ์ฒ
- ROCm ์์ธ: AMD GPU ๊ฐ๋ฐ ํ๋ซํผ, XLA ROCm ๋ฐฑ์๋
- TPU ์ํํธ์จ์ด ์คํ: JAX, XLA, TPU ๋ฐํ์
- AI ๊ฐ์๊ธฐ ๊ฐ์: XLA๊ฐ ์ง์ํ๋ ํ๋์จ์ด ๊ฐ์๊ธฐ ๋น๊ต
์ฐธ๊ณ ๋ฌธํ
- "XLA: Optimizing Compiler for Machine Learning," Google AI Blog, 2017
- StableHLO Specification: https://github.com/openxla/stablehlo
- "StableHLO: A Portable, High-Level ML Dialect," arXiv 2023
- TensorFlow XLA Documentation: https://www.tensorflow.org/xla
- JAX Documentation: https://jax.readthedocs.io/
- "The MLIR Infrastructure: A Systematic Approach to ML Compiler Infrastructure," LLVM Developer Conference, 2022
- Google TPU Documentation: https://cloud.google.com/tpu/docs
ํต์ฌ ์ ๋ฆฌ
- XLA๋ Google์ด ๊ฐ๋ฐํ ์คํ์์ค ML ์ปดํ์ผ๋ฌ๋ก, TensorFlow ๋ฐ JAX ๋ชจ๋ธ์ TPU, GPU, CPU ๋ฑ ๋ค์ํ ํ๋์จ์ด์์ ํจ์จ์ ์ผ๋ก ์คํํ๊ธฐ ์ํด ์ต์ ํ๋ ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ค
- HLO(High Level Optimizer) ์ค๊ฐ ํํ์ ํตํด ๊ทธ๋ํ ์์ค ์ต์ ํ๋ฅผ ์ํํ๋ฉฐ, StableHLO๋ฅผ ํตํด ํ๋ ์์ํฌ ๋ ๋ฆฝ์ ์ธ ํธํ์ฑ์ ์ถ๊ตฌํ๊ณ ์๋ค
- JIT ์ปดํ์ผ ๋ฐฉ์์ ์ฑํํ์ฌ ์คํ ์์ ์์ ์ต์ ํ๋ฅผ ์ํํ๋ฉฐ, ์ฐ์ฐ ์ตํฉ, ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ, ๋ณ๋ ฌํ ๋ฑ์ ์๋์ผ๋ก ์ํํ๋ค
- TPU์ ํนํ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์์ผ๋ฉฐ, TPU-specific PTX ์์ฑ๊ณผ 2D ๋ฉ๋ชจ๋ฆฌ ๋ ์ด์์ ์ต์ ํ๋ฅผ ์ง์ํ๋ค
- XLA์ ์ฃผ์ ๊ฐ์ ์ TensorFlow/JAX ์ํ๊ณ์์ ํตํฉ์ด๋ฉฐ, ๋จ์ ์ ํ๋ ์์ํฌ ์ธ ์ง์ ์ ํ๊ณผ ์๋ ํ๋ ๊ธฐ๋ฅ ๋ถ์กฑ์ด๋ค