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

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

ccwgpt 2025-05-07 23:32 6 浏览 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


运营/排版:何晨龙

相关推荐

Python Scrapy 项目实战(python scripy)

爬虫编写流程首先明确Python爬虫代码编写的流程:先直接打开网页,找到你想要的数据,就是走一遍流程。比如这个项目我要爬取历史某一天所有比赛的赔率数据、每场比赛的比赛结果等。那么我就先打开这个网址...

为何大厂后端开发更青睐 Python 而非 Java 进行爬虫开发?

在互联网大厂的后端开发领域,爬虫技术广泛应用于数据收集、竞品分析、内容监测等诸多场景。然而,一个有趣的现象是,相较于Java,Python成为了爬虫开发的首选语言。这背后究竟隐藏着怎样的原因呢?让...

爬虫小知识,scrapy爬虫框架中爬虫名词的含义

在上一篇文章当中学记给大家展示了Scrapy爬虫框架在爬取之前的框架文件该如何设置。在上一篇文章当中,是直接以代码的形式进行描述的,在这篇文章当中学记会解释一下上一篇文章当中爬虫代码当中的一些名词...

python爬虫神器--Scrapy(python爬虫详细教程)

什么是爬虫,爬虫能用来做什么?文章中给你答案。*_*今天我们就开发一个简单的项目,来爬取一下itcast.cn中c/c++教师的职位以及名称等信息。网站链接:http://www.itcast.cn...

Gradio:从UI库到强大AI框架的蜕变

Gradio,这个曾经被简单视为PythonUI库的工具,如今已华丽转身,成为AI应用开发的强大框架。它不仅能让开发者用极少的代码构建交互式界面,更通过一系列独特功能,彻底改变了机器学习应用的开发和...

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

大模型被压缩30%性能仍与原模型一致,既能兼容GPU推理、又能减少内存和GPU开销、并且比英伟达nvCOMP解压缩快15倍。这便是美国莱斯大学博士生张天一和合作者打造的无损压缩框架...

阿里发布Qwen-Agent框架,赋能开发者构建复杂AI智能体

IT之家1月4日消息,阿里通义千问Qwen推出全新AI框架Qwen-Agent,基于现有Qwen语言模型,支持智能体执行复杂任务,并提供多种高级功能,赋能开发者构建更强大的AI...

向量数仓与大数据平台:企业数据架构的新范式

在当前的大模型时代,企业数据架构正面临着前所未有的挑战和机遇。随着大模型的不断发布和多模态模型的发展,AIGC应用的繁荣和生态配套的逐渐完备,企业需要适应这种新的数据环境,以应对行业变革。一、大模型时...

干货!大数据管理平台规划设计方案PPT

近年来,随着IT技术与大数据、机器学习、算法方向的不断发展,越来越多的企业都意识到了数据存在的价值,将数据作为自身宝贵的资产进行管理,利用大数据和机器学习能力去挖掘、识别、利用数据资产。如果缺乏有效的...

阿里巴巴十亿级并发系统设计:实现高并发场景下的稳定性和高性能

阿里巴巴的十亿级并发系统设计是其在大规模高并发场景下(如双11、双12等)保持稳定运行的核心技术框架。以下是其关键设计要点及技术实现方案:一、高可用性设计多数据中心与容灾采用多数据中心部署,通过异地容...

阿里云云原生一体化数仓—数据治理新能力解读

一、数据治理中心产品简介阿里云DataWorks:一站式大数据开发与治理平台架构大图阿里云DataWorks定位于一站式的大数据开发和治理平台,从下图可以看出,DataWorks与MaxCom...

DeepSeek R1:理解 GRPO 和多阶段训练

人工智能在DeepSeekR1的发布后取得了显著进步,这是一个挑战OpenAI的o1的开源模型,在高级推理任务中表现出色。DeepSeekR1采用了创新的组相对策略优化(GroupR...

揭秘永久免费视频会议软件平台架构

如今视频会议已经成为各个团队线上协同的必备方式之一,视频会议软件的选择直接影响团队效率与成本,觅讯会议凭借永久免费迅速出圈,本文将从技术架构、核心功能和安全体系等维度,深度解析其技术实现与应用价值,为...

DeepSeek + Kimi = 五分钟打造优质 PPT

首先,在DeepSeek中输出提示词,示例如下:为课程《提示词基础-解锁AI沟通的秘密》设计一个PPT大纲,目的是让学生:1.理解提示词的概念、作用和重要性2.掌握构建有效提示词的基本原则和技巧...

软件系统如何设计可扩展架构?方法论,Java实战代码

软件系统如何设计可扩展架构?方法论,Java实战代码,请关注,点赞,收藏。方法论那先想想方法论部分。扩展性架构的关键点通常包括分层、模块化、微服务、水平扩展、异步处理、缓存、负载均衡、分布式架构等等...

取消回复欢迎 发表评论: