llama.cpp b10831发布:Vulkan后端新增TQ1_0量化支持
新版本在Vulkan后端加入TQ1_0量化格式的矩阵乘法、矩阵向量乘等内核,并将 3 的幂打包进 32 位常量以优化实现。
AI解读:这次发布的重点是补上Vulkan后端对TQ1_0量化格式的支持。TQ1_0是一种把权重压到极低比特的量化方案,此前它主要跑在CPU或其他后端,用Vulkan加速的设备(比如很多AMD、Intel显卡和部分移动GPU)没法完整利用这种压缩格式。加入mm、mat-vec这些内核后,用Vulkan跑TQ1_0模型的用户可以达到和现有后端一致的功能范围。实现上把每个 7 位的 3 的幂打包成一个 32 位常量存储,相比原来用常量数组能减少寄存器占用和内存读取,这种改动主要影响的是部署时的运行效率而非量化精度。对普通用户来说,如果没有在用支持TQ1_0的更小模型,这次更新不需要立刻升级;真正受益的是在Vulkan环境下跑TQ1_0权重的推理玩家或开发者,他们在功能选择上不再需要降级。
llama.cpp项目发布b10831版本,主要变化是在Vulkan后端加入TQ1_0量化格式支持,覆盖矩阵乘法(mm)、矩阵向量乘(mat-vec)、带ID的矩阵向量乘(mat-vec-id)、反量化(dequant)和get_rows操作(PR #27765)。
Vulkan后端新增TQ1_0内核并优化 3 的幂存储
b10831的变更说明显示,TQ1_0支持通过PR #27765 加入,包含mm、mat-vec、mat-vec-id、dequant和get_rows的实现。实现中一个关键改动是:将TQ1_0所需的 3 的幂(powers of 3)从常量数组替换为打包进单个 32 位常量,每个条目占 7 位,最大值为 81。