마케팅 말고, 설계로 설명해봐
흔한 소개문은 이래. "MLX는 Apple Silicon에 최적화된 Apple의 머신러닝 프레임워크이며, NumPy와 비슷한 API와 지연 실행을 제공한다." 틀린 말은 아니야. 다만 웬만한 프레임워크 소개문도 비슷해서, 정작 MLX가 왜 따로 존재하는지는 안 보여줘. 설계의 출발점부터 잡자.
MLX는 통합 메모리를 기본 전제로 삼고, GPU 메모리가 따로 떨어진 구조를 오히려 예외로 보는 배열 라이브러리야. 차이는 여기서 생겨. 지연 실행 그래프, 함수 변환, NumPy와 닮은 API도 결국 이 선택에서 뻗어나와.
지루하지만 필요한 사실
MLX는 2023년 12월에 공개됐어. 이 레슨을 검증한 2026-05-03 기준 버전은 이래.
mlx0.31.x — 핵심 배열 라이브러리, MIT 라이선스mlx-lm0.31.x — 그 위에 얹힌 언어 모델 실행·서빙 도구- 그 밖에
mlx-vlm,mlx-audio, Hugging Face의mlx-community조직, 예제 기준 저장소인mlx-examples가 있어
MLX는 Apple의 연구 프로젝트야. 오픈 소스지만 Apple 머신러닝 연구팀이 이끌어. Python, Swift, C++, C 바인딩을 모두 제공하고, 이 퀘스트에서는 처음부터 끝까지 Python을 써. 앞으로 만날 다른 AI 도구도 대부분 Python에 모여 있으니까.
그저 배열 라이브러리 하나가 더 생긴 게 아냐
NumPy는 배열을 익숙하게 만들었고, PyTorch는 배열에 기울기를 붙였고, JAX는 배열에 함수 변환을 붙였어. MLX가 들고 온 건 GPU와 CPU가 같은 바이트를 동시에 읽는 배열이야. device='cuda:0'도, tensor.to(device)도 없어. "이 데이터를 GPU로 옮겼던가?"를 추적하는 디버깅도 사라져.
사소한 차이처럼 보여도 전혀 아니야. 다음 레슨 하나를 통째로 써야 할 만큼 핵심이거든. 지금은 이 그림만 잡아둬. 배열은 두 프로세서가 함께 보는 메모리에 살고, 그 사실이 MLX 설계의 중심이야. 문서 구석에 붙은 기능 하나가 아니야.
이 퀘스트가 데려갈 곳
8개 트랙, 51개 레슨이야. 설치 상태를 확인하는 데서 시작해, Mac에서 Llama를 파인튜닝하고 OpenAI 호환 엔드포인트로 서빙하는 데까지 가. 모든 코드 블록은 현재 MLX에서 다시 실행해 검증했어. LLM에 MLX 코드를 부탁했다가 그럴듯한 가짜 API를 받는 일까지 물려줄 생각은 없거든. 그 문제는 compare.lesson5에서 레슨 하나로 제대로 다뤄.
먼저 버전을 확인해
import mlx.core as mx를 입력하기 전에 아래 확인부터 돌려봐. 지금 환경이 이 퀘스트를 검증한 MLX와 얼마나 가까운지 바로 보여줘. 많이 뒤처졌다면 그 환경에서 pip install -U mlx mlx-lm을 먼저 실행해. MLX는 일부러 빠르게 움직이는 프로젝트라, 시작할 때는 최신판을 쓰는 편이 맞아.