模型压缩到70%,还能保持100%准确率,无损压缩框架DFloat11来了
仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
机器之心报道
编辑:陈萍、+0
大型语言模型(LLMs)在广泛的自然语言处理(NLP)任务中展现出了卓越的能力。然而,它们迅速增长的规模给高效部署和推理带来了巨大障碍,特别是在计算或内存资源有限的环境中。
例如,Llama-3.1-405B在BFloat16(16-bitBrainFloat)格式下拥有4050亿个参数,需要大约810GB的内存进行完整推理,超过了典型高端GPU服务器(例如,DGXA100/H100,配备8个80GBGPU)的能力。因此,部署该模型需要多个节点,这使得它昂贵且难以获取。
本文,来自莱斯大学等机构的研究者提出了一种解决方案,可以将任何BFloat16模型压缩到原始大小的70%,同时还能在任务上保持100%的准确性。
论文标题:70%Size,100%Accuracy:LosslessLLMCompressionforEfficientGPUInferenceviaDynamic-LengthFloat
论文地址:https ://arxiv.org/pdf/2504.11651
项目地址:https ://github.com/LeanModels/DFloat11
为了应对LLM不断增长的模型尺寸,通常会采用量化技术,将高精度权重转换为低位表示。这显著减少了内存占用和计算需求,有助于在资源受限的环境中实现更快的推理和部署。然而,量化本质上是一种有损压缩技术,引入了一个基本缺点:它不可避免地改变了LLMs的输出分布,从而影响模型的准确性和可靠性。
相比之下,无损压缩技术在有效减少LLM规模的同时,保留了精确的原始权重,确保模型的输出分布与未压缩表示(例如BFloat16)完全相同。然而,现有的无损方法主要集中在提高LLMs的存储效率上,例如缩小模型检查点或优化针对专用硬件如FPGA的性能上。
本文提出了DFloat11(Dynamic-LengthFloat),这是一种无损压缩框架,可以在保持与原始模型完全相同的输出的情况下,将LLM的规模减少30%。
DFloat11的提出源于当前LLM模型中BFloat16权重表示的低熵问题,这暴露出现有存储格式存在显著的低效性。通过应用熵编码技术,DFloat11根据权重出现频率为其分配动态长度编码,在不损失任何精度的情况下实现了接近信息理论极限的压缩效果。
为了支持动态长度编码的高效推理,该研究还开发了定制化的GPU内核来实现快速在线解压缩。其设计包含以下内容:
将内存密集型查找表(LUT)分解为适应GPUSRAM的紧凑型查找表;
采用双阶段内核设计,通过轻量级辅助变量协调线程读写位置;
实现Transformer块级解压缩以最小化延迟。
该研究在Llama-3.1、Qwen-2.5和Gemma-3等最新模型上进行了实验:DFloat11能在保持比特级(bit-for-bit)精确输出的同时,将模型体积缩减约30%。与将未压缩模型部分卸载到CPU以应对内存限制的潜在方案相比,DFloat11在token生成吞吐量上实现了1.9–38.8倍的提升。在固定GPU内存预算下,DFloat11支持的上下文长度是未压缩模型的5.3–13.17倍。
值得一提的是,基于该方法Llama-3.1-405B(810GB)在配备8×80GBGPU的单节点上实现了无损推理。
方法介绍
LLM的权重通常使用浮点数表示,包括BFloat16或BF16,其在数值精度和内存效率之间取得了平衡。然而,BFloat16表示信息并不高效。
针对BFloat16表示法中存在的信息效率低下问题,本文提出了一种无损压缩框架,通过熵编码技术对浮点参数进行压缩。
具体实现包括:基于语言模型线性投影矩阵中所有BFloat16权重的指数分布构建霍夫曼树,对指数部分采用霍夫曼编码压缩,同时保留原始符号位和尾数位。压缩后的指数经过紧密比特打包存入字节数组EncodedExponent,而未压缩的符号位和尾数则存储在独立字节数组PackedSignMantissa中。图2展示了DFloat11(Dynamic-LengthFloat)或DF11,该格式可实现模型参数的高效紧凑表示。
虽然动态长度浮点数能有效实现LLM的无损压缩,但关键挑战依然存在:如何利用这些压缩权重进行高效的GPU推理。接下来,文章详细介绍了解决方案,其中包括三个关键组成部分:
将一个庞大的无前缀查找表(LUT)分解为多个适合GPUSRAM的紧凑LUTs;
引入一个两阶段的内核设计,利用轻量级辅助变量来高效协调线程的读写操作;
在transformer块级别执行解压缩,以提高吞吐量并最小化延迟。
算法1是将DFloat11解压缩为BFloat16的GPU内核过程。
实验
研究人员评估了DF11压缩方法在GPU上的有效性及推理效率,将多个主流大语言模型(包括LLaMA、Qwen、Gemma等)从BFloat16压缩为DF11格式,并报告其压缩比和性能表现。
为全面分析DF11内核在不同硬件配置下的表现,团队在多种GPU和CPU组合的机器上进行实验。
实验结果
DF11压缩比:DF11将大语言模型压缩至原始大小的约70%(等效位宽为11位)。
表2展示了DF11在LLaMA、Qwen、Gemma等模型上的压缩效果。所有模型的线性投影层参数均被压缩为DF11格式,压缩比稳定在70%。
无损特性验证:为验证DF11的无损特性,研究人员使用lm-evaluation-harness工具在MMLU、TruthfulQA、WikiText和C4数据集上评估模型性能。
结果表明,压缩后的模型在准确率和困惑度(Perplexity)上与原始BFloat16模型一致(见表3)。此外,研究人员逐位对比DF11解压后的权重矩阵与原始矩阵,确认其完全相同。
推理性能:研究人员在多个硬件平台上比较了DF11与BFloat16模型的推理效率。对于BFloat16模型,当模型超出单GPU显存时,需将部分计算分流至CPU,而DF11模型可完全加载至单GPU。
评估指标包括延迟(Latency)和吞吐量(Throughput),结果显示DF11模型的性能显著优于BFloat16模型,延迟减少1.85至38.83倍(见图3)。
节省的显存可支持更长生成序列:DF11的显存节省使模型能够支持更长的生成序列。如图4所示,在batchsize为1时,DF11模型的显存消耗显著降低,相比BFloat16模型最多可生成5.33至13.17倍的tokens。
消融研究
延迟分析:研究团队以Llama-3.1-8B-Instruct为例,对比了其在BFloat16与DF11格式下不同batch大小时的延迟组成,结果如图5所示。
相比原始模型,DF11压缩模型因解压Transformer模块与语言建模头引入了额外延迟但该开销与batchsize无关,因此通过提升batchsize可有效摊销解压延迟,使总推理时间之间的差距显著缩小。
解压性能对比:研究人员将DF11解压内核的延迟与吞吐表现分别与两种基线方案进行对比:
将模型权重存储于CPU内存并在需要时传输到GPU;
使用NVIDIA的nvCOMP库中的ANS(不对称数值系统,AsymmetricNumeralSystem)解压方法。
实验以Llama-3.1-8B-Instruct语言建模头权重矩阵为例,结果如图6所示,DF11的解压吞吐量最高分别为CPU-GPU传输和ANS解码的24.87倍和15.12倍。此外,DF11的压缩比为70%,优于nvCOMP的78%。值得注意的是,随着权重矩阵规模的增大,DF11的解压吞吐呈上升趋势,原因是更好的GPU线程利用率。
©THEEND
转载请联系本公众号获得授权
投稿或寻求报道:liyazhou@jiqizhixin.com