Skip to content

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 07:47
· 23 commits to main since this release

v2.3.0:arm64 多档指令集 + FlashAttention + KV 量化

1. 多档指令集:让新芯片跑更快的量化内核

以前是单一构建,固定 armv8.2-a+dotprod+fp16,所有 arm64 机型只能跑同一档,且缺 dotprod 的老机被直接拒绝。
现在改用 GGML_CPU_ALL_VARIANTS,为 Android arm64 编出多份 CPU 后端,运行时由 ggml_backend_score() 按 HWCAP 打分,只加载分数最高的那一档:

后端 指令集 典型芯片
android_armv8.0_1 基线 armv8-a 所有 arm64(兜底)
android_armv8.2_1/2 dotprod / +fp16 2018 年后的处理器
android_armv8.6_1 +i8mm 骁龙 8 Gen 1+ / 天玑 9000+ 等
android_armv9.0_1 +SVE2 天玑 9200+ 等
android_armv9.2_1/2 +SVE/+SME 最新旗舰

产物反汇编核对:armv8.0 档 0 条 sdot/smmla,armv8.2 档 747 条 sdot,armv8.6 档额外 174 条 smmla(i8mm),armv9.0 档 308 条 smmla。

兼容性反而更好:基线改回 armv8-a 后,移除了原先 dotprod+fp16 的硬门槛,老 arm64 也能跑了。

2. FlashAttention + KV 缓存量化

  • 上下文开启 flash_attn_type = AUTO(模型支持时减少注意力读写)
  • KV 缓存量化为 q8_0:注意力读写量减半,KV 内存约为原来的 1/2

3. 输出上限进一步放开

  • 单次最长输出默认 1024 → 4096(可调至 8192)
  • 默认上下文 4096 → 8192(可调至 32768)
  • 输出必须挤在上下文里(上下文 = 提示词/历史 + 本次输出),设置时会自动收敛到 3/4 以内
  • 新增「继续生成」:长按回复即可接着往下写

说明

  • 本次为纯 CPU 推理:Vulkan/OpenCL 卸载所需工具链(glslc / Vulkan SDK)在构建环境不具备,未启用
  • 因此提速幅度与芯片强相关:支持 i8mm/SVE 的新机型收益最大(量化矩阵乘走 smmla),老机型与之前持平
  • 由于多了几份后端 .so,安装包由 12 MB 增至约 17 MB
  • 安装包为 CI 正式签名(与仓库 dist/ 同一签名),可直接覆盖安装

Full Changelog: v2.2.0...v2.3.0