资讯详情

资讯详情

TurboQuant融合Triton内核深潜:单次遍历直接计算压缩KV注意力的3个技巧

【免费下载链接】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 量化工具用3-bit keys 2-bit values的极致压缩配合Triton 融合内核在 vLLM 里把压缩后的 KV 直接变成注意力输出——省显存、不掉速、几乎不损精度。decode 阶段的真正瓶颈是从压缩 KV 里算注意力分数本文拆解 TurboQuant 用单次遍历直接计算压缩 KV 注意力的 3 个关键技巧帮你读懂它快在哪。decode 为什么卡在 KV 读回先看清 9 步冗余大模型生成文字时是一个 token 一个 token地往外蹦decode。每生成一个新 token都要拿当前 query 去和所有历史 KV做注意力。历史越长要读的数据越多。TurboQuant 把历史 KV 压到约 3 bit/元素但压得好不等于算得快。如果用普通 PyTorch 一步步还原再算一个 KV 向量要走满9 步阶段普通无融合9 步流程痛点还原 key1. 解包 MSE 索引位移→ 2. 查码本质心 → 3. 反向旋转(d×d 矩阵乘) → 4. 乘范数 → 5. 与 query 点积要把每个 KV完整还原成浮点向量残差修正6. query 过 S 矩阵(d×d 矩阵乘) → 7. 解包 QJL 符号 → 8. 与符号点积 → 9. 乘残差范数又要物化一整批中间张量问题核心N 个 KV 就要做 N 次 d×d 矩阵乘、N 次向量物化大量中间结果反复落显存再读回。TurboQuant 的解法是——根本不还原 KV直接在压缩位上算出注意力分数。下面 3 个技巧正是围绕这一点。技巧 1反转旋转方向——转 query 一次而不是转 N 个 keyTurboQuant 的 key 是先把向量做随机正交旋转y x Pi^T再量化的。要算注意力分数q, key天然是先把 key 旋转回去也就是对每个 KV 做一次y Pi的 d×d 矩阵乘。历史有 N 个 KV就是 N 次矩阵乘——这就是最大的浪费。TurboQuant 用了一个漂亮的方向反转既然Pi是正交矩阵q, Pi·y Pi^T·q, y。 那就别动 key把query 向前旋转一次q Pi^T之后对每个 KV 只需q_rot[j] × centroid[idx[j]]逐维相乘累加。一句话总结把每个 key 转一次变成整个 query 只转一次。d×d 矩阵乘从 N 次降到 1 次而且从头到尾没有物化任何一个 d 维还原向量。这正是第一个融合内核turboquant_mse_score的核心见 triton_kernels.py 里的关键注释。技巧 2预计算 query 草图符号位就地展开直接点积key 的量化分两层MSE 主层b-1bit查码本QJL 残差层每维 1 bit 的符号。符号位是 8 个挤在一个字节里的怎么用最省第二个内核turboquant_qjl_score做了两件事草图只算一次query 过 S 矩阵得到q_sketch q S^T每个 query 只算一遍然后对 N 个 KV 复用。符号就地展开内核里直接把位拆成{-1, 1}与草图逐维相乘累加再乘一个常数sqrt(π/2)/d。妙处在于这套结构是无偏估计E[估计内积] 真实内积也就是压缩后算出来的分数在期望上和精确值一致从数学上保证了压得狠但分不偏。相关推导见 quantizer.py 的类注释。技巧 3在线 softmax 单趟融合全程不落地 FP16 KV前两个技巧算出分数第三个技巧把分数 softmax 加权求值塞进同一个内核一次遍历压缩 KV 就出最终注意力输出。这是单次遍历真正的落点见 triton_kernels.py 的设计说明。它借鉴 Flash-Attention 的在线 softmax只维护三个状态变量状态含义更新时机m_i运行中的最大值每扫一块 KV 就更新l_i运行中的 exp 求和每扫一块就更新acc运行中的加权和旧值按修正因子缩放后累加新值扫完所有 KV 块最后acc / l_i一次归一化就得到输出。整个过程读取的是压缩 KV约 3 bit/元素带宽占用直接降到零头的量级从不在显存里生成完整的 FP16 KV省的不只是容量还有反复读写值向量用分组量化v * scale zero在寄存器里现解现用。对应入口是 turboquant_fused_decode它会先预旋转/草图 query再一把调起内核。三个内核如何拼成一次完整 decode 注意力拆开看是 3 个技巧用起来是一条流水线。顶层封装 turboquant_attention_score 把流程串起来对 query 做一次q Pi^T技巧 1 的旋转和q S^T技巧 2 的草图调内核 1得到 MSE 分数调内核 2把 QJL 分数原地加到同一块输出上需要完整输出时交给内核 3做在线 softmax 值聚合。三步共用同一份预旋转 query避免了重复计算这就是直接计算的含义——没有任何一步把 KV 还原成原始浮点再走标准注意力。压缩 KV 从哪来写入路径与码本速览只讲读取会不完整。TurboQuant 的 KV 是写入时就压好的整条写路径分工清晰捕获capture.py 用一个环形缓冲区暂存最近的精确 token满了才把最老的一批刷成压缩块保证 decode 热路径上没有逐 token 量化的开销。存储store.py 按块追加首次读取时惰性拼成扁平缓存读多写少时缓存命中、免拼接。码本codebook.py 用Lloyd-Max算法为旋转后的 Beta 分布求最优质心结果缓存在 codebooks/ 目录如 codebook_d128_b3.json。值量化kv_cache.py 对 value 做 2-bit/4-bit 分组量化 位打包。vLLM 集成integration/vllm.py 以极小的 monkey-patch 面挂钩支持off / capture_only / hybrid / full_tq四种模式。实测收益省 30GB 显存、上下文翻倍技巧值不值看数字。项目在 RTX 5090 上跑 Qwen3.5-27Bdense4-bit 权重的实测对比指标基线bf16 KVTurboQuant3b key / 2b valPrefill tok/s30k 上下文1,8041,9075.7%Decode tok/s30k 上下文1.2641.3033.1%释放 KV 显存—30.0 GB4 卡合计最大 token 容量457,072914,1442.0x峰值激活显存644.6 MB599.2 MB-7.0%要点省内存的同时速度不降反微升纯 dense 架构下 KV 压缩比可达约4.4x。质量上 3-bit key 的余弦相似度达 1.000000近无损瓶颈在 2-bit value——对质量敏感的场景可改用 4-bit valuecos_sim 0.997。快速上手安装与运行基准想亲手验证两步即可git clone https://gitcode.com/gh_mirrors/tu/turboquant pip install -e .无 GPU 也能跑论文定理验证python proof.pyA/B 对比基准需 4× RTX 3090 Qwen3.5-27B-AWQ。想深入读代码主线是 turboquant/ 目录从 triton_kernels.py 与 quantizer.py 切入最容易。适用边界与局限仅压缩 full-attention 层线性注意力 / Mamba 类层的 state 不可压缩MoE 混合模型收益会打折。2-bit value 是精度瓶颈质量敏感场景建议上 4-bit value。hybrid 路径当前仍会全量反量化历史完全依赖融合内核的full_tq模式仍在演进中选型时留意 integration/vllm.py 里对各模式的说明。TurboQuant 的精髓一句话概括不还原 KV直接在压缩位上算注意力——旋转方向反转、草图预计算、在线 softmax 单趟融合三个技巧合力把 decode 的 KV 读回从瓶颈变成顺路的事。赞分享【免费下载链接】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点击查看免费下载相关推荐CANN ops-transformer TurboQuantSparseAttnSharedkv 算子解析4bit TurboQuant 解压与稀疏 shared-KV 注意力的单核融合CANN ops transformer TurboQuantSparseAttnSharedkv 算子解析4bit TurboQuant 解压与稀疏 sha算子库人工智能大模型深度学习CANNAscendCANN PyPTO SparseCompressedFlashAttention 算子深度解析稀疏压缩注意力融合计算实战指南CANN PyPTO SparseCompressedFlashAttention 算子深度解析稀疏压缩注意力融合计算实战指南 导读 本文聚焦 CANN 开源示例工程人工智能大模型模型推理服务模型优化模型量化CANNAscendvllm-ascend SparseAttnSharedkv 算子深度解析融合滑窗、压缩与稀疏压缩注意力的昇腾推理实现vllm ascend SparseAttnSharedkv 算子深度解析融合滑窗、压缩与稀疏压缩注意力的昇腾推理实现 导读 本文围绕 vllm ascend人工智能大模型模型推理服务AscendCANN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →