Apple Silicon and macOS VMs: 11–16× Faster LLM Inference with Llama.cpp
개요
Apple Silicon 맥에서 macOS VM 환경 내 llama.cpp를 사용한 LLM 추론 속도가 기존 VM 대비 최대 11~16배 향상되었다.
주요 내용
* 문제점: Apple의 Virtualization.framework를 사용하는 macOS VM에서 llama.cpp와 같은 애플리케이션은 제한적인 Metal capability profile 정보를 받아 최적화되지 않은 GPU 커널을 사용하게 되어 LLM 추론 속도가 저하되었다.
* 해결 방안: 호스트 GPU의 실제 성능을 VM 내에서 llama.cpp 프로세스에만 적용할 수 있도록, Metal capability 쿼리 응답을 수정하는 소규모의 호환성 레이어(Metal capability shim)를 개발했다.
* 성능 향상:
* TinyLlama 1.1B 모델에서 M1 Ultra 기준, 프롬프트 처리 속도가 11.08배, 토큰 생성 속도가 16.36배 향상되었다. 이는 베어메탈 성능의 98% 수준에 근접한다.
* Gemma 4 12B 모델에서 프롬프트 처리 속도가 7.20배, 토큰 생성 속도가 14.54배 향상되었으며, 이는 베어메탈 성능의 99.59% 및 94.82%에 근접한다.
* 기술적 구현: shim은 supportsFamily 값을 Apple family 9로, 최대 스레드 그룹 메모리를 32 KB에서 64 KB로 변경하여 llama.cpp가 최신 SIMD-group reduction, SIMD-group matrix, bfloat16 커널을 선택하도록 유도한다.
* 한계점: 해당 shim은 Apple의 Metal 구현에 대한 비공개적이고 버전 의존적인 세부 정보를 활용하므로 macOS 릴리스 변경 시 호환성 문제가 발생할 수 있으며, per-process 단위로만 작동하고 권한이 제한된 실행 파일에는 적용되지 않을 수 있다.
시사점
Apple Silicon 기반 macOS VM 환경에서 LLM 추론 성능을 획기적으로 개선할 수 있는 가능성을 보여주며, 이는 개발자들이 macOS VM 내에서 LLM 워크로드를 더 효율적으로 활용할 수 있게 하는 기반을 마련한다.
댓글
GitHub Discussions