Ecco: Improving Memory Bandwidth and Capacity for LLMs via Entropy-aware Cache Compression
- 文章标题:Ecco:通过熵感知缓存压缩提升大语言模型的内存带宽与容量
- 作者:Feng Cheng, Cong Guo, Chiyue Wei, Junyao Zhang, Changchun Zhou, Edward Hanson, Jiaqi Zhang, Xiaoxiao Liu, Hai “Helen” Li, Yiran Chen
- 机构:Duke University, Advanced Micro Devices, Inc.
A1 主要贡献
大型语言模型(LLMs)在人工智能应用中展现了变革性能力,但其巨大的内存和计算需求,尤其是在资源受限的环境下,阻碍了其部署。量化技术作为一种关键解决方案,通过降低数据精度来提高内存和计算效率,但现有方法常伴随着高运行时开销和潜在的精度下降。
核心问题:
LLM推理过程,特别是解码阶段,是内存受限的。这主要源于两个方面:1)自回归特性需要维护和更新大量的中间状态信息(KV缓存),对内存容量要求极高;2)解码器-唯一的架构导致了小批量通用矩阵乘法(GEMM)操作,计算资源利用率低下,形成了新的“内存墙”。因此,LLM的性能瓶颈往往是内存带宽和容量,而非计算能力。现有的模型压缩方法虽然能缓解这些问题,但往往会引入高昂的运行时开销或牺牲模型精度。
研究目标:
为了解决上述挑战,本文提出了一种名为Ecco的基于熵的缓存压缩技术,专为LLM设计。目标是通过一种新颖的、高效的、对模型精度影响小的压缩/解压机制,在硬件层面解决内存带宽和容量瓶颈,从而提升LLM的推理性能和效率。
创新点与主要贡献:
1. 提出一种新的压缩范式Ecco:该方法结合了分组非均匀量化与霍夫曼编码,利用LLM缓存数据中的熵特性,显著提升内存效率。具体来说,它使用预定义的共享k-means模式和霍夫曼编码来有效提取和利用LLM缓存数据的内在熵特征。
2. 设计了一种并行的基于霍夫曼的解码流程:为了克服传统霍夫曼编码的并行性和延迟限制,设计了一种带有多级流水线的并行解码器。该设计将延迟降低了两个数量级,并实现了与GPU L2缓存相当的吞吐量。
3. 开发了高效的编码器:设计了与解码器能力相匹配的高效编码器,能够无缝集成到现有缓存架构中,并支持运行时编码和解码,以实现动态缓存数据管理。
4. 全面的评估与显著的性能提升:通过综合评估证明,Ecco相比于当前最先进的量化框架AWQ【42,AWQ: Activation-aware Weight Quantization for On-Device LLM Compression and Acceleration,MLSys 2024】取得了高达2.9倍的加速,相比于量化加速器Olive【21,OliVe: Accelerating Large Language Models via Hardware-friendly Outlier-Victim Pair Quantization,ISCA 2023】取得了2.4倍的加速,同时将内存容量增加了近4倍,并保持了业界领先的LLM准确率。
A3 背景知识/关键Observation/设计原则
2.1 LLM推理
LLM推理的内存瓶颈。大型语言模型(LLMs)采用Transformer架构【64,Attention Is All You Need,arXiv 2023】,其核心是多头注意力机制和前馈网络(FFN)。推理过程分为prefill(预填充)和decode(解码)两个阶段。解码阶段由于批量大小(batch size)通常较小【41,Large Language Model Inference Acceleration: A Comprehensive Hardware Perspective,arXiv 2025;56,Splitwise: Efficient generative LLM inference using phase splitting,arXiv 2024;70,LLM Inference Unveiled: Survey and Roofline Model Insights,arXiv 2024】,导致GEMM操作的计算资源利用率低,使其成为内存受限(memory-bound)的过程。此外,自回归的特性使得批量GEMM操作退化为批量通用矩阵向量乘法(GEMV),其算术强度极低。随着上下文长度增加,KV缓存线性增长,进一步加剧了内存容量需求和带宽瓶颈。因此,压缩技术可以通过减小模型权重和KV缓存的大小来有效缓解内存限制,从而提高推理速度。结论1:压缩技术可以缓解LLM解码过程中的带宽和容量需求。
2.2 压缩与信息熵
通过提升比特效率进行模型压缩。量化是一种基础的模型压缩技术,它将连续值映射到离散级别。量化的粒度(如张量级、通道级、组级)显著影响压缩率和模型性能。如图2所示,更细粒度的量化(从张量级到组级)会导致每组内有更多唯一的量化值,这意味着量化编码被更有效地利用,捕获更多信息,信息损失更少。为了量化不同方法的有效性,本文使用信息熵 $H = - \sum p_i \log_2 p_i$ 来衡量,其中 $p_i$ 是第 $i$ 个量化值出现的概率。更高的熵通常与更好的模型性能相关。然而,细粒度量化会引入额外的元数据开销(如缩放因子)。为了权衡这一点,定义了比特效率 $\eta = H / B_{real}$,其中 $B_{real}$ 是包含量化数据和元数据的实际比特开销。提升比特效率可通过两种方式:增加熵 $H$ 或减少实际比特开销 $B_{real}$。霍夫曼编码等技术通过为高频值分配更短的编码来最小化比特开销。然而,硬件实现中由于数据对齐等限制,霍夫曼编码的优势可能无法完全发挥。为缓解此问题,可以通过填充比特流(如元数据和离群值)来增加熵,而无需显著增加额外成本。如图2所示,本文提出的方法相比于AWQ【42,AWQ: Activation-aware Weight Quantization for On-Device LLM Compression and Acceleration,MLSys 2024】等现有方法,实现了更高的熵和更低的比特开销,从而提升了比特效率。结论2:压缩的主要目标是提高比特效率;增强信息熵可以改善模型性能,而减少实际比特开销可以降低存储需求。
2.3 运行时解压/压缩开销
复杂压缩方案的运行时开销。为了在压缩神经网络中获得优越的模型性能,通常采用复杂的压缩方案来增加信息熵。例如,Quarot【3,QuaRot: Outlier-Free 4-Bit Inference in Rotated LLMs,arXiv 2024】通过旋转模型和抑制离群值来最大化量化码的利用率,从而在保持模型精度的同时增强信息熵。然而,如图3-b所示,Quarot在运行时的解码过程涉及解压权重、激活值和KV缓存,以及使用计算密集的Hadamard变换和缩放因子来压缩KV缓存。这些步骤由于逐元素乘法和需要从内存加载额外的元数据而引入了显著的计算和内存开销。如图3-a所示,在一个4-bit压缩的LLaMA2-7B模型上测试,其解码过程比原始FP16模型慢约0.6倍。运行时的压缩和解压开销超过了节省的内存带宽,甚至将瓶颈从内存转移到了计算资源。因此,虽然像Quarot这样的方法有效减少了模型权重的存储容量,但并不一定能带来推理加速。结论3:复杂的压缩方案可以提高模型准确性,但可能引入显著的运行时压缩和解压开销;因此,压缩器和解压器的效率对于实现实际加速至关重要。
2.4 缓存压缩
面向LLM的专用缓存压缩技术。缓存压缩旨在减少内存带宽和容量需求,而不会带来显著的性能损失。早期的工作如BDI压缩【57,Base-delta-immediate compression: practical data compression for on-chip caches,PACT 2012】通过基值+小增量的形式压缩数据。近期的研究如Buddy Compression【8,Buddy Compression: Enabling Larger Memory for Deep Learning and HPC Workloads on GPUs,arXiv 2019】则利用了GPU内外存的异构性。然而,这些通用的无损压缩方案压缩率低,不适用于需要高压缩率来管理巨大KV缓存和模型权重的LLM场景。一些研究尝试使用基于图像的技术(如JPEG-ACT【11,JPEG-ACT: accelerating deep learning via transform-based lossy compression,ISCA 2020】)来压缩激活值,但由于其块状特性和计算复杂性,不适合缓存行压缩。考虑到LLM的特殊需求,高压缩率的有损压缩方案是可接受的,前提是能保持可接受的模型精度。配备定制化、高吞吐量压缩器和解压器的缓存压缩技术,可以灵活地进行即时压缩和解压,引入最小的计算开销。通过将这些压缩器集成到内存层次结构中,可以最小化额外的内存事务并减少延迟。此外,这种方法可以将不规则的数据加载(数据和元数据分离)转换为规则的、连续的数据块加载,从而提高缓存利用率和性能。结论4:具有高效、定制化压缩器和解压器的专用缓存压缩技术对于LLM实现高压缩率和最小开销至关重要,能有效缓解内存带宽和容量瓶颈。
3.1 压缩目标
设定固定的压缩块大小。为了平衡压缩效率、解压开销和模型性能,本文选择了一个固定的压缩块大小。该大小应大于最小内存事务单元(32字节,即一个扇区),以避免过高的解压开销或因组级信息过多导致的性能下降。同时,它也不应超过一个缓存行大小(128字节),以避免降低内存加载的灵活性和掩盖组级数据特征。考虑到DRAM到L2缓存的默认事务大小为64字节【47,GTC 2020,NVIDIA 2020】,本文选择64字节作为压缩块大小。这个选择能最小化硬件开销,最大化带宽利用,并与现有GPU缓存层次结构无缝集成。
设定2的幂次压缩率。为了便于硬件对齐和高效实现,本文将目标压缩率设定为2的幂次。通常2x或4x的压缩率能在数据压缩效果和模型性能保留之间取得最佳平衡。对于权重和KV缓存,目标是4x的压缩率(平均每个数据点4比特,每组128个数据点),利用了权重在推理期间的静态特性和KV缓存对微小误差的不敏感性。对于激活值,采用更保守的2x压缩率(平均每个数据点8比特,每组64个数据点),以适应其动态范围。这种针对不同LLM组件特性的定制化压缩率,优化了内存效率和模型保真度。
A2 方法细节
3.2 模型压缩
压缩要求。为了实现上一节设定的缓存压缩目标,所有组级信息都必须被压缩到一个固定大小的块中。这对于维持高效的内存事务和避免在关键数据路径上产生额外的计算开销至关重要。为此,压缩方案遵循以下原则:1)所有组级数据(量化值、元数据如离群值和缩放因子)必须存储在目标压缩粒度内,以消除额外的内存事务。2)在张量或通道级别上跨多个压缩块共享元数据,以最大化效率。3)解压过程设计为即时(on-the-fly)进行,压缩块中的所有数据被同时处理,避免了额外的计算核心。
权重压缩。现有的均匀量化方法如AWQ【42,AWQ: Activation-aware Weight Quantization for On-Device LLM Compression and Acceleration,MLSys 2024】在组大小为128时,存储一个FP16缩放因子和一个FP16零点,共32比特开销。在4比特量化场景下,这会挤占8个原始数据点(32比特/4比特)的空间,导致6.25%的权重损失,严重影响模型性能。非均匀的k-means量化(如SqueezeLLM【37,SqueezeLLM: Dense-and-Sparse Quantization,arXiv 2024】)性能更优,但其每组存储k-means质心的开销巨大,通常需要采用“密集+稀疏”的混合计算核来处理正常值和离群值,这会降低吞吐量和增加延迟。此外,在压缩块内存储位置和数值信息不定的离群值也极具挑战。
Ecco权重压缩流程。本文提出一种新颖的压缩方法,结合了使用预定义共享k-means模式的分组非均匀量化与裁剪/填充的霍夫曼编码。该方法旨在融合整数均匀量化和k-means非均匀量化的优点,同时避免额外的内存事务或计算操作。如图4所示,压缩过程如下:
1. 分组:将张量划分为每组128个数据元素的 $N_{g128}$ 个组。
2. 两级归一化:首先,使用一个张量级的FP16到FP8缩放因子对每个组内的绝对最大值进行归一化,得到一个FP8的组缩放因子。然后,使用该组缩放因子将组内所有值归一化到(-1, 1)范围内。
3. k-means模式提取:在每个组中,对除绝对最大值外的其余127个值执行激活感知的k-means聚类(15个簇),并将排序后的质心存储为该组的k-means模式。
4. 共享k-means模式生成:对所有组的k-means模式再次进行k-means聚类($K$个簇),生成$K$个共享的k-means模式,其中$K \ll N_{g128}$。
5. 量化:对于每个组,选择一个能最小化输出均方误差(MSE)的共享k-means模式。将组内数据四舍五入到该模式中最近的质心值,并记录所选共享模式的索引以及数据的质心索引。组缩放因子(即绝对最大值)被赋予索引15。这样每组共有16个唯一索引。
6. 霍夫曼码本聚类:对于每个共享k-means模式,对其量化后得到的索引频率分布进行k-means聚类($M$个簇),得到$M$个代表性的频率分布。
7. 霍夫曼码本生成:将这$M$个频率分布转换为$M$个霍夫MAN码本。
8. 霍夫曼编码:每个量化组选择一个能提供最佳压缩率的霍夫曼码本进行编码。
9. 裁剪与填充:压缩后,每个组包含一个定长的缩放因子、一个定长的霍夫曼码本选择、一个变长的共享k-means模式索引和变长的霍夫曼编码数据(如图6a所示)。如果压缩数据超过块大小,则裁剪多余部分;如果小于块大小,则用离群值(从次大绝对值开始)进行填充,直到填满块。每个填充值占15比特(7比特位置,8比特FP8值)。
设计空间探索。为了优化压缩方法,本文使用LLaMA2-7B模型进行了设计空间探索,以确定共享k-means模式数量($K$)和每个模式的霍夫曼码本数量($M$)的最优值。如图5所示,增加$K$通常会改善困惑度(perplexity),但在$K=64$之后收益递减。$M$的影响较小,在$M=4$之后几乎没有改善。基于此,选择$K=64$和$M=4$作为最优配置,该配置在性能提升和实现效率之间取得了平衡,并且其困惑度优于AWQ基线。
KV缓存压缩。KV缓存的压缩方法与权重压缩类似,但为适应其动态性做了一些调整。离线步骤(1,2,3,4,6,7)与权重压缩相同,但最终步骤(8,9)在线执行。一个关键区别在于共享k-means模式的选择(步骤5)。由于KV缓存压缩必须在运行时在线进行,计算MSE来寻找最优模式会带来无法接受的计算开销。本文分析发现,由于每个组的k-means模式都通过绝对最大值(absmax)进行缩放,使得k-means模式高度倾斜(如图7所示)。利用这一特性,提出了一种简化方法:仅比较每个组的最小值和最大值(不包括absmax)与每个k-means模式的最大值和最小值。这种方法将硬件复杂度从$O(S)$次比较降低到仅2次,其中$S$是模式数量。虽然这可能略微降低压缩效率,但它提供了更可预测的压缩率和对模式分布变化的更强适应性。实验证明,这种简化方法只导致了极小的困惑度下降,是硬件实现复杂性与模型性能之间的绝佳权衡。
激活值压缩。由于激活值范围的动态性更强,本文为其设定了平均每值8比特的目标压缩率。考虑到激活值通常在当前核心完成后立即被下一个核心消耗,采用了简单的整数均匀量化方案以追求效率。如图6-b所示,压缩块格式中,为了将所有元数据(缩放因子和零点)都放入压缩块内,分配了7比特用于压缩数据宽度,每8比特中的剩余1比特用于存储一个16比特的零点和一个16比特的缩放因子。
4.1 Ecco架构概述
架构集成。Ecco旨在通过先进的压缩技术提升内存系统性能,尤其关注GPU架构。如图1所示,Ecco将压缩和解压机制无缝集成到内存层次结构中。系统支持2x和4x两种压缩率,由高吞吐量、低延迟的并行解压器和压缩器组成。解压器位于L1数据缓存和L2缓存之间,确保从高层内存取回的压缩数据在被流式多处理器(SM)使用前得到有效解压。压缩器位于L2缓存和高带宽内存(HBM)之间,靠近L2缓存。这种高层架构与现代NVIDIA GPU(如Compute Data Compression【48,A100 Compute Data Compression,NVIDIA 2024】)的设计一致,使得集成非常方便。通过即时压缩和解压,该系统显著降低了内存带宽需求,并优化了DRAM和L2缓存的容量利用率。
软硬件协同控制。Ecco的使用涉及软件和硬件控制。用户在内存分配前,必须通过CUmemAllocationProp
显式声明压缩相关属性(如是否压缩、压缩率)。为了支持这一点,页表(page table)和转译后备缓冲器(TLB)增加了额外的比特:一个比特指示页面是否被压缩,另一个比特标识压缩率。这不会带来额外开销,因为NVIDIA GPU的页表项(PTE)中有未使用的比特。所有显式声明为可压缩的内存分配在HBM中都以压缩格式存储。加载时,数据以压缩形式从HBM取到L2缓存;L2内存控制器随后将数据块导向解压器,解压后送往SM。写入时,未压缩的数据暂时以原始格式存储,一旦构建一个压缩块所需的所有未压缩数据都可用,L2控制器立即将其导向压缩器进行压缩。
4.2 解压器设计
高压缩率(4x)解压器。如图8所示,高压缩率(4x)解压器为实现低延迟和高吞吐量进行了优化。
1. 元数据预加载:在压缩加载操作之前,所有张量级的元数据(共享k-means模式、霍夫曼码本、FP16-to-FP8缩放因子)被加载到解压模块的缓冲区中,仅加载一次。
2. 模式与码本检索:解压开始时,每组的缩放因子、霍夫曼编码的共享k-means模式选择(patt_idx
)和霍夫曼码本选择(book_idx
)被送入模式检索器。检索出对应的k-means模式和霍夫曼码本,同时FP8组缩放因子被转换回FP16。
3. 并行霍夫曼解码:为了解决霍夫曼解码的顺序性问题,设计了一个新颖的并行霍夫曼解码器。它包含64个并行工作的霍夫曼解码器,处理重叠的数据序列段。每个解码器处理其组内的8比特数据,确保至少解码一个数据点,并附加一个7比特的重叠区来确定下一段的正确起始位置。每个解码器内部有8个子解码器,从不同起始位置(0到7)并行处理同一个15比特数据块,将霍夫曼码转换为索引。
4. 结果聚合:解码结果通过一个六级树状结构的数据连接器进行合并。在每一级,左解码器的输出利用其偏移指示器(offset
)来决定与右解码器的哪个输出进行组合。六级合并后,只剩下一个最终的解码序列。同时,连接器还生成一个掩码,指示填充的离群值数量。
5. 数据映射:最后,解码序列和填充的离群值被映射为实际的质心值。128个并行的映射器将解码出的索引和离群值转换为它们对应的真实质心。离群值地址与前一阶段生成的掩码结合,作为一个选择器,决定某个位置应该使用来自k-means模式的值还是缩放后的离群值,从而精确重构原始数据。
低压缩率(2x)解压器。2x解压器采用直接高效的方法。它首先提取并组合存储在512比特压缩块中每8比特插入的缩放因子和零点。同时,对7比特的量化值进行符号位扩展,将其扩展到8比特。该过程利用了【38,Who Says Elephants Can’t Run: Bringing Large Scale MoE Models into Cloud Scale Production,arXiv 2022】中提出的高效位操作技术,仅需两次操作即可完成解压,实现了压缩率和解压速度的平衡。
4.3 压缩器设计
高压缩率(4x)压缩器。如图9所示,高压缩率(4x)压缩器处理256字节(128个FP16数据点)的块。
1. 排序与提取:一个双调排序器(bitonic sorter)提取出缩放因子、前16个最大值及其索引(用于离群值填充),以及组的最小值/最大值。
2. 模式选择:模式选择器评估输入数据与一组共享k-means模式(从64个减少到16个以降低开销)的拟合度。它通过计算组的最小/最大值与每个模式的最小/最大值之间的平方差总和来得到拟合分数,选择误差最小的模式,并记录其索引patt_idx
。
3. 并行编码:压缩过程使用四个编码器,每个对应一个霍夫曼码本。在每个编码器内,并行的值映射器通过计算输入值与所选k-means模式中质心的差值,将每个值分配给差值最小的质心,从而确定其索引。然后,这些索引被霍夫曼编码并连接起来。
4. 最优选择与裁剪:计算每个编码器生成的编码序列长度,选择最短的一个,并记录其霍夫曼码本索引book_idx
。最终的压缩输出由最优的编码序列、16个离群值以及索引patt_idx
和book_idx
连接而成。如果最终比特流超过目标压缩块大小,则进行裁剪。
低压缩率(2x)压缩器。低压缩率压缩器复用了高压缩率压缩器的部分硬件组件以优化资源。它共享了双调排序器来识别缩放因子和零点,并利用相同的乘法和四舍五入电路将FP16数据转换为量化表示。压缩的最后阶段包含一个精细的位交织过程,将量化值与缩放因子和零点结合,这种设计旨在促进解码时快速的反量化。
A4 实验环境
- 模型:
- LLaMA (7B, 13B, 30B, 65B)
- LLaMA-2 (7B, 13B, 70B)
- Mistral 7B
- LLaMA-3.1-8B-Instruct
- 数据集:
- 校准集:Pile 数据集的一个小子集。
- 困惑度评估:WikiText-2,序列长度为2048。
- 零样本准确率评估:Commonsense任务,包括 PIQA (PQ), ARC, HellaSwag (HS), WinoGrande (WG),使用lm_eval框架。
- 硬件配置:
- GPU:NVIDIA A100 用于准确率评估和性能关联。
- 硬件综合:使用ARM标准单元库,在商用28nm工艺下进行综合,并缩放到与NVIDIA A100芯片匹配的7nm工艺。
- 软件配置:
- 框架与库:HuggingFace, PyTorch, CUDA 11.8, cuBLAS, CUTLASS。
- 模拟器:修改并扩展了 Accel-Sim 和 GPGPU-Sim 4.0。
- Trace提取:使用 NVBit version 1.7.1。
- 基线方法来源:除FP16、Olive和Ecco外,所有量化技术均直接来自QServe论文【43,QServe: W4A8KV4 Quantization and System Co-design for Efficient LLM Serving,arXiv 2024】。
A4 实验结果
准确率评估
- 困惑度分析 (Perplexity):如表1所示,在W4A16配置下,Ecco在除LLaMA-7B外的所有模型上均优于基线,平均困惑度仅比FP16基线高0.10。在更具挑战性的W4A8KV4配置下,Ecco在所有LLaMA和LLaMA2模型上均优于包括Quarot在内的所有基线,展现出在激进量化下保持模型质量的强大能力。
表1:在WikiText-2上,序列长度为2048时,不同配置下模型的困惑度比较。 - 零样本准确率分析:如表2所示,在五个常识推理任务上,Ecco在除ARC-c外的所有情况下均优于其他4-bit量化方法。特别是在Winogrande任务上,Ecco的准确率超过所有基线2%以上。
表2:五个常识任务的零样本准确率。 - 填充/裁剪率分析:如图10所示,在LLaMA2-13B上,投影层的裁剪率低于0.04%,而填充率约为0.7%,表明几乎所有离群值都被保留。K-cache和V-cache的填充率分别为7.11%和2.19%,证明了基于霍夫曼编码的压缩方法在有限空间内最大化信息保留的有效性。
图10:各层的平均填充和裁剪率。
硬件开销评估
- 面积与功耗:如表3所示,经过20次复制以匹配L2缓存峰值吞吐量后,Ecco的硬件设计在A100 GPU上总面积为5.11 mm²(占芯片面积<1%),总功耗为7.36 W(占A100空闲功耗<10%)。解压器流水线延迟为28个时钟周期,压缩器为62个周期。结果表明硬件开销极小,易于集成。
表3:Ecco在A100上的面积和功耗。
性能评估
- 加速比分析:
- 随批量大小变化(图11a):在LLaMA-13B上,Ecco在所有批量大小下均优于基线,相比于TensorRT FP16,平均加速2.9倍;相比AWQ、Olive和SmoothQuant,最高加速分别达到2.9倍、2.4倍和1.8倍。
- 随序列长度变化(图11b):在LLaMA-13B上,随着序列长度增加,Ecco的加速比持续提升,相比AWQ、Olive和SmoothQuant最高分别达到2.1倍、2.3倍和1.9倍。
- 跨不同模型(图11c):在多种模型上,Ecco均实现超过2倍的加速。平均而言,相比FP16、Olive、SmoothQuant和AWQ,分别实现了2.5倍、2.2倍、1.5倍和2.1倍的加速。
图11:归一化延迟比较。(a) 批量大小变化;(b) 序列长度变化;(c) 不同模型。
- 内存分析:
- 内存消耗(图12):在LLaMA-7B上,Ecco相比FP16基线减少了3.98倍的内存消耗,接近4倍。相比SmoothQuant和Quarot,内存使用分别减少1.99倍和1.06倍。这意味着在多GPU部署时,可节省高达75%的GPU使用量,并带来高达12.8倍的能效提升。
- 内存请求(图13):对于一个GEMM核心,Ecco相比FP16基线减少了3.56倍的内存流量,相比SmoothQuant和AWQ分别减少了1.98倍和1.28倍的内存请求数,显示出其优于融合反量化和矩阵乘法核心的性能。
图12:LLaMA-7B上的GPU内存消耗。
图13:LLaMA-13B中一个GEMM核心的归一化内存请求(M=16, K=5120, N=13824)。
- 敏感性分析(图14):分析表明,当解压器吞吐量接近L2缓存带宽时,性能下降很小。但当吞吐量降至L2峰值的一半以下时,系统性能会显著下降。同时,解压器延迟的增加会平稳地导致性能下降。这强调了设计与缓存层次结构性能匹配的解压器的重要性。
图14:敏感性分析:扫描解压器吞吐量和延迟。
推广性讨论
- Ecco的方法不仅适用于GPU,也可以无缝集成到其他平台,如CPU和AI加速器(如Google TPU),因为这些平台在处理LLM时也面临内存瓶颈。
- 该方法在微调模型LLaMA-3.1-Instruct-8B上也表现出色(如表4),并理论上可应用于所有机器学习工作负载中的矩阵乘法操作,甚至可以推广到高性能计算(HPC)领域。
表4:LLaMA-3.1-8B-Instruct的零样本准确率。
A5 结论
本文提出了一种针对LLM的基于熵的缓存压缩方法Ecco,该方法结合了分组非均匀量化和优化的霍夫曼编码,有效利用缓存熵进行高效的压缩和解压。通过设计的并行霍夫曼解码流程和运行时优化的编码器,Ecco显著降低了延迟,提高了吞吐量,并能无缝集成到传统缓存架构中。实验结果表明,Ecco相比于AWQ实现了高达2.9倍的加速,内存容量扩大了近4倍,同时保持了业界领先的模型准确率。这些成果展示了基于熵的缓存压缩在克服LLM内存瓶颈方面的变革性潜力。这项工作通过一个可扩展、高效的解决方案解决了现有方法的局限性,增强了LLM在不同平台上的可访问性,并为将此类技术扩展到其他内存密集型AI应用奠定了基础。
💬 评论讨论
欢迎在这里分享您的想法和见解!