Cua팀, macOS VM의 Metal 기능 리포트 조작으로 llama.cpp 추론 최대 16배 가속
- Cua/Lume 팀이 Apple
Virtualization.framework로 띠운 macOS 게스트가 host GPU 기능을 실제보다 낮게 보고하는 문제를 발견하고, 특정 프로세스에서만 Metal capability 응답값을 바꿔주는 호환성 레이어를 만듦 - 같은 Apple Silicon 호스트, 같은 Lume macOS VM에서 이 레이어를 적용한 결과 llama.cpp 프롬프트 처리 속도가 11.08배, 토큰 생성 속도가 16.36배 빨라짐
- 원인은 stock VM이 구형 Apple GPU family와 32KB 스레드그룹 메모리 한계를 보고해서 llama.cpp가 느린 커널을 선택했기 때문이며, 레이어는 테스트된 Apple 9 family와 64KB 값을 보고해 최신 커널 경로를 쓰게 만듦
- 이 개선은 llama.cpp가 이 특정 VM 환경 안에서 실행될 때만 적용되며 bare metal llama.cpp에는 영향이 없고, 동일 테스트에서 MLX-LM은 속도 변화가 없었음
- Cua는 이 작업을 Lume, Cua와 같은 permissive 라이선스로 연구용 릴리스로 공개해 다른 사람들이 재현하고 어떤 칩과 macOS 버전, Metal 워크로드에서 효과가 있는지 확인하도록 함
Hacker News opinions
제목이 좀 헷갈리는데, 결국 같은 Lume macOS VM에서 패치 전후를 비교한 거네. 프롬프트 처리는 11.08배, 토큰 생성은 16.36배 빨라진 거고, 메커니즘 자체는 그래픽 워크로드에도 적용 가능하지만 이 숫자는 llama.cpp 기준이래.
Apple 1부터 9까지가 뭔지 모르겠던데, M시리즈 칩인가 했더니 M9은 아직 없잖아. 찾아보니 Metal GPU family 문서에 나오는 세대 구분이더라.
이게 모든 llama.cpp 사용자한테 적용되는 속도 개선이 아니라, 이 특정 Virtualization.framework VM에서만 해당되는 거 아닌가. VM이 llama.cpp한테 잘못된 커널을 고르게 만든 문제를 고친 거잖아.
맞음, 정확히는 llama.cpp가 받은 capability 정보에 맞는 커널을 제대로 고른 거고, stock VM이 구세대 GPU family랑 32KB 스레드그룹 메모리 한계를 보고해서 느린 커널을 선택했던 거임. 우리 레이어는 테스트한 Apple 9랑 64KB 값을 리포트해서 더 새로운 경로를 쓰게 한 거고, bare metal llama.cpp는 영향 없음. MLX-LM은 우리 테스트에서 변화가 없었음.
제목만 보면 애플 실리콘 전반의 llama.cpp 속도 향상처럼 들리는데, 실제로는 Virtualization.framework VM 안에서의 커널 선택 문제를 고친 거라 이 차이가 꽤 중요함.
예전에 맥 전용 ML 최적화(파인튜닝 포함)하던 YC 스타트업이 있었던 거 같은데 이거랑 관련 있나 싶음.
RunAnywhere나 Conifer 얘기하는 거 아님?
블로그 글에 AI가 쓴 듣한 문체가 너무 많아서 읽기 힘들던데, 게다가 TinyLlama 1.1B로 테스트한 것도 좀 웃김.
근데 이 글에서 안 다루는 게 있는데, 왜 애플이 Virtualization.framework에서 호스트 GPU가 지원하는 기능을 다 보여주지 않고 굳이 낮은 Metal 프로파일을 노출하는 거지?
안전하게 가상화할 수 없어서 그런 거 아닐까.
M시리즈 칩은 다 Metal 4 지원하는데, 이거 그냥 오버라이드로 고칠 수 있으려나.
애플은 다른 ARM/x86 프로세서들처럼 GPU를 VM에 진짜로 패스스루 안 해줌. 커널에 관련 심볼은 있는데 리테일 macOS에서는 안 씀. 대신 paravirtual 디바이스를 만들어서 GPU를 일반 PCI 장치처럼 흉내내는 방식이고, 이건 보통 다른 벤더들이 고급 GPU를 멀티테넌트로 시분할할 때 쓰는 방식임. 이 paravirtual GPU는 기능이 줄어들고 애플은 왜 그런지 설명을 안 함.
QEMU/KVM도 기본적으로 이렇게 함, 다른 하드웨어로 VM 옮길 때를 위해 좀 더 일반적인 스펙을 잡아두는 거임. 애플이 같은 이유인지는 모르겠지만.
애플이 AI 플랫폼으로서 맥을 밀어주는 것도 아닌데 이런 작업들이 계속 나오는 게 신기함. 애플은 Nvidia한테 감정 안 좋고 OS도 폐쇄적이고 느린데, PA-Semi 인수 이후 애플 실리콘 하드웨어가 너무 좋아서 사람들이 계속 갭을 메꾸며 만들어내는 거 같음. M1이 벌써 6년 됐는데도 이 정도면 M7, M8 나오면 정말 대단할 듯.
우리도 애플 실리콘 때문에 작년에 Lume 시작한 거임. 어제는 Cua Driver랑 Muse Glimmer로 완전 오프라인 컴퓨터 사용 에이전트를 로컬에서 돌렸는데, 이제는 같은 종류의 에이전트를 macOS VM 안에서 격리시켜서 돌리면서 애플 GPU 경로도 쓸 수 있게 됐음.