Apple Silicon LLM 추론: omlx vs vLLM Metal 성능 비교 분석
Apple Silicon 환경에서 LLM을 로컬에서 돌릴 때, 어떤 추론 엔진을 써야 할지 고민하는 개발자가 많습니다. omlx(continuous batching 기반)와 vLLM Metal(vLLM 공식 Apple Silicon 플러그인)은 가장 핫한 두 옵션인데, 실제 성능과 아키텍처 차이는 생각보다 큽니다.
2026년 7월 기준으로 최신 벤치마크 데이터와 아키텍처 차이를 비교 분석했습니다.
둘의 정체
omlx(GitHub, 17.6k stars)는 Apple Silicon 전용 LLM 추론 서버입니다. continuous batching과 SSD 기반 KV 캐시가 핵심이며, OpenAI 호환 API를 제공해 기존 코드 변경 없이 바로 쓸 수 있습니다. macOS 메뉴 바에서 관리되는 네이티브 애플리케이션 형태로도 제공됩니다.
vLLM Metal(GitHub)은 vLLM 프로젝트의 공식 Apple Silicon 하드웨어 플러그인입니다. CUDA 환경에서 검증된 vLLM의 아키텍처(PagedAttention 등)를 Metal 백엔드로 이식하려는 시도이며, 2026년 4월 v0.2.0에서 Unified paged varlen Metal kernel이 기본 attention 백엔드로 채택되었습니다.
아키텍처 비교
두 프로젝트의 근본적인 차이를 먼저 정리합니다.
omlx 아키텍처:
- continuous batching: 여러 요청을 하나의 forward pass로 묶어 실행 — Apple Silicon에서 실제 batching이 동작하는 유일한 백엔드
- SSD KV 캐시: 긴 컨텍스트에서 메모리 압력을 SSD로 오프로드 — 32k 토큰 입력에서도 throughput 유지
- MLX 기반: Apple의 MLX 프레임워크 위에서 동작하며 Metal GPU를 직접 활용
- OpenAI 호환 API:
localhost:8000에서 HTTP SSE 스트리밍 제공 - macOS 네이티브 앱: 메뉴 바에서 모델 시작/종료, 설정 관리
vLLM Metal 아키텍처:
- vLLM 공식 플러그인: UC Berkeley에서 개발한 vLLM 생태계와 통합
- PagedAttention 이식 시도: v0.2.0에서 Unified paged varlen Metal kernel 도입 — v0.1.0 대비 83배 TTFT 개선, 3.6배 throughput 향상
- MLX + PyTorch 통합 lowering: MLX와 PyTorch를 단일 경로로 통합
- 텍스트 전용: 현재 텍스트 모델만 지원 (멀티모달 미지원)
- ARM64 네이티브 Python 3.12: Rosetta 없이 동작
벤치마크 결과 (Qwen3.5-9B, 4-bit)
Latent Space의 5종 백엔드 벤치마크(출처)와 vLLM Metal 공식 데이터를 종합했습니다.
단일 요청 Throughput
Qwen3.5-9B 모델을 4-bit 양자화로 실행한 결과입니다.
MLX (직접 호출): 25.06 tok/s — 라이브러리 직접 호출이라 HTTP 오버헤드 없음
omlx: ~20 tok/s — continuous batching 스케줄러 오버헤드 포함
vLLM Metal: MLX 범위 추적 — 단일 요청에서는 MLX와 유사한 수준
llama.cpp Metal: 15.34 tok/s
Ollama: 13.76 tok/s
단일 요청에서는 raw MLX가 가장 빠르고, omlx는 약 20% 정도 느립니다. omlx의 overhead는 continuous batching 스케줄러 큐 + SSE 프레이밍에서 옵니다.
TTFT (Time To First Token)
llama.cpp Metal: 196ms — 가장 빠름
MLX: 396ms
Ollama: 470ms
omlx: 968ms — continuous batching 큐 대기 + SSE 오버헤드
TTFT는 단일 요청에서 omlx가 가장 느립니다. 하지만 이 overhead는 동시 요청이 늘어날 때 batching 효율로 상쇄됩니다.
Concurrency (동시 요청)
여기서 진짜 차이가 납니다.
MLX, llama.cpp, Ollama는 동시 요청이 늘어나도 aggregate throughput이 거의 변하지 않습니다. NUM_PARALLEL은 큐 깊이를 제어할 뿐, 실제 batching을 하지 않기 때문입니다.
omlx만 실제 batching이 동작합니다:
512-token 입력: 15.6 to 21.9 tok/s (concurrency 1 to 4, 1.40배)
2048-token 입력: 11.2 to 14.4 tok/s (concurrency 1 to 4, 1.29배)
vLLM Metal v0.2.0:
Unified paged varlen Metal kernel 도입으로 v0.1.0 대비 83배 TTFT 개선, 3.6배 throughput 향상. 하지만 Apple Silicon에서 vLLM GPU 버전의 batching 이점을 완전히 재현하지는 못하고 있습니다. MLX-managed KV cache를 사용하며, CUDA 버전의 PagedAttention과는 다른 구현입니다.
긴 컨텍스트 (Long Context)
512 to 32k 토큰 입력에서 decode throughput 변화:
MLX / llama.cpp / Ollama: 512~8k까지는 안정적 — 32k에서 약 절반으로 급감. KV 캐시가 커지면서 unified memory 대역폭 압력이 증가합니다.
omlx: 512~32k 토큰에서 약 20 tok/s로 일정 유지. SSD 기반 KV 캐시가 긴 컨텍스트에서도 일관된 성능을 보장합니다.
vLLM-MLX: 하이브리드 접근
vllm-mlx(독립 프로젝트)는 또 다른 옵션입니다. MLX 위에 vLLM과 유사한 CLI/API를 제공하는 프로젝트로, M4 Max에서 464 tok/s(Qwen3-0.6B)를 기록했습니다. arXiv 논문(2601.19139)에 따르면 M4 Max에서 Qwen3-0.6B 텍스트 모델로 최대 525 tok/s, Qwen3-VL-4B로 143 tok/s를 달성했으며, mlx-lm과 llama.cpp 모두를 상회합니다.
하지만 Reddit 커뮤니티(출처)에서는 "실제 vLLM이 아니라 vLLM과 유사한 인터페이스를 제공하는 MLX 기반 프로젝트"라고 지적합니다. PagedAttention 같은 vLLM의 핵심 최적화를 구현하지 않았다는 평가입니다.
언제 무엇을 써야 할까?
단일 사용자 / 로컬 개발 (IDE, CLI):
MLX 직접 호출. 25 tok/s, 서버 프로세스 없이 라이브러리만 import 하면 됨. Python 기반이라면 가장 빠른 선택입니다.
다중 사용자 / 서버 환경:
omlx. Apple Silicon에서 유일하게 batching이 실제 동작하는 백엔드. 동시 요청 4개에서 aggregate throughput이 1.29~1.40배 향상되며, OpenAI 호환 API로 기존 코드와의 통합도 쉽습니다.
vLLM 생태계 통합:
vLLM Metal. CUDA 환경에서 테스트한 vLLM 워크플로우를 Apple Silicon으로 이식할 때 유용합니다. v0.2.0에서 Metal kernel이 크게 개선되었지만, 아직 CUDA 버전의 batching 성능에는 미치지 못합니다.
편의성:
Ollama. ollama pull 한 줄로 모델 다운로드부터 serving까지. throughput은 최적이 아니지만 운영 편의성이 최고입니다.
결론
Apple Silicon에서 LLM 추론을 돌릴 때 "무조건 vLLM"이라는 공식은 통하지 않습니다. CUDA GPU와 달리 Apple Silicon의 unified memory 아키텍처에서 vLLM Metal은 아직 batching 이점을 충분히 실현하지 못하고 있습니다.
실제 batching이 필요한 서버 환경에서는 omlx가 현재 가장 확실한 선택입니다. continuous batching + SSD KV 캐시 조합이 Apple Silicon의 unified memory 특성에 가장 잘 맞고, OpenAI 호환 API로 기존 코드와의 통합도 쉽습니다.
단일 사용자라면 raw MLX가 여전히 가장 빠릅니다. HTTP 서버 계층 없이 라이브러리 직접 호출이라 오버헤드가 거의 없습니다.
vLLM Metal은 v0.2.0에서 큰 걸음을 내딛었지만, Apple Silicon 환경에서는 아직 omlx가 앞선다고 보는 것이 현실적입니다. 다만 vLLM Metal이 CUDA 버전의 PagedAttention을 완전히 재현하면 게임 체인저가 될 잠재력은 분명히 있습니다.
벤치마크 데이터 출처: Latent Space - Apple Silicon LLM Backends Benchmark, vLLM Metal GitHub, arXiv 2601.19139
댓글 없음:
댓글 쓰기