C.W.K.
Stream
Lesson 01 of 06 · published

MLX 가 진짜 뭐야

~14 min · mlx, introduction, philosophy

Level 0Curious
0 XP0/51 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

마케팅 문장 vs architectural 문장

마케팅 문구는 너한테 "MLX 는 Apple Silicon 에 최적화된 Apple 의 머신러닝 framework, NumPy 같은 API 와 lazy evaluation 갖춤" 이렇게 말해. 참인 문장이야. 동시에 쓸모없는 문장 — 모든 framework 의 마케팅이 다 저렇게 읽혀. 대신 architectural 문장 하나 줄게.

MLX 는 unified memory 를 default world 로 다루고, 별도 GPU 메모리 architecture 를 special case 로 다루는 array library 야. 이게 진짜 차이점. 다른 모든 선택 — lazy graph, function transform, NumPy 와의 가까운 친척 관계 — 은 다 그 결정 하나에서 흘러나와.

지루한 사실들 (얼른 넘어가게)

MLX 는 2023 년 12 월 에 publicly ship 됐어. 이 레슨 검증 스탬프 (2026-05-03) 기준 현재 버전:

  • mlx 0.31.x — core array library, MIT 라이선스
  • mlx-lm 0.31.x — 그 위의 language-model serving stack
  • 플러스 — mlx-vlm, mlx-audio, Hugging Face 의 mlx-community org, mlx-examples reference repo

Apple research project 야 — 오픈 소스지만 Apple ML research team 이 주도. Python, Swift, C++, C 바인딩 다 있어. 이 quest 는 처음부터 끝까지 Python 을 써 — 만나게 될 다른 AI 도구 전부 그게 사는 곳이니까.

"또 하나의 array library" 가 아니게 만드는 그 한 가지

NumPy 가 array 를 가르쳤어. PyTorch 가 gradient 붙은 array 를 가르쳤고. JAX 가 function transform 붙은 array 를 가르쳤고. MLX 는 GPU 와 CPU 가 같은 byte 를 같은 순간에 읽는 array 를 가르쳐. device='cuda:0' 없음. tensor.to(device) 없음. "이거 GPU 로 옮긴 적 있나?" 디버깅 없음.

작은 디테일처럼 들려. 안 그래. 다음 레슨이 통째로 그것에 바쳐져 — MLX 가 하는 다른 모든 게 그것의 모양으로 박혔으니까. 지금은 그냥 모양만 잡아 — array 가 두 프로세서가 다 보는 메모리에 살고, 그게 framework 의 design center 야. 문서 어딘가 묻혀 있는 feature 가 아니라.

이 quest 가 진짜 뭘 위한 거야

8 트랙. 51 레슨. "뭐 깔려 있나" 부터 "내 Mac 에서 Llama fine-tune 하고 OpenAI 호환 endpoint 로 서빙" 까지 — 모든 코드 블록은 현재 MLX 에서 다시 돌렸으니까 LLM 들이 MLX 코드 써달라고 했을 때 만드는 정중한 환각을 안 물려받아. (그 마지막 문제는 레슨 통째로 받아 — compare.lesson5 봐.)

네 머신의 버전 검증

어떤 레슨이든 import mlx.core as mx 치라고 하기 전에, 아래 버전 체크가 내가 이 quest 를 검증한 같은 MLX 들고 있는지 알려줘. 많이 뒤처져 있으면 env 에서 pip install -U mlx mlx-lm 먼저 돌려 — MLX 는 일부러 빨리 움직이고, 너는 latest 를 원하니까.

Code

빠른 버전 체크 (`mlx` conda env 안에서)·bash
# In a clean conda env on Apple Silicon
conda activate mlx

python -c "import mlx.core as mx; print('mlx:    ', mx.__version__)"
python -c "import mlx_lm;        print('mlx-lm: ', mlx_lm.__version__)"
python -c "import platform;      print('python: ', platform.python_version(), platform.machine())"

# Expected (verified 2026-05-03):
#   mlx:     0.31.2
#   mlx-lm:  0.31.3
#   python:  3.11.9 arm64
첫 MLX array — 빠진 게 뭔지 봐·python
import mlx.core as mx

a = mx.array([1.0, 2.0, 3.0, 4.0])
print(a)
print("dtype:  ", a.dtype)
print("shape:  ", a.shape)

# No device argument. No .to('cuda') / .to('mps').
# The default device IS the unified memory the GPU and CPU share.
print("device: ", mx.default_device())   # → Device(gpu, 0)  on Apple Silicon

External links

Exercise

mlx env 에서 Python REPL 열고 자기 말로 세 질문에 답해, 두 문장씩 — 글로 쓸 필요 없어, 입 밖으로 말할 수 있으면 돼. (1) mx.default_device() 가 네 Mac 에서 뭘 돌려주고, 그게 CPU/GPU 분리에 대해 뭘 말해줘? (2) pip show mlx mlx-lm 돌려 — 어떤 버전 위에 있고, 이 quest 의 meta.json 에 있는 verification 스탬프와 어떻게 비교돼? (3) Rosetta x86 Python env 에 MLX 를 pip install 하면 (실제로는 하지 마 — 상상만) 어떤 에러 예상되고, 왜? 이 트랙 레슨 2 가 네 추측을 확인해 줄 거야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.