llama.cpp b11476将Metal few-row MMA矩阵乘内核扩展到BF16、MXFP4等剩余src0类型
该版本称通用few-row MMA内核适用于任何带 16 权重反量化器的类型,因此新增支持BF16、Q1_0、Q2_0、MXFP4、Q2_K、Q3_K、TQ2_0和IQ系列;各类型在M3 Ultra上有不同的启用行数阈值,并给出相对master的耗时比值。
AI解读:llama.cpp发布b11476版本,主变更位于Metal后端:few-row MMA矩阵乘内核从原先的适用范围扩展到剩余的src0类型。
按发布说明,通用few-row MMA内核可处理任何带 16 权重反量化器的类型,因此本次纳入BF16、Q1_0、Q2_0、MXFP4、Q2_K、Q3_K、TQ2_0以及IQ类型。
各类型在内核上开始比现有内核更快的行数阈值不同:TQ2_0为 5 行,BF16为 4 行,MXFP4、Q2_0、Q2_K和IQ4_NL为 3 行,其余为 2 行;这些阈值是在M3 Ultra上测得的。
发布说明给出test-backend-ops perf -o MUL_MAT、m=4096、k=14336、M3 Ultra的耗时比值:从阈值到 8 行区间为 0.23 至 0.98,9 至 16 行为 0.24 至 0.33,1 行和 512 行时为 0.99 至 1.01,取两次交错运行的平均值。
对下载用户而言,b11476提供macOS(arm64、x64)、iOS XCFramework、Linux(含多个CPU、Vulkan、CUDA 12/13、ROCm、OpenVINO、SYCL、Snapdragon)、Android、Windows以及UI等多平台预编译包;其中macOS arm64的KleidiAI版本标注为DISABLED,openEuler相关条目同样标注为DISABLED。
llama.cpp发布b11476,主要变更是Metal后端的few-row MMA矩阵乘内核(PR #30065)扩展到剩余的src0类型。发布说明称,通用few-row MMA内核适用于任何带 16 权重反量化器的类型。
本次新增覆盖BF16、Q1_0、Q2_0、MXFP4、Q2_K、Q3_K、TQ2_0以及IQ类型。每个类型在其“开始优于现有内核”的行数处启用:TQ2_0为 5 行,BF16为 4 行,MXFP4、Q2_0、Q2_K和IQ4_NL为 3 行,其余为 2 行;这些阈值基于M3 Ultra测得。
M3 Ultra上的耗时比值
发布说明提供test-backend-ops perf -o MUL_MAT、m=4096、k=14336 在M3 Ultra上与本版本相对master的耗时比值,均为两次交错运行的平均值。
从阈值到 8 行为 0.23 至 0.98;9 至 16 行为 0.24 至 0.33;1 行和 512 行时为 0.99 至 1.01。比值小于 1 表示该区间耗时低于master,等于或接近 1 表示与master持平。
b11476提供的预编译包
发布页面列出各平台构建产物下载,包括macOS Apple Silicon(arm64)、macOS Intel(x64)、iOS XCFramework、Ubuntu(x64/arm64/s390x的CPU版,以及Vulkan、CUDA 12.8、CUDA 13.4、ROCm 10.0、OpenVINO、SYCL FP32/FP16版本)、Linux arm64 Snapdragon、Android arm64(含Snapdragon版)、Windows(CPU x64/arm64、OpenCL Adreno、CUDA 12.4/13.4、Vulkan、OpenVINO、SYCL、ROCm 10.0)以及独立UI包。
- macOS Apple Silicon(arm64,KleidiAI enabled)标注为DISABLED,链接指向PR #23780。
- openEuler各条目(x86 310p、x86 910b ACL Graph、aarch64 310p、aarch64 910b ACL Graph)标注为DISABLED,链接指向PR #23705。