百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

研究人员提出AI模型无损压缩框架,压缩率达70%

ccwgpt 2025-05-07 23:32 26 浏览 0 评论

大模型被压缩 30% 性能仍与原模型一致,既能兼容 GPU 推理、又能减少内存和 GPU 开销、并且比英伟达 nvCOMP 解压缩快 15 倍。


这便是美国莱斯大学博士生张天一和合作者打造的无损压缩框架 DFloat11 所拥有的“本领”。




研究中,他们针对包括 Llama-3.1、Qwen-2.5 和 Gemma-3 在内的最新模型进行了实验,借此证明 DFloat11 在保持逐位精确输出的同时,可以将模型大小减少约 30%。


与那些将未压缩模型的部分卸载到 CPU 以便满足内存限制的替代方案相比,DFloat11 在 token 生成方面的吞吐量提高了 1.9 倍至 38.8 倍。


在 GPU 内存预算固定的情况下,DFloat11 的上下文长度比未压缩模型长出 5.3 倍至 13.17 倍。


这让本次方法能在配备 8 个 80GB GPU 的单个节点上,实现 810GB Llama-3.1-405B 模型的无损推理。


这表明,基于 DFloat11 的压缩技术显著降低了大语言模型的硬件需求,同时在大多数实际用例中仅引入了合理的处理开销。


这意味着,本次方案能将任何 BFloat16 模型压缩至其原始大小的约 70%,在提供与原始模型 100% 相同的性能的同时,还能带来诸多吞吐量优势,非常适用于 GPU 资源受限的部署环境。目前,研究人员已将相关代码和模型放在 GitHub(
https://github.com/LeanModels/DFloat11)。



DFloat11 解压内核的三个核心组件


据了解,为了在 GPU 上实现基于熵编码权重的有效推理,研究团队引入了 DFloat 这种新型数据表示方法,并打造出一个 GPU 内核,该内核旨在以大规模并行的方式针对 DFloat11 权重进行快速的在线解压缩。


DFloat11 解压内核由三个核心组件组成:


利用存储在 GPU 共享内存中的紧凑查找表(LUT,lookup tables)针对熵编码权重进行高效解码。用于解码 32 位霍夫曼码的单个单片查找表,大约需要 42.9 亿个条目,这使得其内存占用过高。为了缓解这一问题,研究团队将其分解为多个可放入 GPU 共享内存中的紧凑查找表,以便实现快速的访问。


精确高效地识别编码权重中的“读取”位置,以及解码权重中的“写入”位置。由于经过熵编码的权重具有可变位宽、且紧密排列的特性,因此为每个线程确定正确的读取/写入偏移量颇具挑战。为此,研究团队通过两阶段内核设计方案来解决这一问题,即使用最少的辅助变量,来高效协调线程特定的输入和输出位置。


通过批量执行矩阵解压缩的方法,来提高 GPU 资源利用率。由于单个权重矩阵的尺寸相对较小,对其进行单独解压缩会导致 GPU 利用率低下。为了解决这一问题,研究团队在 Transformer 块级别针对权重进行解压缩,不仅提高了吞吐量还降低了推理延迟。


研究人员表示,DFloat 是目前唯一一种既能减少内存占用,又能与高效 GPU 推理兼容的数据格式。


通过应用熵编码,DFloat11 可以将频率视为权重,从而分配动态长度编码,借此实现接近信息最优的压缩,并且不会损失任何精度。



基于多款主流大模型开展实验验证


研究中,课题组以实证方式评估了 DFloat11 压缩的有效性及其在 GPU 上的推理效率。


他们将多款最新大语言模型从其原始的 BFloat16 表示形式压缩为 DFloat 格式,并展示了相应的压缩因子。


然后,将运行在不同 GPU 上的 DFloat11 压缩模型的推理性能,与未压缩模型的推理性能进行比较。


同时,他们进行了一项消融研究,以便分析压缩的影响。


研究团队在 CUDA 和 C++ 中实现了 DFloat11 解压内核,并将其集成到 Transformers 推理框架中,进而评估了无损压缩模型与未压缩模型在推理效率上的对比结果。


对于未压缩的基线模型,其使用 Hugging Face Accelerate 框架来支持 CPU 卸载和多 GPU 推理。


为了评估 DFloat11 内核在不同硬件配置下的性能,研究团队在多台配备不同 GPU 和 CPU 配置的机器上进行了实验。




研究团队针对所有线性投影层都进行了压缩处理,将其参数格式从 BF16 转换为 DFloat11。


所压缩的模型包括 LLaMA 3/3.1/3.3、Qwen 2.5、QwQ、Mistral Nemo/Small/Codestral、Gemma 2/3 以及 DeepSeek R1 Distilled。


结果发现,DFloat11 在所有模型中实现了约 70% 的压缩率,相当于有效位宽约为 11 位。


通过在标准基准测试上进行准确率评估和困惑度评估,研究团队验证了 DFloat11 压缩的无损特性。


其使用 lm_evaluation_harness 工具完成了本次评估,并展示了在大规模多任务语言理解基准(MMLU)和 TruthfulQA 上的准确率,以及在维基文本(WikiText)和 C4 数据集上的词级困惑度。


结果如下表所示,压缩后的模型与其原始的 BF16 版本,它们在准确率和困惑度上保持一致。





为了进一步验证无损特性,研究团队将 DFloat11 解压缩后的 BF16 权重矩阵与每个模型的原始矩阵进行了比较,确认了它们在比特级上的完全等效性。


具体来说,其比较了 DFloat11 和 BF16 模型在不同硬件平台上的推理效率。


评估结果显示,未压缩的 BF16 模型超出了单个 GPU 的内存限制,而无损压缩的 DFloat11 模型则符合这些限制。


对于 BF16 模型,研究团队保留了 GPU 中的大部分模型和计算,同时将一些组件及其相关计算卸载到 CPU 上。


为了测量延迟和吞吐量,他们首先通过处理100 个 token 来进行预热运行。


在实际评估中,研究团队从空提示(empty prompt)开始解码了 100 个 token,并使用了不同的批大小(patch size),每种配置分别运行五次。




如上图所示,在 CPU 卸载的情况下,DFloat11 模型的表现始终优于 BF16 模型,其延迟降低了 1.85 至 38.83 倍。


为了比较使用多个 GPU 的情况,研究人员还展示了在单个 GPU 上运行的 DFloat11 模型与在两个 GPU 上运行的 BF16 模型的性能对比。


结果显示,DFloat11 压缩所带来的内存节省,不仅减少了推理所需的 GPU 数量,还能实现更长的文本生成长度。


在推理过程中,随着解码 token 数量的增加,键值缓存也会出现线性增长,进而会迅速成为 GPU 内存的瓶颈。


如下图,研究团队展示了在批大小为 1 的情况下,随着解码 token 数量的增加,DFloat11 和 BF16 模型在推理过程中的 GPU 内存消耗情况。





与 BF16 模型相比,DFloat11 压缩显著延长了 token 生成长度,使得在达到 GPU 内存限制之前,将可解码的 token 数量增加了 5.33 至 13.17 倍。


与此同时,研究团队在单个英伟达 A100-40GB GPU 上,使用不同的 token 批大小,比较了 BF16 和 DFloat11 格式下 Llama-3.1-8B-Instruct 的延迟分解。


对于每种配置,他们都在 10 次运行中测量前向传递过程中每个组件的延迟,并在下图中报告了平均值。




与原始模型相比,由于 Transformer 块的解压和语言建模头(Language Modeling Head)的存在,DFloat11 压缩版本引入了额外的延迟。


这种解压操作会增加一个固定的开销,但是这一开销与 token 批大小无关。


因此,增加批大小可以分摊解压成本,从而显著缩小整体推理时间的差距。


研究中,课题组还使用不同大小的权重矩阵,将 DFloat11 解压缩内核的延迟和吞吐量与两个基线进行对比:分别是 CPU 到 GPU 的传输,以及来自英伟达 nvCOMP 库的非对称数字系统(ANS,Asymmetric Numeral System)解压缩。


这样做是为了对比评估以下两种针对内存受限推理的策略:第一种策略是将权重矩阵卸载到 CPU 内存中,并在需要时将其传输到 GPU;第二种策略是将压缩后的矩阵存储在 GPU 上,并在需要时进行解压缩。


实验中,研究团队使用 Llama-3.1-8B-Instruct 语言建模头的权重矩阵,并将其分割成不同的大小,实验结果如下图所示。



实验结果显示,DFloat11 解压缩的效率明显高于两条基线,其吞吐量比 CPU 到 GPU 的传输高出 24.87 倍,不仅延迟更低,而且比英伟达 nvCOMP 解压缩快 15.12 倍。


总的来说,研究人员提出的 DFloat11 能将大语言模型的 BFloat16 权重无损压缩至约 11 位。通过利用 BFloat16 表示的信息冗余,研究团队在保持输出逐位相同的同时,实现了大约 30% 的模型尺寸缩减。


其还引入了新的算法设计,从而能使 DFloat11 压缩模型实现高效的 GPU 推理。通过精心地利用 GPU 内存和计算层次结构,研究团队开发了硬件感知算法,借此实现了 DFloat11 压缩模型的高效在线推理。


针对主流大语言模型和大型推理模型的实验结果表明,本次方法在不改变输出的情况下,始终能实现约 30% 的压缩率。对于当前比较缺少高端 GPU 的国内研发环境来说,这一成果或能为大家带来一定启发。


参考资料:

https://openreview.net/profile?id=~Tianyi_Zhang6

https://github.com/tonyzhang617

https://arxiv.org/pdf/2504.11651


运营/排版:何晨龙

相关推荐

一个基于.Net Core遵循Clean Architecture原则开源架构

今天给大家推荐一个遵循CleanArchitecture原则开源架构。项目简介这是基于Asp.netCore6开发的,遵循CleanArchitecture原则,可以高效、快速地构建基于Ra...

AI写代码翻车无数次,我发现只要提前做好这3步,bug立减80%

写十万行全是bug之后终于找到方法了开发"提示词管理助手"新版本那会儿,我差点被bug整崩溃。刚开始两周,全靠AI改代码架构,结果十万行程序漏洞百出。本来以为AI说没问题就稳了,结果...

OneCode低代码平台的事件驱动设计:架构解析与实践

引言:低代码平台的事件驱动范式在现代软件开发中,事件驱动架构(EDA)已成为构建灵活、松耦合系统的核心范式。OneCode低代码平台通过创新性的注解驱动设计,将事件驱动理念深度融入平台架构,实现了业务...

国内大厂AI插件评测:根据UI图生成Vue前端代码

在IDEA中安装大厂的AI插件,打开ruoyi增强项目:yudao-ui-admin-vue31.CodeBuddy插件登录腾讯的CodeBuddy后,大模型选择deepseek-v3,输入提示语:...

AI+低代码技术揭秘(二):核心架构

本文档介绍了为VTJ低代码平台提供支持的基本架构组件,包括Engine编排层、Provider服务系统、数据模型和代码生成管道。有关UI组件库和widget系统的信息,请参阅UI...

GitDiagram用AI把代码库变成可视化架构图

这是一个名为gitdiagram的开源工具,可将GitHub仓库实时转换为交互式架构图,帮助开发者快速理解代码结构。核心功能一键可视化:替换GitHubURL中的"hub...

30天自制操作系统:第六天:代码架构整理与中断处理

1.拆开bootpack.c文件。根据设计模式将对应的功能封装成独立的文件。2.初始化pic:pic(可编程中断控制器):在设计上,cpu单独只能处理一个中断。而pic是将8个中断信号集合成一个中断...

AI写代码越帮越忙?2025年研究揭露惊人真相

近年来,AI工具如雨后春笋般涌现,许多人开始幻想程序员的未来就是“对着AI说几句话”,就能轻松写出完美的代码。然而,2025年的一项最新研究却颠覆了这一期待,揭示了一个令人意外的结果。研究邀请了16位...

一键理解开源项目:两个自动生成GitHub代码架构图与说明书工具

一、GitDiagram可以一键生成github代码仓库的架构图如果想要可视化github开源项目:https://github.com/luler/reflex_ai_fast,也可以直接把域名替换...

5分钟掌握 c# 网络通讯架构及代码示例

以下是C#网络通讯架构的核心要点及代码示例,按协议类型分类整理:一、TCP协议(可靠连接)1.同步通信//服务器端usingSystem.Net.Sockets;usingTcpListene...

从复杂到优雅:用建造者和责任链重塑代码架构

引用设计模式是软件开发中的重要工具,它为解决常见问题提供了标准化的解决方案,提高了代码的可维护性和可扩展性,提升了开发效率,促进了团队协作,提高了软件质量,并帮助开发者更好地适应需求变化。通过学习和应...

低代码开发当道,我还需要学习LangChain这些框架吗?| IT杂谈

专注LLM深度应用,关注我不迷路前两天有位兄弟问了个问题:当然我很能理解这位朋友的担忧:期望效率最大化,时间用在刀刃上,“不要重新发明轮子”嘛。铺天盖地的AI信息轰炸与概念炒作,很容易让人浮躁与迷茫。...

框架设计并不是简单粗暴地写代码,而是要先弄清逻辑

3.框架设计3.框架设计本节我们要开发一个UI框架,底层以白鹭引擎为例。框架设计的第一步并不是直接撸代码,而是先想清楚设计思想,抽象。一个一个的UI窗口是独立的吗?不是的,...

大佬用 Avalonia 框架开发的 C# 代码 IDE

AvalonStudioAvalonStudio是一个开源的跨平台的开发编辑器(IDE),AvalonStudio的目标是成为一个功能齐全,并且可以让开发者快速使用的IDE,提高开发的生产力。A...

轻量级框架Lagent 仅需20行代码即可构建自己的智能代理

站长之家(ChinaZ.com)8月30日消息:Lagent是一个专注于基于LLM模型的代理开发的轻量级框架。它的设计旨在简化和提高这种模型下代理的开发效率。LLM模型是一种强大的工具,可以...

取消回复欢迎 发表评论: