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

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


图|张天一(来源:https://github.com/tonyzhang617)

研究中,他们针对包括 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 配置的机器上进行了实验。


(来源:arXiv)

研究团队针对所有线性投影层都进行了压缩处理,将其参数格式从 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 版本,它们在准确率和困惑度上保持一致。


(来源:arXiv)

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

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

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

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

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

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


图|不同模型、GPU 和批量大小情况下的结果(来源:arXiv)

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

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

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

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

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


(来源:arXiv)

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

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

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


(来源:arXiv)

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

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

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

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

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

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


(来源:arXiv)

实验结果显示,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

运营/排版:何晨龙

ad1 webp
ad2 webp
ad1 webp
ad2 webp