인프라와 비용

llama.cpp, Apple Metal에서 MXFP4 연산 빠르게 고쳤다

llama.cpp b11985가 Apple Metal 백엔드의 MXFP4 행렬-벡터 커널을 새로 짰다. 단항·이항 연산과 GLU도 threadgroup당 최대 256개 스레드로 실행한다.

루카스 ·

llama.cpp 프로젝트가 빌드 b11985를 내놓았다. Apple의 Metal 백엔드에서 MXFP4 형식 가중치의 행렬-벡터 연산 커널을 새로 짠 것이 핵심이며, 풀 리퀘스트 번호는 #31075다. 같은 PR에서 단항·이항 연산과 GLU 연산이 쓰는 스레드 구성도 바뀌었다.

Apple M1 칩이 기판에 실장된 Mac mini(2020) 메인보드 사진. 칩 표면과 주변 회로가 보인다.
Mac mini(2020) 메인보드에 실장된 Apple M1 칩Sonic8400 / Wikimedia Commons · CC BY-SA 4.0 · 원본 · 크기 조정

새 MXFP4 커널은 4비트 부동소수점(fp4) 값을 해독할 때 threadgroup 메모리의 조회 테이블 대신 fp16 비트 트릭을 쓴다. 묶여 있는 4비트 값은 정렬된 32비트 워드 단위로 읽어 오며, 이 커널은 threadgroup 메모리를 더 쓰지 않는다.

나머지 두 수정은 threadgroup 활용도를 높이는 내용이다. 연속된 단항 연산과 행 브로드캐스트 이항 연산은 지금까지 threadgroup당 스레드를 하나만 썼으나, 이제 최대 256개를 쓰고 끝부분은 범위를 검사한다. GLU는 행 하나가 threadgroup 하나에서 실행되어, 행이 하나뿐인 디코드 단계에서는 연산 전체가 threadgroup 하나로 돌았다. 이제 각 행을 최대 256개 스레드를 가진 여러 threadgroup에 나눠 맡긴다.

b11985는 2026년 10월 30일 GitHub 릴리스로 올라왔다. Apple Silicon(arm64)용 macOS 바이너리와 Intel(x64)용 macOS 바이너리, iOS XCFramework가 함께 제공된다. KleidiAI를 켠 macOS Apple Silicon(arm64) 빌드는 b11985에서 DISABLED로 표시돼 있다. 릴리스 노트에는 속도 향상 수치나 비교 측정이 실려 있지 않다.

Mac에서 MXFP4 모델을 돌리는 사용자는 macOS arm64 빌드를 받아 이전 빌드와 직접 비교해 볼 수 있다. 같은 릴리스에는 Linux, Android, Windows용 CUDA와 Vulkan 등 다른 백엔드 빌드도 올라 있으나, 이번 커널 변경은 Metal 항목에만 적혀 있다.

댓글

기사에 대한 의견이나 틀린 내용 제보를 남겨 주세요.

댓글을 불러오고 있습니다.