1 KIVI: A Tuning-Free Asymmetric 2bit Quantization for KV Cache
论文:arxiv.org/abs/2402.02…
github:github.com/jy-yuan/KIV…
被引次数:13
量化规格:KV Cache 2bit
量化思路: LLMs batch size和序列长度不断增大,KV Cache成为推理性能和内存的瓶颈。
论文分析KV cache数据分布后,提出Key per-channel、Value per-token的2bit KV cache量化方案,推理内存减小2.6倍。显存降低带来batch size 4倍增大,吞吐显著提升。
Attention计算的流程:
prefill 阶段
decode 阶段
t(shape[b,1,d])表示增量输入token embedding,更新kv Cache:
计算attention output: ,,表示K、Q、V权重。
关键问题:per-token量化能与自回归的流式特性很好对齐,per-channel量化无法直接实现(由于per-channel跨不同长度tokens)。 论文把key cache 分成量化和残差两部分,其中 可按每组G个tokens被切分。KIVI算法流程图如下:
分组量化,保持fp16全精度。decoding阶段,新生成的添加到,当达到超参R的长度,量化并Concate到,并且重置为空。
attention logits的计算:
weight-only量化(例如GPTQ、AWQ)与KIVI量化正交,可以叠加; KIVI与SmoothQuant对比,SmoothQuant压缩A8W8精度比较好,但压缩4bit精度劣化严重; KIVI量化方案给HF Transformers量化很大启发。
参考:
KV缓存量化解锁长文本生成
KV Cache量化技术,单卡100K大模型
2 Flexgen:High-throughput generative inference of large language models with a single gpu
论文:arxiv.org/abs/2303.06…
github:github.com/FMInference…
被引次数:200
量化规格:KV Cache 4-bit
量化思路: 论文提出使用压缩(压缩weight和kv Cache,稀疏Attention)+offloading,提升推理batch size,实现高吞吐推理。在吞吐优先的场景,增大batch size牺牲一点推理性能,缓冲昂贵的IO通信(计算通信掩盖),可以显著提升offloading效率。 Flexgen框架在T4单机推理OPT-175B吞吐率提升100倍。
offloading-based systems: Flexgen、DeepSpeed、Accelerate
offloading技术:为了能在有限的显存硬件执行LLM推理,可以把权重offload到二级memory,再部分加载完成part-by-part计算。
Group-wise Quantization
量化方式选型:由于目标是降低mem和IO,不是加速计算(激活量化做定点矩阵乘),选择细粒度group quantization(高压缩率)并且矩阵计算前反量化fp16,精度影响较小。
论文发现沿着output channel维度对权重分组,沿着hidden维度对kv cache分组,这种group方式精度损失较小而且runtime-efficient。
Sparse Attention
论文发现稀疏Attention(top 10% attention value cache,OPT-175B)能保持模型正确结果,提出一种简单的TOP-K稀疏方法。
3 KVQuant: Towards 10 Million Context Length LLM Inference with KV Cache Quantization
论文:arxiv.org/abs/2401.18…
github:github.com/SqueezeAILa…
被引次数:12
量化规格:KV Cache 2、3、4bit
量化思路:
在长序列场景,KV cache activations成为主要内存瓶颈,为了解决4bit以下kv cache量化精度问题,论文提出:
(1)Per-Channel Key Quantization
(2)Pre-RoPE Key Quantization,RoPE前量化key
(3)Non-Uniform KV Cache Quantization,非均匀 KV 缓存量化,选择每层敏感性加权的非均匀数据类型来更好地表示分布的技术
(4)Per-Vector Dense-and-Sparse Quantization,向量级的密集和稀疏量化,隔离一小部分数值异常值,例如1%异常值不量化,以全精度形式保存在另一个稀疏矩阵。可能会影响执行效率。
4 Squeezellm: Dense-and-sparse quantization
论文:arxiv.org/abs/2306.07…
github:github.com/SqueezeAILa…
被引次数:101
量化规格:非均匀量化 3bit
摘要:LLM自回归推理的bottleneck是memory、bandwidth,而非compute,在短序列输入下(short seq length),显存消耗主要是模型权重,压缩模型权重大小可显著缓解mem-bound问题。论文提出SqueezeLLM PTQ框架可以达到精度几乎无损3-bit量化,而且能获得更好的量化性能。主要创新点:
(i) sensitivity-based non-uniform quantization,基于敏感度非均匀量化。根据二阶信息,搜索最优的量化bit精度。
(ii) the Dense-and-Sparse decomposition, dense和sparse分解,把outliers和敏感权重values放在稀疏矩阵。
性能效果:LLama模型,3-bit量化perplexity相比fp16基线的gap,优化2.1x SOTA方法,推理性能相比fp16 2.3x提升。
Methodology:
(1) sensitivity-based non-uniform quantization
为什么选择非均匀量化?
原因:(a)模型权重非均匀分布;(b)均匀量化具有高效整数计算的优势(这里指均匀量化过程,不是指算子整数计算),但不会对LLM增量推理有性能收益。
搜索最优的非均匀量化配置参数问题可以转化为一个k-means问题,可以形式化表示为:
W是原始权重,是对应量化权重,最优解可以通过1维k-means聚类求得。这一步perplexity已经超过均匀量化。
Sensitivity-Based K-means Clustering
权重量化虽然是在每个layer引入扰动(perturbations)误差,但目标是最小化final loss的误差,并不关注个别layer误差。因此,k-means的质心(centroids)需要放置在敏感values(对final loss非常敏感的value)附近。论文推导出满足此目标的量化误差公式如下:
(1)
H可以简化为 (2)
简化后量化误差公式:
(3)
上述公式是加权k-means聚类,质心会被“拉”到敏感权重。
(2) Dense-and-Sparse decomposition
统计LLaMA-7B的权重参数,99.9%的参数分布在10%的数据范围内,因此按大范围量化权重,会明显降低量化性能(准确度)。因此对权重W使用“低秩分解”,outliers分解到Sparse matrix(S),剩余参数保留在Dense matrix(D):
, dense和sparse矩阵乘两个kernels可以并行。
Sensitivity-Based Sparse Matrix
除了outliers 分解到Sparse矩阵,还可以把sensitive weight matrix values(敏感权重值,可以通过Fisher information准确识别)分解到Sparse矩阵。 这样做不仅使敏感权重值保持fp16,避免对模型output产生影响,还会阻止质心偏向于敏感权重值。
实验证明3-bit LLaMa-7B,提取0.45% outliers和敏感值,perplexity优化7.67->7.56。
总结:论文关注短序列LLM模型自回归推理优化,分析自回归推理是memory-bound。使用创新方式量化模型权重参数,超越GPTQ、AWQ、SpQR等权重量化算法,达到SOTA性能水平。