TurboQuant Lloyd-Max 码本完全指南:从零计算 Beta 分布的最优标量量化器

发布时间:2026/10/11 3:54:48
TurboQuant Lloyd-Max 码本完全指南:从零计算 Beta 分布的最优标量量化器 【免费下载链接】turboquantTurboQuant: Near-optimal KV cache quantization for LLM inference (3-bit keys, 2-bit values) with Triton kernels vLLM integration项目地址https://gitcode.com/gh_mirrors/tu/turboquant点击查看免费下载TurboQuant是一款面向 LLM 推理的 KV Cache 压缩库ICLR 2026其核心是让Lloyd-Max 码本在Beta 分布上找到数学意义上的最优标量量化器实现 3-bit Key / 2-bit Value 的近无损压缩。本文带你从零理解并亲手算出这份码本Beta 分布从哪来、Lloyd-Max 三步迭代怎么做、d128 时 8 个质心长什么样、以及码本如何在 vLLM 推理链路中被调用。 为什么 KV Cache 量化离不开「最优码本」大模型推理时KV Cache会随着上下文线性膨胀成为显存瓶颈。TurboQuant 的做法是把每个 Key 向量压到3 bit/坐标、Value 压到2 bit/坐标实测在纯 dense Transformer 上能省77% 的 KV 显存约 4.4x 压缩。但压到 3 bit不是随便取整就行。两种思路对比方案做法d128 / 3-bit 的每坐标 MSE均匀量化把 [-1, 1] 等分 8 段取中点≈ 5.21 × 10⁻³Lloyd-Max 最优量化按数据分布密度切分密度高处格点密≈ 2.65 × 10⁻⁴✅差距接近20 倍——在注意力这种对微小误差敏感的环节均匀量化会让 Top-K 排序直接跑偏而 Lloyd-Max 码本能把 Key 压缩的余弦相似度压到1.000000近乎无损见 README.md 的实测表。 一句话总结码本 一张值域 → 索引的最优查表。量化时查表存索引反量化时按索引取回质心值。 前置知识旋转之后坐标服从 Beta 分布TurboQuant 的第一步是对 Key 向量做随机正交旋转见 rotation.py把方向信息打散到每个坐标上。数学上可以证明d 维单位球面上的均匀随机点其任意一个坐标的分布是f(x) Γ(d/2) / (√π · Γ((d-1)/2)) · (1 − x²)^((d−3)/2)x ∈ [−1, 1]这正是缩放的 Beta 分布。维度 d 越大分布越像 N(0, 1/d)——也就是越集中在 0 附近。这个性质是整个方案的免费午餐✅ 分布解析已知不依赖训练数据✅ 分布只与 d 和 bits 有关与模型无关✅ 因此码本可以离线一次性算好存成 JSON 直接复用代码实现见 turboquant/codebook.py 中的beta_pdf——注意它用对数形式gammaln计算避免大维度下阶乘溢出这是数值稳定性的小细节。 Lloyd-Max 三步迭代最优标量量化器的核心算法Lloyd-Max又称连续 1D k-means目标找 K 2ᵇ 个质心使总 MSE 最小。算法只有三步循环第 1 步初始化分位数法在 [-1, 1] 上取 10000 点网格数值积分得到 CDF然后把第 1/K、2/K、… 分位数中点作为初始质心。不用分位数而用等间距初始化是常见错误——因为 Beta 分布在 0 附近密、尾部疏等间距起点会让迭代多绕弯路。对应实现codebook.py第 2 步求决策边界相邻两个质心的中点就是分界线boundary[i] (centroid[i] centroid[i1]) / 2端点固定为 -1 和 1。第 3 步更新质心 区间条件期望这是 Lloyd-Max 最精妙的一步。给定边界 [lo, hi]新质心不是区间中点而是该区间内的概率加权平均条件期望centroid ∫ₗₒʰⁱ x·f(x)dx / ∫ₗₒʰⁱ f(x)dx实现见 _conditional_mean用scipy.integrate.quad做高精度数值积分。 收敛判据每轮算一次总 MSEcost Σᵢ ∫_{bin_i} (x − cᵢ)² · f(x) dx当|prev_cost − cost| 1e-12时停止最多迭代 200 轮实际通常 30 轮收敛。完整主循环见 compute_lloyd_max_codebook。 从零算一遍d128、3-bit 的真实码本跑完迭代d128、3-bit8 个质心的结果如下来自仓库预生成的 codebook_d128_b3.json桶 i决策区间质心值0[−1.000, −0.153)−0.18841[−0.153, −0.092)−0.11812[−0.092, −0.044)−0.06663[−0.044, 0.000)−0.02164[0.000, 0.044)0.02165[0.044, 0.092)0.06666[0.092, 0.153)0.11817[0.153, 1.000]0.1884最终每坐标 MSE 2.6536 × 10⁻⁴。两个值得注意的细节质心关于 0 完全对称——这是 Beta 分布对称性的直接体现不是巧合中间 4 个桶宽度只有约 0.044两端桶宽度却高达 0.847——密度高的地方格点密这就是最优二字的几何含义。 维度越高码本越挤真实数据对比同样是 3-bit不同 head_dim 下最外侧质心的位置d质心范围每坐标 MSE文件64±0.26395.22 × 10⁻⁴codebook_d64_b3.json128±0.18842.65 × 10⁻⁴codebook_d128_b3.json576±0.08955.98 × 10⁻⁵codebook_d576_b3.jsond 越大 → 坐标越集中于 0 → 质心越挤、MSE 越低。这就是为什么高维注意力头天然更适合逐坐标量化。再看同一 d128 下不同比特宽度的性价比bits质心数每坐标 MSE相比上一档的衰减122.82 × 10⁻³—249.06 × 10⁻⁴÷ 3.1382.65 × 10⁻⁴÷ 3.44167.28 × 10⁻⁵÷ 3.6每多花 1 bitMSE 大约降 3~4 倍——这就是 TurboQuant 选择Key 用 3-bit保精度、Value 用 2-bit省显存的数学依据Value 对误差不敏感瓶颈分析见 README.md。 码本怎么落地三级缓存 JSON 持久化TurboQuant 的码本加载走 get_codebook逻辑很干净内存命中→ 直接返回_CODEBOOK_CACHE磁盘命中→ 读codebooks/codebook_d{d}_b{bits}.json都没命中→ 现场跑 Lloyd-Max 迭代写盘缓存仓库已预置 10 份常用码本覆盖 d ∈ {64, 128, 576} × bits ∈ {1, 2, 3, 4}位于 turboquant/codebooks/。首次调用新组合如 d256, 3-bit时会自动计算无需 GPU纯 CPU 几十秒即可完成——因为积分只发生在 [-1, 1] 的一维区间上代价极低。 码本在推理链路中的位置把 README.md 的 5 步流水线展开码本出现在第 2 步步骤操作代码位置1随机正交旋转 ΠQR 分解生成d128 时仅 64KBrotation.py2Lloyd-Max 码本量化searchsorted(决策边界)→ 索引quantizer.py3QJL 投影残差符号位每维 1 bitquantizer.py4Value 组量化2-bit / 4-bitkv_cache.py5位打包2-bit 每字节 4 个值quantizer.py反量化路径完全对称解包索引 →查质心表→ 逆旋转 → 乘回范数。整个查表就是一次self.centroids[indices]的 gather几乎零开销。⚡ 快速上手三种拿到码本的方式方式一直接引用预生成文件推荐仓库已含 10 份 JSONhead_dim 匹配时零成本加载。方式二运行时自动计算只需正常初始化量化器get_codebook_tensors(dim, bits, device, dtype)会自动完成计算→落盘→上 GPU见 codebook.py。方式三手动调用核心函数from turboquant.codebook import compute_lloyd_max_codebook cb compute_lloyd_max_codebook(d128, bits3) print(cb[centroids], cb[mse_per_coord])依赖仅numpyscipy无需 GPU。安装见 setup.pypip install -e .即可。✅ 论文定理验证码本忠实度实测仓库内置 9 项论文定理验证对应 README.md与码本直接相关的结论验证项结果Codebook MSE 与论文 Table 1 一致PASS单位向量 MSE 失真界Thm 1PASS内部积估计无偏性Thm 2相对偏差 0.1%PASS失真按 1/4ᵇ 缩放Thm 32-bit0.70x / 3-bit0.82x / 4-bit0.97x 界内PASS也就是说本文手工推导的 Lloyd-Max 结果与论文的解析界完全对得上——码本不是拟合出来的黑盒而是有理论背书的最优解。 常见疑问 FAQQ1为什么码本按 d 区分不能全模型共用一个ABeta 分布的参数含 d不同 head_dim 的分布形状不同见上文维度对比表质心范围能差 3 倍。Q2为什么质心全在 ±0.3 以内[-1, 1] 大部分范围没被用到A单位球面上坐标接近 ±1 的概率极小尾部概率质量可忽略。边界 [-1, -0.153) 这个大桶捕获的是极小概率的尾部事件牺牲精度换覆盖。Q32-bit / 3-bit / 4-bit 怎么选AKey 强烈建议3-bitcos_sim ≈ 1.000000Value 追求省显存用2-bitcos_sim 0.940质量敏感场景用4-bitcos_sim 0.997。Q4重新训练模型后码本需要重算吗A不需要。码本只依赖 d 和 bits与模型权重无关——这是先旋转后量化设计的核心红利。Q5Lloyd-Max 和 k-means 是一回事吗ALloyd-Max 是连续 1D 空间上的 k-means距离用真实差值而非欧氏采样均值更新换成解析的条件期望积分因此收敛更快、结果就是全局最优1D 下无多局部极小问题。 总结一张图看全文概念关键点Beta 分布旋转后单位向量坐标的解析分布只依赖 dLloyd-Max分位数初始化 → 中点边界 → 条件期望更新迭代至收敛最优性1D 连续域下即全局最优比均匀量化省 20 倍 MSE落地JSON 缓存 三级加载 查表 gather推理零开销效果3-bit Key 近无损纯 dense 模型 KV 显存 -77%核心文件索引码本计算turboquant/codebook.py预生成码本turboquant/codebooks/量化器码本的调用方turboquant/quantizer.py旋转矩阵turboquant/rotation.py论文验证结论README.md掌握这套分布 → 最优量化器 → 查表的范式后你会发现同样的思路可以直接迁移到权重量化、特征离散化等一切需要逐坐标压缩的场景。赞分享【免费下载链接】turboquantTurboQuant: Near-optimal KV cache quantization for LLM inference (3-bit keys, 2-bit values) with Triton kernels vLLM integration项目地址https://gitcode.com/gh_mirrors/tu/turboquant点击查看免费下载相关推荐RSLM 向量量化基于旋转缩放 Lloyd-MaxRotated Scaled Lloyd-Max的高压缩率 ANN 搜索编解码器家族RSLM 向量量化基于旋转缩放 Lloyd MaxRotated Scaled Lloyd Max的高压缩率 ANN 搜索编解码器家族 本指南围绕 goo人工智能深度学习NLP计算机视觉强化学习从零实现 TurboQuant基于 PolarQuant QJL 的 KV Cache 在线向量量化落地指南turboquant_plus从零实现 TurboQuant基于 PolarQuant QJL 的 KV Cache 在线向量量化落地指南turboquant_plus 本文以仓库SciPy linalg 完全指南从基本例程、矩阵分解到批量计算与 in-place 优化SciPy linalg 完全指南从基本例程、矩阵分解到批量计算与 in place 优化 SciPy 的 scipy.linalg 子模块是面向科学计算的一科学计算数据科学高性能计算创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询