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

어떤 Mac 이 MLX 자격이 있어

~10 min · hardware, apple-silicon, macos

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

하드웨어 솔직하게, 먼저

MLX 는 모든 M 시리즈 Mac 에서 돌아. 그게 기술적인 답. 솔직한 답은 "돌아" 가 많은 영역을 덮는다는 것 — "이 quest 의 51 레슨 할 수 있어" 부터 "70B 모델 fine-tune 하고 책상에서 서빙 가능" 까지. 같은 framework, 매우 다른 실용 경험.

이 레슨은 실용 호환성 지도 — 최소 요구사항이 진짜 뭔지, 각 Mac tier 가 현실적으로 뭘 할 수 있는지, 두 개의 터미널 명령으로 네 앞에 뭐가 있는지 확인하는 법.

최소 바

  • Apple Silicon Mac — M 시리즈 칩 아무거나. Intel Mac 은 out. (MLX 는 이제 Linux 에서 부분적 CUDA backend 가 있지만, 그건 다른 이야기. Mac 에선 M 시리즈 전용.)
  • macOS ≥ 14.0 (Sonoma) — 그 이전 macOS 버전은 MLX 가 의존하는 Metal feature 들을 안 줘. macOS 15 (Sequoia), 16 (Tahoe) 도 OK.
  • Python ≥ 3.10, ARM 으로 native 하게 돌아 (Rosetta x86 emulation 아래 안 됨). 다음 트랙의 lesson 1 이 이걸 검증하는 과정 안내.

이 중 어느 거든 실패하면 MLX 에 대한 에러를 안 받아 — 혼란스러운 pip install 에러를 받거나, 더 나쁘게는 install 은 성공한 다음 첫 import 에서 segfault. 아래 체크가 세 명령으로 세 가지 실패 모드 다 잡아.

2 분 호환성 체크

아무 터미널에서 돌려. 아래 expected output 은 내 office Mac (M3 Ultra Studio) 의 거 — 네 숫자는 다르겠지만 output 의 모양 은 일치해야 해.

각 Mac tier 가 뭘 할 수 있나

2026-05 기준 대략의 capability 지도. 핵심 변수는 unified memory 크기 — 모델이 거기 사니까. 실제 fit 은 quantization 과 KV-cache 크기에도 달려 있어 — lesson 4 의 냅킨 계산 봐.

  • 8 GB MacBook Air (base M-series) — 작은 모델만 (3B–4B params, Q4). Quest 자료는 돌고, Track 2 의 mlx-lm 실험은 더 작은 모델 필요.
  • 16 GB — 7B Q4 편안, 7B fp16 빡빡, 70B 는 가망 없음. 이 quest 의 대부분이 여기서 깨끗하게 돌아.
  • 32 GB — 7B fp16 여유 있게 fit. 13B Q4 fit. LoRA 로 7B fine-tuning fit.
  • 64 GB — 13B fp16, 70B Q4 (간신히). Track 4 의 end-to-end fine-tune walkthrough 편안하게 fit.
  • 96 GB — 70B Q4 가 숨 쉴 공간 생기는 첫 tier.
  • 128 GB — 70B fp16 닿을 거리.
  • 192 GB — 180B 급 Q4 fit. 추론에 대해 8-GPU NVIDIA 랙들과 경쟁.
  • 512 GB (M3 Ultra Studio) — 405B Q4 가 overhead 와 함께 fit. 이 tier 가 "frontier 크기 모델을 어디서 돌리나" 의 대화를 바꾸는 곳. Lesson 4 가 냅킨 계산 가져.

Rosetta 함정 (미리보기)

네 Python 이 Rosetta x86 emulation 아래 있으면, MLX pip install 이 조용히 성공할 수 있어 (의존성 중 하나의 x86 wheel 이 있어서) 그리고 첫 import 에서 segfault 또는 "no matching wheel" 보고. 다음 트랙의 첫 레슨이 이것에 바쳐져 — 지금은 그냥 uname -marm64 출력하는 게 load-bearing 한 줄이라는 걸 알아.

Code

2 분 호환성 체크 (아무 터미널에서)·bash
# 1. What chip and how much unified memory?
system_profiler SPHardwareDataType | grep -E "Chip|Memory"
# Sample (M3 Ultra Studio):
#   Chip: Apple M3 Ultra
#   Memory: 512 GB

# 2. Native ARM, not Rosetta?
uname -m
# Must print: arm64

sysctl -n hw.optional.arm64
# Must print: 1

# 3. macOS version (need ≥ 14.0)
sw_vers -productVersion
# Sample: 15.7.5  (anything 14.x, 15.x, 16.x is fine)
지금 메모리 압력 (어떤 MLX 작업 전에든 좋은 baseline)·bash
# How much of your unified memory is currently free?
# Multiply free pages by page size (16384 bytes on Apple Silicon).
vm_stat | awk '/Pages free/ {gsub("\\.", "", $3); print "Free pages :", $3}
                /Pages active/ {gsub("\\.", "", $3); print "Active pages:", $3}'

# Quick GB summary:
memory_pressure | head -3 || true

External links

Exercise

네 Mac 에서 2 분 호환성 체크 돌려. 세 숫자 받아 적어 (머리에 또는 포스트잇에) — 칩 이름, unified memory GB, macOS 버전. 이제 본문의 capability tier 리스트 봐 — 너는 어느 행이야? 위 행에서 돌리고 싶지만 안 들어갈 모델 사이즈 하나, 네 행에서 편안하게 들어갈 거 하나 골라. Track 2 (mlx-lm) 갈 때 두 숫자 다 쓸 거야.

Progress

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

댓글 0

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

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