피드로 돌아가기
Docker BlogDocker Blog
Backend

Docker Model Runner Brings vLLM to macOS with Apple Silicon

Docker가 vllm-metal 플러그인을 개발해 vLLM 추론 엔진을 macOS Apple Silicon에 포팅하고 오픈소스화

Yiwen Xu2026년 2월 26일9intermediate

Context

vLLM은 고처리량 LLM 서빙을 위한 표준 추론 엔진으로 NVIDIA GPU 기반 Linux와 WSL2 Windows에서만 지원되었다. Apple Silicon 기반 Mac 사용자들은 고성능 vLLM 추론을 활용할 수 없었으며, Docker Model Runner의 플랫폼 지원 범위가 제한적이었다.

Technical Solution

  • MLX와 PyTorch를 단일 컴퓨트 경로로 통합: vllm-metal 플러그인 계층(MetalPlatform, MetalWorker, MetalModelRunner)을 vLLM 코어(Engine, Scheduler, API) 위에 추가해 Apple Silicon Metal GPU에서 실행 가능하도록 구성
  • Apple Silicon 통합 메모리 아키텍처 활용: 물리적 메모리 복사를 제거하는 zero-copy 텐서 연산으로 GPU 메모리 전송 오버헤드 제거
  • Paged Attention과 Grouped-Query Attention 지원: KV 캐시 메모리 관리 효율화로 긴 시퀀스 처리 시 메모리 낭비 감소
  • 호스트 네이티브 실행 모델 채택: Metal GPU 직접 접근 필요로 인해 컨테이너 내부가 아닌 호스트에서 vllm-metal 서버 프로세스를 TCP 통신으로 구동
  • MLX Safetensors 모델 포맷 표준화: mlx-community의 양자화된 모델을 Docker Model Runner의 공유 모델 저장소에서 자동으로 라우팅

Impact

  • llama.cpp 대비 처리량: max_tokens 128일 때 llama.cpp 333.3 tokens/sec 대비 vLLM-Metal 251.5 tokens/sec(1.3배 느림), max_tokens 2048일 때 llama.cpp 339.1 tokens/sec 대비 vLLM-Metal 279.5 tokens/sec(1.2배 느림)
  • 플랫폼 통합: Linux(vllm-NVIDIA), Windows WSL2(vllm-NVIDIA), macOS(vllm-metal)에서 동일한 docker model 커맨드로 모델 실행 가능

Key Takeaway

크로스플랫폼 추론 엔진을 지원하려면 각 하드웨어의 메모리 구조와 GPU 아키텍처를 이해한 플러그인 기반 설계가 필수이며, 오픈소스 커뮤니티와의 협업을 통해 단일 플랫폼 솔루션을 다중 플랫폼으로 확장할 수 있다.


Apple Silicon Mac 기반 개발 환경에서 vLLM OpenAI 호환 API를 활용해야 한다면 vllm-metal 플러그인을 설치하고 mlx-community의 4-bit 양자화 모델을 사용하면 Docker 워크플로우 변경 없이 Metal GPU 가속 추론을 수행할 수 있다.

원문 읽기