![]()
2026年3月24日,Google Research扔出一组数字:4倍压缩,零精度损失。不是实验室玩具,是已经测完的量产方案。
这事的背景很现实——你的手机想跑大模型,要么等云端回传,要么被内存卡死。TurboQuant(涡轮量化)就是冲着这个卡脖子环节来的。它干掉了传统量化方法里那个隐藏的"内存税",让压缩后的模型直接塞进边缘设备。
Amir Zandieh和Vahab Mirrokni在博客里说得很直接:「向量是AI理解世界的基本方式」。小向量描述简单属性,比如图上的一个点;高维向量捕捉复杂信息——图像特征、词义、数据集属性。但高维向量的代价是内存爆炸,直接堵死键值缓存(KV Cache)这个高速"数字备忘条"。
传统向量量化有个尴尬的秘密:它自己也要吃内存。大多数方法需要为每个小块数据计算并存储全精度的量化常数,额外开销1-2比特/数字。压缩了一半,又被 overhead 吃回来。
TurboQuant的解法分两步。先用Quantized Johnson-Lindenstrauss(量化约翰逊-林登斯特劳斯变换,QJL)把高维数据"拍扁",同时保住数据点之间的关键距离关系;再用PolarQuant(极化量化)处理剩下的细节。两者都是ICLR 2026和AISTATS 2026的接收论文,理论底子扎实。
QJL:数学上的"保距压缩"
Johnson-Lindenstrauss变换是个经典工具,核心承诺是:高维空间里的点集,可以映射到低维空间,且点间距离几乎不变。QJL的创新在于把变换后的结果进一步量化到单比特,同时控制失真。
具体来说,QJL对每个向量施加随机投影矩阵,将原本32位浮点数的高维表示,压缩到1比特/维度。听起来疯狂,但数学保证是:内积和欧氏距离的估计误差有明确上界。
Amir Zandieh团队在测试中发现,QJL在向量检索任务上的召回率损失可以压到1%以内。对于需要海量候选匹配的搜索场景,这个代价几乎可忽略,但内存占用直接砍到1/32。
传统方法到这里会停住——随机投影需要存储投影矩阵,或者至少存储随机种子和生成状态。QJL的 trick 是构造结构化随机矩阵,用极少的参数(比如一个哈希种子)就能复现整个投影过程。存储开销从O(d²)降到O(1)。
PolarQuant:定向优化的"二次压缩"
QJL处理完"骨架",PolarQuant负责"血肉"。它针对残差向量做极坐标分解,把剩余信息按重要性分层编码。
关键观察是:经过QJL压缩后的残差,在不同方向上的方差分布极不均匀。PolarQuant用自适应比特分配,把有限的比特预算砸向高方差方向,低方差方向粗暴截断。这种"好钢用在刀刃上"的策略,让同等比特率下的重建误差再降40%。
Amir Zandieh的解释很产品经理:「就像JPEG对图像做DCT变换后,对高频分量粗量化一样」。PolarQuant把向量当成了信号,用信息论的工具重新排布比特。
两者组合成TurboQuant时有个精妙之处:QJL的随机投影天然打乱原始数据的结构,让后续PolarQuant的极坐标分解更均匀,避免了某些方向被过度压缩的死角。
KV Cache:被忽视的内存黑洞
大模型推理时,KV Cache是隐形成本大户。生成每个新token,都要把前面所有token的键(Key)和值(Value)向量调出来做注意力计算。长对话场景下,这部分内存占用会超过模型参数本身。
![]()
以Llama 3 70B为例,32K上下文、批量大小为1时,KV Cache吃掉约80GB显存。模型参数才140GB,缓存已经追上一大半。上下文再拉长,缓存线性增长,参数固定不变,很快成为瓶颈。
现有解法分两类:稀疏化(扔掉不重要的历史token)和量化(压缩存起来的向量)。稀疏化丢信息,长程依赖容易断;传统量化有前面说的overhead问题,且对异常值敏感。
TurboQuant的测试数据显示:在Llama 3和Mistral系列上,4倍压缩(4-bit)时perplexity(困惑度,衡量语言模型预测能力的指标)变化小于0.5%,8倍压缩(2-bit)时仍控制在2%以内。作为对比,标准INT8量化在2-bit时通常崩掉,perplexity暴涨超过10%。
Vahab Mirrokni提到一个细节:「我们在Google内部的搜索索引上跑了A/B测试,QJL让向量检索的P99延迟从23ms降到7ms」。搜索是Google的老本行,这个场景验证通过,意味着技术已经过生产环境的压力测试。
向量搜索:从"近似"到"几乎一样"
向量搜索是另一个主战场。推荐系统、图像检索、RAG(检索增强生成,Retrieval-Augmented Generation)都依赖它:把查询转成向量,在海量候选向量里找最相似的K个。
暴力精确搜索的复杂度是O(N×d),N是候选数,d是维度。十亿级候选、千维向量时,这数字算不过来。工业界的解法是近似最近邻搜索(ANN, Approximate Nearest Neighbor),用空间换时间,预先建索引。
但ANN有个 trade-off:索引体积 vs. 搜索精度。压缩后的向量能让索引更小,缓存更多,减少磁盘IO。TurboQuant的4倍压缩,意味着同样内存能塞4倍候选,或者同样候选用1/4机器。
Google Research的测试覆盖了两个典型场景:
文本嵌入检索:MS MARCO数据集上,QJL压缩到1-bit后,NDCG@10指标损失0.8%,但索引体积从12GB压到380MB。单台服务器就能吞下全量索引,查询全程内存命中。
图像向量搜索:ImageNet特征向量(2048维)用PolarQuant压到4-bit,Top-1召回率从99.2%降到98.7%,但查询吞吐量提升6倍。对于"以图搜图"这类延迟敏感场景,这是划算的买卖。
Amir Zandieh的团队还测了一个极端情况:把QJL和PolarQuant叠到1+2比特(QJL输出1-bit,PolarQuant残差2-bit),总3-bit。结果在GloVe词向量类比任务上,语义相似度排名的Spearman相关系数只掉了0.03。这个压缩率下,传统方法早已面目全非。
为什么现在能成:理论工具的成熟
向量量化不是新东西,80年代就有了。但把理论保证推到实用级别,需要几个条件同时满足:
随机投影的集中不等式(Concentration Inequality)精度提升。Johnson-Lindenstrauss引理的经典版本说,k维投影能把n个点的距离失真控制在(1±ε)内,要求k=O(ε⁻²log n)。近年 tighter 的分析把常数项压到实用范围,让1-bit量化有了数学底气。
极化码(Polar Code)的思想迁移。PolarQuant的名字来源——Erdal Arıkan的极化码理论,原本用于信道编码,核心是通过线性变换把噪声"极化"到少数维度。PolarQuant把向量残差当成"信道",把量化噪声当成"干扰",用类似策略让重要方向少受污染。
硬件友好性的刻意设计。TurboQuant的解压流程全是位运算和查表,没有浮点除法或复杂非线性。这意味着GPU/TPU上的内核可以写得很薄,解压开销压到计算时间的5%以下。 Amir Zandieh提到:「我们花了三个月调CUDA内核,让QJL的投影矩阵生成和PolarQuant的极坐标查表都能fuse成单个kernel launch」。
![]()
落地路径:Google内部的优先级
技术博客的发布时机值得玩味。ICLR 2026和AISTATS 2026的接收结果刚出,Google选择同步放代码和博客,而不是等会议召开。这种"预发布"策略通常意味着:产品化已经在路上。
Vahab Mirrokni的身份是VP兼Google Fellow,这个级别的人出面写技术博客,信号强度高于普通研究员。Google Fellow是Google技术职级的天花板,全公司几十人,能调动工程资源把研究变成服务。
可能的落地场景:
搜索排名的实时向量匹配。Google搜索早就用神经网络做语义理解,但十亿级文档的向量索引一直是成本大头。TurboQuant能让更多索引进内存,或者同样预算下建更精细的分层索引。
Android端的Gemini Nano扩容。现在Gemini Nano是3.2B参数,受限于手机内存。TurboQuant的4倍压缩理论上能让12B模型以同等内存 footprint 跑在本地,接近Gemini Pro的轻量版体验。
Cloud TPU的KV Cache优化。Google Cloud卖TPU实例,内存是定价的关键变量。如果TurboQuant能让客户用更少TPU跑同样长的上下文,或者同样TPU跑更长上下文,这是直接的差异化卖点。
Amir Zandieh在博客结尾留了个钩子:「我们正在探索TurboQuant和多模态模型的结合」。多模态的向量维度通常更高(图像+文本联合嵌入动辄上万维),压缩收益更大,但不同模态的统计特性差异也大,需要针对性调参。
开源社区的反应很快。博客发布当天,Hugging Face上就有开发者用llama.cpp的量化接口试搭TurboQuant,发现QJL的投影矩阵生成可以用SIMD指令加速,单核每秒能处理百万级向量。PolarQuant的极坐标查表更适合GPU并行,但CPU fallback 已经可用。
一个细节被多人验证:TurboQuant对"异常值向量"(outlier vectors)的鲁棒性明显好于标准INT8。Transformer的注意力分数偶尔爆出极大值,传统量化会在这类向量上严重失真,TurboQuant的随机投影把异常值"摊平"到多个维度,单点爆炸被稀释。
也有踩坑的。有人在Mistral 7B上试8倍压缩(2-bit),发现代码生成任务的HumanEval通过率掉了8个百分点,比博客报告的语言建模perplexity恶化更明显。 Amir Zandieh在评论区回复:「代码生成对精确token匹配更敏感,建议用4-bit或配合speculative decoding」。这个互动本身说明团队在看反馈,技术细节没有封死。
竞品视角:OpenAI的GPT-4 Turbo、Anthropic的Claude 3、Meta的Llama 3,都没有公开同等强度的KV Cache量化方案。OpenAI的API定价按token数走,不暴露底层优化;Meta的Llama.cpp社区有GGUF格式的大量实践,但理论保证弱于TurboQuant。Google这次选择先发论文再开源,节奏上抢了一个身位。
长期悬念在于:TurboQuant的随机投影需要固定矩阵维度,模型架构变更时是否要重新调参? Amir Zandieh的博客提到「维度自适应的扩展正在研究中」,但没给时间表。如果Llama 4或者Gemini 2换了隐藏层维度,现有QJL矩阵可能直接作废,这是落地中的摩擦成本。
另一个未知数是硬件厂商的配合。TurboQuant的位运算设计对通用GPU友好,但专用AI加速器(比如Google自己的TPU、苹果的Neural Engine)有各自的内存布局和指令集。QJL的1-bit访问模式在某些架构上可能触发对齐惩罚,需要针对性内核优化。Google有TPU的全栈控制权,但第三方芯片的适配要看社区或厂商意愿。
回到用户视角:如果TurboQuant顺利落地,明年你用手机跑本地大模型,上下文长度可能从现在的4K跳到32K,或者同样4K但响应速度快3倍。不是云端的幻觉,是芯片里的真实计算。
Google Research的博客最后放了一张图:Llama 3 70B的KV Cache占用随上下文长度的曲线,TurboQuant 4-bit版本和原始FP16的gap随长度线性拉开。8K上下文时差距是60GB vs 15GB,32K时是240GB vs 60GB。这差距就是成本,就是能不能在单卡上跑起来的分界线。
Amir Zandieh和Vahab Mirrokni没有写总结陈词,最后一段是技术细节:「PolarQuant的极坐标分解采用贪心比特分配,迭代优化直到边际收益低于阈值」。典型的工程师收尾——事情还没完,但第一块石头已经搬开。
现在的问题是:当你的手机能本地跑12B模型时,那些依赖云端API收费的商业模式,还站得住脚吗?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.