출발점이 다르면 최적화도 다르다
llama.cpp는 CPU 세계에서 태어났어. 첫 목표는 CPU만으로도 쓸 만한 속도로 LLM을 돌리는 것이었고, GPU 가속은 나중에 차근차근 붙었지. llama.cpp가 개척한 GGUF 형식도 그 뿌리를 드러내. 모델 하나를 파일 하나에 담고, Linux와 Windows, Mac의 CPU·GPU 실행 환경 사이를 옮기기 쉽게 설계됐어.
MLX는 GPU와 통합 메모리 세계에서 출발했어. Apple Silicon의 계산 방식을 전제로 삼아 Metal에 바로 대응하는 커널과 CPU·GPU가 함께 보는 배열을 제공하지. 이 전제는 Mac에서는 강점이지만, Mac을 벗어나면 한계가 돼.
llama.cpp가 앞서는 곳
- 여러 운영체제에 배포 — 같은 실행 파일을 Linux와 Windows, Mac에서 쓸 수 있어. Apple 밖의 하드웨어까지 배포해야 한다면 llama.cpp가 분명한 선택이야.
- CPU 중심 추론 — CPU만 있는 기기에서도 쓸 만하게 돌아. MLX는 Apple Silicon의 GPU를 전제로 해.
- 넓은 양자화 선택지 — GGUF는 MLX의 아핀 양자화보다 더 많은 방식을 지원해. Q2_K부터 Q8_0까지 여러 K-quant가 있어서 크기를 극한까지 줄일 때 전통적으로 유리하지.
- 파일 하나로 옮기기 —
.gguf파일 하나에 모델 전체가 들어가므로 배포하거나 새 환경에 놓기 쉬워.
MLX가 앞서는 곳
- Apple Silicon에 맞춘 성능 — MLX 커널은 번역층 없이 Metal을 직접 겨냥해. Mac에서는 보통 llama.cpp의 Metal 백엔드보다 작게나마, 때로는 제법 빠를 수 있어.
- Python 연동 — MLX는 Python을 중심으로 설계됐어. llama.cpp는 C++이 중심이고 Python은 래퍼를 통해 연결해.
- 파인튜닝 — MLX에는 파인튜닝을 위한 일급 작업 흐름이 있어(트랙 5). llama.cpp는 추론에 집중하지.
- 함수 변환과 연구 —
mx.grad,mx.vmap, 맞춤 모델 구조는 MLX의 영역이야. llama.cpp는 서빙 실행 환경이지 연구용 프레임워크가 아니야.
실전에서 고르는 법
Mac에만 배포한다면 MLX를 먼저 보고, 여러 운영체제를 아우른다면 llama.cpp와 GGUF를 먼저 봐. 이 선택은 Mac 한 대에서 누가 조금 더 빠른가보다 어디에 배포할지, 어떤 언어 생태계를 쓸지, 추론 뒤에 모델로 무엇을 할지에 달렸어.