如果你关注AI领域,一定知道大语言模型(LLM)对内存的贪婪需求。这也是为什么现在买一根内存条都要被”割韭菜”的原因之一。Google Research最近发布了一项名为TurboQuant的压缩算法,声称可以在不损失质量的前提下,将大语言模型的内存占用降低6倍,同时提升8倍的性能。
什么是Key-Value缓存?
要理解TurboQuant的价值,首先需要了解AI模型是如何”记忆”的。Google将Key-Value缓存比喻为模型的”数字小抄”——它存储了重要信息,这样模型就不需要每次都重新计算。
我们知道,大语言模型并不真正”知道”任何事情。它们通过向量(vectors)来模拟对知识的理解——向量将文本的语义意义映射到数学空间中。当两个向量相似时,意味着它们在概念上也有相似性。高维向量可能有数百甚至数千个嵌入维度,可以描述复杂信息,如图片像素或大数据集。但这也意味着它们占用大量内存,并使Key-Value缓存变得臃肿,成为性能瓶颈。
传统量化方法的局限
为了让模型更小、更高效,开发者通常会使用量化技术,将模型以更低精度运行。问题是,这种做法会导致输出质量下降——token估计的准确性会降低。这就像是把一张高清照片压缩成低分辨率,虽然文件小了,但细节也丢失了。
TurboQuant的突破在于:Google的早期测试显示,在某些场景下,它可以实现8倍性能提升和6倍内存减少,同时不损失任何质量。这是一个令人振奋的进步。
两步压缩:PolarQuant + QJL
TurboQuant的压缩过程分为两步。
第一步:PolarQuant。通常,AI模型中的向量使用标准的XYZ坐标编码。PolarQuant将这些向量转换为极坐标系。在这个圆形网格中,向量被简化为两个信息:半径(核心数据强度)和方向(数据的含义)。
Google给出了一个生动的比喻:传统编码可能需要说”向东走3个街区,再向北走4个街区”,而极坐标编码则简化为”以37度角走5个街区”。后者占用的空间更少,而且省去了昂贵的归一化计算步骤。
第二步:QJL(Quantized Johnson-Lindenstrauss)。PolarQuant虽然高效,但会产生一些残余误差。QJL技术通过应用1位误差校正层来解决这些问题——将每个向量简化为单个比特(+1或-1),同时保留描述关系的关键向量数据。最终结果是更准确的注意力分数(attention score),这是神经网络决定哪些数据重要的核心过程。
实测效果如何?
Google在Gemma和Mistral开源模型上进行了长上下文基准测试。结果显示,TurboQuant在所有测试中都取得了完美的下游结果,同时将Key-Value缓存的内存使用减少了6倍。
更令人印象深刻的是,该算法可以将缓存量化到仅3位,而无需对现有模型进行额外训练。在Nvidia H100加速器上,使用4位TurboQuant计算注意力分数的速度比32位未量化快8倍。
对行业的影响
如果TurboQuant得到广泛应用,AI模型的运行成本将大幅降低,内存需求也会显著减少。这对于计算资源有限的环境尤为重要。
一个值得关注的应用场景是移动端AI。智能手机的硬件限制一直制约着本地AI的能力。像TurboQuant这样的压缩技术,可以让手机在不上传数据到云端的情况下,运行更复杂的模型,从而提升输出质量,同时保护用户隐私。
当然,科技公司也可能选择将节省下来的内存用于运行更复杂的模型,而非降低成本。最终可能是两者的结合。
写在最后
TurboQuant代表了AI模型优化领域的重要进展。在AI计算需求不断增长的今天,如何在保证性能的同时降低资源消耗,是整个行业面临的核心挑战之一。Google的这项技术向我们展示了,通过巧妙的算法设计,鱼和熊掌或许可以兼得。
对于开发者和企业来说,这意味着更低的运营成本和更广泛的部署可能性。对于普通用户来说,这预示着未来我们可能会在手机上运行更强大的AI,而无需依赖云端服务。技术的进步,正在让AI变得更加普及和高效。
发表回复