加州伯克利推KVQuant量化技术,LLM内存占用砍到骨折

程序员咋不秃头 2024-08-21 02:15:39

加州伯克利大学的 AI 大佬们又搞事情了!这次他们祭出了一个名为 KVQuant 的大杀器,专治LLM内存焦虑症!

paper:https://arxiv.org/pdf/2401.18079

分析表明,对于较小的批处理规模,LLM推理过程的主要瓶颈在于内存带宽。随着计算速度和内存速度之间的差距不断扩大,这个问题只会越来越严重。而对于长序列长度,内存瓶颈主要来自于缓存键(Key)和值(Value)激活的内存需求。为了实现高效的长序列长度推理,压缩键值缓存至关重要

为了让LLM能处理更长、更复杂的任务,比如长篇小说总结、代码分析什么的,上下文窗口长度必须得加大!可是,内存不够怎么办?

别慌!加州伯克利出品,必属精品!KVQuant 就是一种专门针对LLM键值缓存(Key-Value Cache)的量化方法。它采用了几个超级厉害的技术,把内存占用量直接砍到骨折,同时还能保证模型精度几乎没有损失!

KVQuant的秘密武器:

Per-Channel Key Quantization: 这个技术专门对付那些喜欢搞事情的异常值通道,让它们乖乖听话,别再影响其他通道的量化效果。

Pre-RoPE Key Quantization: RoPE(旋转位置编码)这玩意儿虽然厉害,但会把不同通道的值混在一起,给量化增加难度。这个技术巧妙地绕过了RoPE,让量化变得更轻松。

nuqX:灵敏度加权的非均匀量化: 这个技术更灵活,更精准,利用校准数据离线推导出每层的非均匀数据类型,并根据每个通道或每个token进行缩放,以准确表示Key和Value分布,让量化标度点放置恰到好处,就像一位经验丰富的调酒师,精准调配出最完美的鸡尾酒!

Per-Vector Dense-and-Sparse Quantization: 这个技术针对每个向量单独使用不同的异常值阈值,而不是对每一层使用单一的异常值阈值,从而更有效地识别和压缩异常值,并用稀疏表示存储它们,就像把房间里的杂物整理到收纳盒里,让空间变得更整洁,也更有效率!

KVQuant的优势:

精度高到离谱: 在Wikitext-2和C4数据集上,用3比特量化,所有LLM(LLaMA, Llama-2, Llama-3, and Mistral)模型的困惑度(Perplexity:预测能力,准确率)下降都小于0.1,优于现有的方法!

速度快到飞起: KVQuant的自定义CUDA内核让LLaMA-7B模型的矩阵向量乘法速度提升了1.7倍,简直是飞一般的感觉!⚡️

省内存省到极致: KVQuant直接把键值缓存压缩了4.8倍,让LLaMA-7B模型在单张A100-80GB GPU上就能跑100万长度的上下文,8张GPU甚至能跑1000万!

此外,研究人员还进行了一些额外的分析和实验:

长上下文长度评估: 使用LLaMA-2-7B-32K模型和Llama-2-70B-32K LongLoRA模型,评估了KVQuant在更长上下文长度下的性能。结果表明,即使在更长的上下文长度下,KVQuant也能保持较高的精度和检索性能。

联合权重和KV缓存量化: 将KVQuant与现有的权重量化方法结合使用,发现即使权重也被量化到较低精度,KVQuant仍然能够保持较低的困惑度下降,证明了KVQuant与现有的权重量化方法的兼容性。

性能分析和内存节省: 通过对KVQuant的内核进行基准测试,发现它能够在不同的序列长度下实现比基线fp16矩阵向量乘法更快的速度。

0 阅读:0