Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

19장. MLX / mlx-lm — Apple Silicon 가속

이 장의 목표 맥에서만 누릴 수 있는 빠른 추론 프레임워크 MLX를 직접 만져봅니다.

같은 모델이 GGUF 대비 얼마나 더 빨라지는지 체감하게 됩니다.


19.1 MLX가 뭔가?

Apple이 직접 만든 머신러닝 프레임워크.

  • Apple Silicon에 최적화된 연산
  • NumPy 비슷한 Python API
  • macOS·iPadOS·iOS 모두에서 동일 코드
  • 통합 메모리 활용 효율적
  • Apple ML Research 팀이 직접 개발

LLM 추론용 패키지:

mlx-lm

이게 우리가 쓸 도구입니다.


19.2 왜 MLX인가?

같은 양자화여도 GGUF보다 빠를 수 있음.

모델GGUF Q4_K_MMLX 4bit
7B (M3 Max)약 60 tok/s약 80 tok/s
32B (M5 Pro)약 18 tok/s약 25 tok/s
70B (M3 Ultra)약 22 tok/s약 28 tok/s

(대략. 모델·셋업에 따라 변동)

이유: Metal·ANE·통합 메모리에 더 직접적으로 매핑되기 때문.


19.3 설치

$ mkdir -p ~/Developer/local-ai-mlx
$ cd ~/Developer/local-ai-mlx

$ python3 -m venv .venv
$ source .venv/bin/activate

(.venv) $ pip install -U mlx-lm

15.8 절의 가상환경 방법을 그대로 따릅니다.


19.4 첫 실행

(.venv) $ mlx_lm.generate \
    --model mlx-community/Qwen3-8B-Instruct-4bit \
    --prompt "한국어로 자기 소개 한 문장 해줘." \
    --max-tokens 200
옵션의미
--modelHugging Face의 mlx-community 경로
--prompt프롬프트
--max-tokens최대 생성

모델이 처음이라면 자동으로 다운로드됩니다.

결과 끝에 성능 통계가 찍힙니다.

Prompt: 18 tokens, 320 tokens-per-sec
Generation: 124 tokens, 78 tokens-per-sec

Generation 의 tok/s 가 우리가 보는 decode 속도.


19.5 채팅 모드

(.venv) $ mlx_lm.chat \
    --model mlx-community/Qwen3-8B-Instruct-4bit

exit 또는 Ctrl+C 로 종료.


19.6 OpenAI 호환 서버

(.venv) $ mlx_lm.server \
    --model mlx-community/Qwen3-32B-Instruct-4bit \
    --port 8080

이러면 http://localhost:8080 에 OpenAI 호환 API.

$ curl http://localhost:8080/v1/chat/completions \
  -d '{
    "model": "qwen",
    "messages": [{"role":"user","content":"안녕"}]
  }'

Ollama·LM Studio와 같은 형식이므로 클라이언트 코드를 그대로 쓸 수 있습니다.


19.7 mlx-community — MLX 모델 저장소

Hugging Face의 mlx-communityMLX 변환본 모음입니다.

검색 팁:

  • 원하는 모델 이름 뒤에 -4bit, -8bit 붙여서 검색
  • 또는 Hugging Face에서 mlx 필터

자주 받는 모델:

mlx-community/Qwen3-8B-Instruct-4bit
mlx-community/Qwen3-14B-Instruct-4bit
mlx-community/Qwen3-32B-Instruct-4bit
mlx-community/Llama-3.3-70B-Instruct-4bit
mlx-community/gemma-3-27b-it-4bit

19.8 직접 변환·양자화

MLX 모델이 없으면 직접 변환할 수도 있습니다.

(.venv) $ mlx_lm.convert \
    --hf-path Qwen/Qwen3-32B-Instruct \
    --mlx-path ./models/Qwen3-32B-Instruct-4bit \
    -q
옵션의미
--hf-pathHugging Face 원본
--mlx-path저장할 폴더
-q양자화 (기본 4bit)

8bit로 하고 싶으면 -q --q-bits 8.

자세한 건 33장.


19.9 LM Studio에서 MLX 쓰기

코드 안 만지고도 MLX를 쓰는 가장 쉬운 길:

LM Studio.

검색 시 MLX 태그 필터를 켜면 됩니다.

LM Studio Discover →
검색창 옆 필터 →
"MLX" 활성화

받아서 채팅 탭에서 로드하면 끝. GGUF랑 똑같이 씁니다.


19.10 Ollama에서 MLX 쓰기

2025년부터 Preview로 지원합니다.

$ OLLAMA_MLX=1 ollama serve

이렇게 띄우면 Ollama가 가능한 모델은 MLX로 돌립니다. 2026년 시점에서는 정식 지원에 가까워졌습니다.


19.11 MLX vs GGUF — 어느 쪽을 쓰나

상황추천
최대 속도MLX
가장 안정·호환성GGUF
갓 나온 모델GGUF (MLX 변환은 며칠 늦음)
윈도우/리눅스와 호환GGUF
Apple Silicon 전용 워크플로MLX
LM Studio둘 다 OK
OllamaGGUF 우선

이 책의 권장: 처음 한 달은 GGUF로 익히고, 같은 모델을 MLX로 받아 속도 비교를 한 번씩 해보세요.


19.12 자주 만나는 MLX 문제

“tokenizer 오류” 나요

mlx-lm 버전을 최신으로:

$ pip install -U mlx-lm

Chat template이 적용 안 돼요

22장의 chat template 개념이 잘못 들어간 경우. 모델 카드에서 권장 template 확인.

메모리가 갑자기 커져요

MLX는 컨텍스트 키울 때 메모리 폭이 큽니다. 8K → 16K로 시작하세요.


이 장에서 기억할 한 가지

MLX = 맥에서만 누리는 속도.

같은 4bit 모델이 GGUF보다 빠른 경우가 많습니다. 도구는 mlx-lm (CLI/API) 또는 LM Studio (GUI).


손으로 해볼 것

1. GGUF vs MLX 속도 비교

같은 모델의 두 버전을 받고 같은 질문을 던져 속도를 측정하세요.

# GGUF (Ollama 또는 llama-cli)
$ ollama run qwen3:8b --verbose

# MLX
$ mlx_lm.generate --model mlx-community/Qwen3-8B-Instruct-4bit \
    --prompt "한국어로 자기 소개 한 문장 해줘."

표를 만들어보세요.

도구모델tok/s
Ollama (GGUF)qwen3:8b?
mlx-lmQwen3-8B-Instruct-4bit?
LM Studio (GGUF)Qwen3-8B-Instruct-Q4_K_M?
LM Studio (MLX)Qwen3-8B-Instruct-4bit (MLX)?

2. mlx_lm.server 띄워보기

$ mlx_lm.server --model mlx-community/Qwen3-8B-Instruct-4bit --port 8080

다른 터미널에서:

$ curl http://localhost:8080/v1/chat/completions \
  -d '{
    "model": "any",
    "messages":[{"role":"user","content":"안녕"}]
  }'

다음 장에서는 지금까지 본 도구들을 정리합니다.

언제 어떤 도구를 쓰는지 한 번에 정리되는 비교표·결정 트리.