Google 刚发布的 TurboQuant 论文有多猛? X 上1000多万阅读了, 给大家写个都能看懂的大白话解析介绍下, 着又是能让大模型成倍提速, 价格嗷嗷给打下来的技术创新.
首先要从KVCache说起, 也算是老生常谈了, KVCache 是啥? 简单来讲, 大模型是一个个字往外蹦的, 而每蹦一个字都需要把这个字跟之前已经输出的字都计算一下, 类似于人类的边说话边回顾.
但是把刚开始说话的内容全算一遍显然不靠谱, 于是有了缓存, 直接把之前的计算结果保存下来, 每次只要跟这个缓存的结果去计算就行了,这个缓存里面存的就是每个字每次的特征数据
聪明的你一定能想到了, 那话说的越多, 这个缓存就会变得越大. 为了解决这个问题,业界卷出了【滑动窗口注意力】和【线性注意力】
这俩是啥呢? 我们可以把 KV Cache 想象成一个存放数据的【3D立方体】
立方体的【长】(上下文长度): 随着对话变长而不断变长。【滑动窗口注意力】就是限制了它的长,只保留最近固定长度的记忆,扔掉太老的,有效控制了体积。
立方体的【高】(状态大小): 【线性注意力】出手了,它通过数学魔法,把所有历史记录压缩成一个固定大小的隐状态。也就是说,无论说多少话,立方体的高永远被卡死了。
还剩下一个KVCache的【宽】对吧? 没错, 这个就是里面数据的精度(可以简单理解为小数点后面保留几位小数), 大家都知道模型参数是有精度的, 自然KVCache也有精度, 答案呼之欲出了——压缩KVCache的数据精度!
但是问题来了, 压到特别小 3bit 特别难, 而这就是 Google 这篇论文的核心了, 它使用了新的算法 (PolarQuant+QJL) 成功把 KV Cache 无损压缩到只有 3-bit! 要知道,今天很多普通大模型的KVCache还在用 16-bit(FP16/BF16)跑!
那为啥 KVCache 小了大模型会提速? 是因为计算的数据少了吗?
并不是, 因为现在显卡的算子也是有最小精度要求的, 比如 H100, 硬件底层的 Tensor Core 原生也只能算到 8-bit, 再小的精度还要反量化扩充到8bit才能计算.
提速的奇迹,其实发生在数据的读写上!
大模型数据和KVCache都存储到显存中, 而GPU计算这些数据要加载到GPU的SRAM中, 这个过程十分受限于显存带宽(我已经给大家科普这个观点不下100次了...).
所以,现在把 KV Cache 的精度从 16-bit 砍到 3-bit,直接就把需要读取和搬运的数据量缩小到了 1/4 到 1/5 !在显卡带宽不变、算力严重过剩的情况下,省下了海量的“搬砖时间”,速度自然就成倍飙升了!
目前我十分看好TurboQuant, 如果这个搭配线性注意力或者滑动窗口, 未来模型的推理速度翻倍完全没问题了!
#HOW I AI##TurboQuant##PolarQuant##Google##线性注意力##滑动窗口注意力#
