llama.cpp에 광학 문자 인식 모델 MiniCPM-OCR 1.0 지원이 들어갔다. 빌드 b11826은 2026년 10월 23일 03:56에 공개됐고, 멀티모달 모듈(mtmd)에 이 모델을 추가하는 변경(#30979)을 담았다. 같은 날 b11821(02:02), b11822(02:33), b11823(03:02), b11827(04:36)도 올라왔다. 이 빌드들에는 Intel GPU용 SYCL 연산 개선, 모델 입력 수정, Adreno용 OpenCL 연산 추가가 들어 있다.1,2,3,4,5
이번 빌드들은 macOS, Linux, Android, Windows용 바이너리로 배포된다. 플랫폼별로 CPU, Vulkan, CUDA 12·13, ROCm, OpenVINO, SYCL 빌드가 있고, Snapdragon용 빌드는 CPU, Adreno GPU, Hexagon NPU를 지원한다.1
Intel XMX 행렬 연산 개선(b11821)
b11821은 SYCL 백엔드에서 Intel XMX 행렬 엔진(int8 DPAS, ESIMD)을 쓰는 다중 열 연산을 다시 정리했다(#29864). 대상은 재배열된 K-양자화와 Q8_0 가중치의 활성값 2~80열 곱셈이다. 추측 디코딩 검증(단계당 토큰 2~8개)과 9~80토큰의 짧은 프롬프트 묶음이 주 대상이며, Q2_K, Q3_K, Q8_0 세 유형은 단일 열에도 이 경로를 쓴다.
게이트와 업 프로젝션 두 FFN 가중치는 커널 한 번으로 계산한다. 활성값을 한 번만 읽고 SWIGLU나 GEGLU를 마지막 단계에서 적용하며, 최대 16열까지 처리하고 XMX 유형 여섯 가지에서 모두 동작한다. Q2_K 가중치는 스케일 항(d·scl·q)에서 최솟값 항(dmin·mc)을 빼는 구조인데, 4비트 스케일(scl)과 4비트 최솟값 코드(mc)가 32개 가중치 그룹의 각 절반에 적용된다. 이 구조를 활용한 최솟값 합(min-sum) 최적화가 Q2_K에 들어갔다.
B70에서 Q4_K_M의 tg128 속도는 초당 26.67토큰에서 28.23토큰으로 5.9% 올랐고 Q6_K는 변화가 없었다. Perplexity는 배치 1에서 XMX 사용 시 5.2064, 미사용 시 5.2058이다. MUL_MAT는 1727건, MUL_MAT_VEC_FUSION은 1361건 모두 통과했다. 첫 버전은 행 수가 4의 배수가 아니면 NaN이 나오는 오류가 있어 고쳤고, Q8_0 활성값 유형은 제거했다. 활성값에는 64바이트 정렬과 16바이트 피치 검사를 넣었다.
환경 변수 두 개가 추가됐다. GGML_SYCL_XMX_MAX_COLS는 기본값이 80이고 0 이상의 값을 받는다. GGML_SYCL_XMX_GLU_MAX_COLS는 기본값 16에 범위 0~16이며, 융합 커널이 컴파일된 최대치가 16이라 낮추는 용도로만 쓸 수 있다. 리팩터링으로 양자화 구조체 다섯 개의 중복 코드를 공용 부분으로 옮기고, DPAS 한 번 실행·float 변환·행별 스케일 적용을 담당하는 도우미 xmx_term을 만들었다. 리팩터링 후 테스트에서 MUL_MAT_VEC_FUSION은 1369건, MUL_MAT_ID는 937건을 통과했고, MUL_MAT는 2281건을 통과했다. 이 2281건에는 아직 커밋되지 않은 f32 테스트가 포함돼 있다.2
모델 입력 수정과 OpenCL 연산(b11822~b11827)
b11822는 qwen4exp 모델을 DFlash 초안 모델과 함께 쓸 때 첫 요청에서 중단되던 문제를 고쳤다(#30927). qwen4exp가 [n_embd, hc, n_tokens] 형태의 잔차를 레이어 입력으로 내보냈는데, 초안 모델은 [n_embd, n_tokens] 형태를 읽기 때문이었다. 이제 스트림을 평균으로 합쳐 내보내며, deepseek4가 이미 쓰는 방식이다. 평균은 초안 모델이 요청한 레이어에 대해서만 계산한다.3
b11823은 glm5 모델의 입력을 줄였다(#30932). sel_mask_2d 입력과 new_pool_flat 입력을 쓰지 않도록 바꿨다. b11827은 OpenCL 백엔드에 depthwise conv2d 연산을 추가했다(#30900). Adreno용 구현이며 로컬 프로그램을 쓰고 인자에 부호 있는 타입을 쓰도록 했다. Qualcomm의 Li He가 공동 작성자로 올랐다.4,5
출처
- ggml-org/llama.cpp b11826 github.com
- ggml-org/llama.cpp b11821 github.com
- ggml-org/llama.cpp b11822 github.com
- ggml-org/llama.cpp b11823 github.com
- ggml-org/llama.cpp b11827 github.com