llama.cpp 프로젝트가 2026년 10월 17일 빌드 b11702와 b11703을 잇달아 내놓았다. b11702는 Qualcomm Adreno X1 계열 GPU에서 MXFP4 형식의 전문가 혼합(MoE) 모델을 돌리는 OpenCL 커널을 추가했고, b11703은 Hexagon NPU 백엔드의 소프트플러스 연산을 HVX 벡터 명령으로 바꿨다.
두 빌드는 GitHub 릴리스로 공개됐고, 사용자는 Windows arm64용 OpenCL Adreno 빌드와 Android·Linux arm64용 Snapdragon 빌드(CPU, Adreno GPU, Hexagon NPU 포함)를 내려받을 수 있다. 두 릴리스 노트에는 별도의 성능 수치가 없다.1,2
b11702: Adreno X1용 MXFP4 MoE 커널
b11702에는 OpenCL 백엔드에 Adreno X1 기기용 MXFP4 MoE bin 커널을 추가하는 변경(#30691)이 들어갔다. 새 커널 이름은 gemm_moe_mxfp4_q8_1_dp4a_ila_ldck이며, 같은 변경에서 X1E용 dp4a clc도 켰다. 이 변경에는 Co-authored-by로 Li He(이메일 도메인 qti.qualcomm.com)가 적혀 있다.1
b11703: Hexagon 소프트플러스 벡터화
b11703의 변경(#30435)은 Hexagon 백엔드의 softplus_f32와 tile_softplus_f32가 쓰던 스칼라 반복문 logf(1.0f + expf(x))를 걷어냈다. 대신 두 함수가 공유하는 hvx_softplus_f32_aa() 도우미를 만들었다. 이 도우미는 백엔드에 이미 있던 hvx_vec_exp_f32와 hvx_vec_log_f32 기본 연산으로 짜서 새로운 수치 근사는 도입하지 않았다고 변경 설명에 적혀 있다.
hvx_vec_exp_f32는 입력을 (-88, 88) 범위로 제한한 뒤 지수 연산을 하므로, log(1 + exp(x))를 그대로 조합하면 x가 클 때 x 대신 약 88.72로 포화한다. Q6_V_vmux_QVV select 연산은 스칼라 기준 구현(ggml-impl.h의 ggml_compute_softplus_f32)의 x > 20 조건을 그대로 유지하며, 변경 설명은 이것이 벡터 경로가 CPU 결과와 일치하는 이유라고 적었다. 이 변경에는 Claude의 도움을 받았다는 표기(Assisted-by: Claude)가 붙어 있다.2
출처
- ggml-org/llama.cpp b11702 github.com
- ggml-org/llama.cpp b11703 github.com