turboquant-mlx
Apple Silicon 上 KV Cache 4.6 倍压缩,PolarQuant 算法实现零质量损失的混合精度量化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Apple Silicon 上 KV Cache 4.6 倍压缩,PolarQuant 算法实现零质量损失的混合精度量化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你用大语言模型处理一份 32K tokens 的长文档时,模型需要在每一步推理中存储所有历史 Key-Value 矩阵(KV Cache)——这部分内存占用随上下文长度线性增长,成为长上下文场景的致命瓶颈。以 Qwen 2.5-7B 为例,32K 上下文中 KV Cache 占用高达 6.21 GB,比模型权重本身还要大。
传统解法是量化 KV Cache,但粗暴地对 K(Key)和 V(Value)统一量化会引发问题:K 矩阵参与注意力分数计算,4-bit 量化带来的噪声会破坏 softmax 的数值稳定性,导致生成结果完全偏离基线。
TurboQuant-MLX 正是为解决这一矛盾而生。
TurboQuant-MLX 的核心洞察来自论文 arXiv:2504.19874:K 和 V 的量化容忍度截然不同。
基于这一发现,TurboQuant 提出了 PolarQuant 量化方案:
在 Qwen 2.5-7B、32K 上下文的测试条件下:
| 配置 | 活跃内存 | 节省 | 解码速度 | 质量 |
|---|---|---|---|---|
| 基线 FP16 | 6.21 GB | -- | 35.75 tok/s | 正确 |
| K8+V4 混合量化 | 5.08 GB | -18% | 25.84 tok/s | 完全一致 |
| K8+V2 混合量化 | 4.97 GB | -20% | 25.52 tok/s | 完全一致 |
质量验证采用贪婪解码逐字比对,生成文本与基线 100% 匹配——这意味着在压缩 KV Cache 的同时,TurboQuant 实现了零质量损失的推理加速。
无需修改 mlx-lm 源码,只需安装 turboquant-mlx:
pip install -e .
from turboquant_mlx.v_only_cache import VOnlyTurboQuantCache
cache = [VOnlyTurboQuantCache(bits=3) for _ in range(n_layers)]
# 直接作为 mlx-lm 的 prompt_cache 使用
这种方式保持 K 为 FP16,仅对 V 应用 PolarQuant 3-bit,兼容性最佳。
需要配合 arozanov/mlx-lm 分支(feature/turboquant-kv-cache)使用:
pip install --force-reinstall --no-cache-dir \
git+https://github.com/arozanov/mlx-mlx.git@feature/turboquant-kv-cache
支持 --kv-cache-quantization 8,4 服务端标志,以及磁盘持久化(--prompt-cache-dir),适合需要长时间运行推理服务的场景。
TurboQuant-MLX 不只是算法实现,更有深度的 GPU 优化:
prerot_fused_qk_scores):在一次 GPU 内核调用中完成 Query 预旋转 + QK 分数计算,消除中间结果的全局内存读写。sum(w * WHT(x)) = WHT(sum(w * x)),先在寄存器中累加加权向量,再做一次 butterfly,V-attention 内核提速 4.5 倍。simd_sum 替代,内核提速 1.85 倍。n_rep 参数避免在 GQA(Grouped Query Attention)模型上做 mx.repeat 内存分配。| 维度 | 评估 |
|---|---|
| 硬件要求 | ⚠️ 必须为 Apple Silicon Mac,x86 Linux/Windows 无法使用 |
| 编程能力 | 需要理解 LLM 推理流程,熟悉 mlx-lm 的 KV Cache 机制 |
| 集成难度 | V-only 路径简单(pip install),混合量化路径需要编译 mlx-lm 分支 |
| 适用场景 | 长上下文推理(>8K tokens)、本地大模型推理优化 |
随着 Apple Silicon 在开发者群体中渗透率提升,MLX 生态正在从"尝鲜玩具"走向"生产级推理引擎"。TurboQuant-MLX 代表了一个重要方向:在硬件约束下通过算法创新(而非暴力堆算力)提升推理效率。KV Cache 压缩每节省 1GB,意味着可以在同等内存下多处理 50% 的上下文长度——这对于检索增强生成(RAG)和长文档分析场景意义重大。
同时,PolarQuant 论文的思路(K/V 差异量化 + Walsh-Hadamard 旋转)也有望迁移到 CUDA 生态,推动更广泛的 KV Cache 优化实践。
一句话总结:TurboQuant-MLX 是 Apple Silicon 本地大模型推理的内存优化利器,通过 K8+V4 混合精度量化在保持输出质量的前提下节省 18-20% 内存,代价是平台锁定和一定的集成复杂度。