XLA(Accelerated Linear Algebra)는 Google에서 개발한 선형 대수 전용 도메인 특화 컴파일러로, 머신러닝 모델을 최적화하여 소스 코드 변경 없이 성능을 획기적으로 향상시키는 기술입니다[1][2]. 단순한 컴파일러를 넘어 현대 AI 생태계의 핵심 인프라로 자리잡고 있습니다.
XLA의 기본 개념과 작동 원리
컴파일러 기반 최적화 접근법
기존의 TensorFlow 실행 방식에서는 각 연산이 개별적으로 실행되며, 각각의 사전 컴파일된 GPU 커널이 실행기에 의해 호출됩니다[3]. XLA는 이와는 완전히 다른 접근법을 사용합니다.
XLA는 TensorFlow 그래프를 특정 모델에 최적화된 계산 커널 시퀀스로 컴파일합니다[3]. 예를 들어, 다음과 같은 간단한 계산에서:
def model_fn(x, y, z):
return tf.reduce_sum(x + y * z)
일반적인 TensorFlow는 곱셈, 덧셈, 리덕션을 위해 세 개의 별도 커널을 실행하지만, XLA는 이를 단일 GPU 커널로 융합(fusion)하여 실행합니다[3]. 더 중요한 것은 중간 결과(y*z
, x+y*z
)를 메모리에 저장하지 않고 GPU 레지스터에서 직접 스트리밍한다는 점입니다[3].
내부 구조: HLO를 중심으로 한 컴파일 과정
XLA의 핵심은 HLO(High Level Operations)라는 중간 표현입니다[4]. 컴파일 과정은 다음과 같은 단계로 진행됩니다:
- StableHLO로 모델 그래프 변환: ML 프레임워크의 모델을 버전화된 HLO 연산 집합으로 변환[4]
- 타겟 독립적 최적화: CSE(Common Subexpression Elimination), 연산 융합, 메모리 할당을 위한 버퍼 분석 수행[4]
- 백엔드별 최적화: GPU 백엔드는 GPU 프로그래밍 모델에 특화된 연산 융합과 스트림 분할 수행[4]
- 코드 생성: CPU/GPU 백엔드는 LLVM을 사용하여 효율적인 네이티브 코드 생성[4]
융합 최적화: XLA의 핵심 기술
연산 융합의 실제 효과
XLA의 가장 중요한 최적화는 융합(fusion)입니다[3]. 메모리 대역폭이 하드웨어 가속기에서 가장 제한적인 자원이기 때문에, 메모리 연산 제거가 성능 향상의 핵심입니다[3].
예를 들어, softmax 연산의 경우:
softmax = exp(logits) / reduce_sum(exp(logits), dim)
기존 방식에서는 지수, 리덕션, 요소별 나누기가 각각 별도의 커널로 실행되어 불필요한 메모리 할당과 데이터 이동이 발생합니다[5]. XLA는 이러한 연산들을 자동으로 융합하여 수동 최적화한 복합 연산과 동일한 성능을 달성합니다[5].
루프 융합을 통한 추가 최적화
더 복잡한 시나리오에서 XLA는 여러 연산을 단일 요소별 루프로 융합할 수 있습니다[5]. 예를 들어:
- 행렬 곱셈 결과에 편향 추가
- ReLU 활성화 함수 적용
- Softmax 계산
이 모든 과정이 단일 요소별 루프에서 처리되며, 중간 배열을 메모리에 생성할 필요가 없습니다[5]. 결과적으로 s[j] = softmax[j](ReLU(bias[j] + matmul_result[j]))
와 같은 최종 계산이 단일 최적화된 커널에서 수행됩니다[5].
멀티 프레임워크 및 하드웨어 지원
OpenXLA 프로젝트: 산업 표준화
XLA는 현재 OpenXLA 프로젝트의 일부로 발전하고 있습니다[2]. Google, NVIDIA, AMD, Intel, Meta, Apple, Arm, Alibaba, Amazon 등 업계 선도 기업들이 공동으로 개발하고 있어, ML 하드웨어 및 소프트웨어 회사들의 협력으로 구축됩니다[2].
프레임워크 통합 현황
TensorFlow: jit_compile=True
옵션을 통한 네이티브 지원[1][3]
@tf.function(jit_compile=True)
def optimized_function(x):
return some_computation(x)
PyTorch: PyTorch/XLA를 통한 TPU, GPU, CPU 지원[6][7]
JAX: XLA를 기본 백엔드로 사용하여 설계된 프레임워크[8][9]
하드웨어 지원 범위
- GPU: NVIDIA GPU는 LLVM NVPTX 백엔드를 통해 지원[4]
- TPU: Google의 텐서 처리 유닛을 위한 전용 최적화[6]
- CPU: 다양한 CPU ISA 지원[4]
- 기타 가속기: 플러그인 인프라를 통한 확장 가능[4]
성능 최적화 효과
실제 성능 개선 사례
Hugging Face Transformers에서는 GPT2, T5, OPT 같은 텍스트 생성 모델과 Whisper 같은 음성 처리 모델에서 최대 100배의 속도 향상을 확인했습니다[1].
Google의 공식 자료에 따르면 NVIDIA GPU 사용 시 최대 50% 성능 향상이 있었습니다[10]. 이는 단순한 속도 향상이 아니라 메모리 사용량 감소, 배치 크기 증가, 전체적인 처리량 향상을 포함합니다.
최적화 메커니즘
- 메모리 대역폭 최적화: 불필요한 메모리 접근 제거[3]
- 커널 융합: 여러 연산을 단일 커널로 결합[3]
- 대기 시간 숨김: 비동기 통신 오버랩[11]
- 자동 병렬화: GSPMD 파티셔너를 통한 샤딩 지원[12]
사용법과 실제 적용
TensorFlow에서의 사용
# 명시적 컴파일
@tf.function(jit_compile=True)
def train_step(images, labels):
# 훈련 로직
return loss
# Keras 모델 컴파일 시 활성화
model.compile(optimizer='adam', loss='mse', jit_compile=True)
JAX에서의 활용
JAX는 XLA를 중심으로 설계되어 가장 자연스러운 XLA 사용 경험을 제공합니다[9]:
import jax
@jax.jit # XLA 컴파일 자동 활성화
def optimized_function(x):
return x ** 2 + 2 * x + 1
# 자동 미분과 XLA 최적화 동시 활용
grad_fn = jax.grad(optimized_function)
장점과 한계
주요 장점
- 소스 코드 변경 없이 성능 향상: 기존 코드를 그대로 사용하면서 최적화 가능[1][2]
- 자동 최적화: 수동으로 최적화하기 어려운 복잡한 융합 패턴 자동 적용[3]
- 멀티 백엔드 지원: 하나의 코드로 다양한 하드웨어에서 실행[2]
- 미래 확장성: 새로운 하드웨어 백엔드 추가 용이[4]
제한사항과 단점
- 의존성 복잡성: JIT 컴파일 사용 시 XLA 런타임, eigen, protobuf, LLVM 등 다양한 의존성이 필요[10]
- 컴파일 시간: 첫 실행 시 컴파일 오버헤드 발생
- 동적 그래프 제한: 완전히 동적인 그래프 구조에서는 최적화 효과 제한[8]
- 디버깅 어려움: 최적화 과정에서 원본 코드와 실행 코드 간 차이로 인한 디버깅 복잡성
XLA의 미래와 AI 생태계에서의 역할
XLA는 단순한 최적화 도구를 넘어 AI 인프라의 표준화를 이끌고 있습니다. OpenXLA 프로젝트를 통해 프레임워크와 하드웨어 간의 단편화 문제를 해결하고, 개발자들이 최적의 성능을 쉽게 달성할 수 있도록 지원하고 있습니다[13].
특히 대규모 언어 모델과 멀티모달 AI가 주류가 되면서, XLA의 자동 최적화와 멀티 백엔드 지원은 더욱 중요해지고 있습니다. 클라우드에서 엣지까지 다양한 환경에서 일관된 성능을 제공하는 XLA는 AI 애플리케이션의 실용적 배포를 위한 핵심 기술로 자리잡고 있습니다[14].
출처
[1] TensorFlow 모델을 위한 XLA 통합 – Hugging Face https://huggingface.co/docs/transformers/ko/tf_xla
[2] XLA: 머신러닝을 위한 컴파일러 최적화 – TensorFlow https://www.tensorflow.org/xla
[3] XLA: Optimizing Compiler for Machine Learning | OpenXLA Project https://openxla.org/xla/tf2xla
[4] XLA 아키텍처 – TensorFlow https://www.tensorflow.org/xla/architecture
[5] TensorFlow용 컴파일러인 XLA를 소개합니다. – 구글 개발자 블로그 https://developers-kr.googleblog.com/2017/03/xla-tensorflow-compiled.html
[6] [DL] PyTorch: TPU사용하기 – ds31x – 티스토리 https://ds31x.tistory.com/225
[7] How to run with PyTorch/XLA:GPU https://docs.pytorch.org/xla/master/gpu.html
[8] [GN] PyTorch는 죽었다. JAX 만세 – 파이토치 한국 사용자 모임 https://discuss.pytorch.kr/t/gn-pytorch-jax/5069
[9] JAX: Just Another XLA 설명 – DevHwi – 티스토리 https://devhwi.tistory.com/45
[10] XLA를 소개합니다. – 내 맘대로 보는 세상 https://b.mytears.org/2019/08/3022/
[11] What is a XLA (Accelerated Linear Algebra) – AI Terms Glossary https://ai-terms-glossary.com/item/xla/
[12] PyTorch는 죽었다. JAX 만세 – GeekNews https://news.hada.io/topic?id=16369
[13] OpenXLA 공개 – 머신러닝을 가속하고 단순화 시켜주는 프로젝트 https://news.hada.io/topic?id=8658
[14] 통합 AI 개발: Google OpenXLA는 오픈 소스이며 모든 프레임워크와 … https://m.php.cn/ko/faq/530388.html
[15] tf.xla.experimental.compile | TensorFlow v2.16.1 https://www.tensorflow.org/api_docs/python/tf/xla/experimental/compile
[16] XLA – Hugging Face https://huggingface.co/docs/transformers/en/tf_xla
[17] tf.function과 함께 XLA 사용하기 https://www.tensorflow.org/xla/tutorials/compile
[18] 모델 최적화: 빠른 가이드 | Ultralytics https://www.ultralytics.com/ko/blog/what-is-model-optimization-a-quick-guide
[19] 소프트웨어 최적화 기법 소개 – 네이버 블로그 – NAVER https://blog.naver.com/PostView.naver?blogId=suresofttech&logNo=221743787016
[20] colab에서 TPU를 사용할 때 오류가 발생해서 조언 구해봅니다 https://discuss.pytorch.kr/t/colab-tpu/1336
[21] [DeepLearning] JAX vs PyTorch: Comparing Two Deep … – 42JerryKim https://42jerrykim.github.io/post/2024-08-22-jax-vs-pytorch/
[22] 기계 학습을 가속화하고 단순화하는 오픈 소스 프로젝트인 OpenXLA https://www.linuxadictos.com/ko/openxla-un-proyecto-open-source-para-acelerar-y-simplificar-el-aprendizaje-automatico.html
[23] XLA용 MLIR CodeGen – TensorFlow https://www.tensorflow.org/mlir/xla_gpu_codegen
[24] StableHLO 사양 | OpenXLA Project https://openxla.org/stablehlo/spec
[25] 그래프 뷰어 도구 https://openxla.org/xprof/graph_viewer
[26] [Study] JAX&Flax(1) – XLA {작성중} – velog https://velog.io/@eric9898/Study-JAXFlax1-XLA-%EC%9E%91%EC%84%B1%EC%A4%91
[27] MSA란? ② 장점과 단점 – 메타넷글로벌 https://metanetglobal.com/bbs/board.php?bo_table=tech&wr_id=136
[28] [엑셀VBA/초보자] xla 파일 (5일차) – Worthless Theory – 티스토리 https://sunnybong.tistory.com/780
[29] [PDF] 딥러닝 컴파일러 성능비교 https://leejaymin.github.io/assets/pdf/dc18.pdf
[30] 칸반보드의 장점과 단점, 효율 2배 높이는 방법은? – 플로우 https://flow.team/blog/ceo/18091/
[31] 가상화 환경별 GPU 기반 AI 워크로드 성능 비교 – kt cloud [Tech blog] https://tech.ktcloud.com/entry/2025-04-ktcloud-gpu-ai-%EC%84%B1%EB%8A%A5%EC%B8%A1%EC%A0%95-%EB%B9%84%EA%B5%90
[32] xla/docs/architecture.md at main · openxla/xla – GitHub https://github.com/openxla/xla/blob/main/docs/architecture.md
[33] OpenXLA Project https://openxla.org
[34] [영상이해를 위한 최적화 기법] 강좌 소개 – 블로그 https://blog.naver.com/kaist_celt/221368094107
답글 남기기