跳转到主要内容
博客社区

当量化不足时:为何 2:4 稀疏性很重要

要点速览

将 2:4 稀疏性与量化相结合,为压缩大型语言模型 (LLM) 以实现高效部署提供了一种强大的方法,可在准确性和硬件加速性能之间取得平衡,但 GPU 库和编程接口中增强的工具支持对于充分发挥其潜力至关重要。

LLM 压缩技术概述

尽管大型语言模型 (LLM) 在自然语言理解和生成方面取得了成功,但由于其庞大的参数数量,运行成本通常高得令人望而却步。这会导致巨大的内存开销和高昂的推理成本,尤其是在部署期间。为了解决这些挑战,模型压缩技术,例如量化和剪枝,应运而生,旨在降低推理成本,同时尽可能保持模型准确性,尽管与它们的密集对应物相比通常存在权衡。

量化:尽管高精度格式在训练期间至关重要,但 LLM 通常可以在推理期间使用更低的位宽保持其准确性。将 LLM 量化为 8 位整数或浮点数相对简单,最近的方法,如 GPTQAWQ,甚至在 4 位精度下也表现出令人满意的准确性。然而,低于 4 位的压缩仍然具有挑战性:像 AQLM 这样的方法在现代 GPU 上通常会出现推理速度变慢的情况,而像 QUIP# 这样的方法则依赖于复杂、自定义的预处理内核。这些限制表明,仅靠量化可能不足以实现激进的压缩,这促使我们需要探索互补技术,例如稀疏性。

非结构化稀疏性:当量化的好处开始趋于平稳时,稀疏性为压缩 LLM 提供了一条正交路径。非结构化稀疏性,其中非零元素可以出现在矩阵的任何位置,允许模型即使在剪枝了多达 50% 的权重后也能保持高精度。最近的方法,如 SparseGPTWanda,可以在性能损失最小的情况下实现这种剪枝。然而,尽管非结构化稀疏性具有压缩优势,但由于其不规则的内存访问模式,它在现代 GPU 上很难加速。大多数硬件优化方法,例如 FlashLLM,仅在极端稀疏级别(通常为 80% 或更多)下才能提供推理加速。准确性和硬件效率之间的这种差距促使我们使用半结构化稀疏性格式,如 2:4,它在性能和可部署性之间提供了更好的权衡。

半结构化稀疏性:由 NVIDIA 和 AMD GPU 支持的 2:4 稀疏性等半结构化稀疏性格式,通过与底层硬件对齐,在压缩和加速之间提供了有希望的平衡。虽然半结构化稀疏性对权重可以剪枝的位置施加了一些限制,但最近的方法,如 MaskLLM 使用可学习的掩码来恢复准确性,实现了与非结构化稀疏性相当的性能。此外,研究表明,稀疏矩阵乘法,特别是具有可预测模式(如零)的乘法,可以通过最小化晶体管开关来显著降低 GPU 功耗,从而提高推理期间的能源效率。这使得 2:4 稀疏性成为部署压缩 LLM 的实用替代方案,尤其是当它与其他技术(如量化)结合使用时。

预训练中的稀疏性:尽管本文侧重于降低推理成本,但值得注意的是,稀疏性也是一个强大的训练工具。预训练中的权重稀疏性已在先前的工作中进行了探索,例如 SLoPeFST,其中 PyTorch 团队最近的贡献 表明 2:4 权重稀疏性可以加速训练而不会损失模型质量。此外,Meta 最近的工作 表明激活稀疏性可以无损地恢复模型的准确性,同时加速 LLM 的训练和推理。这项工作强调稀疏性是整个模型生命周期的基本工具。在确定其在训练中的价值之后,我们现在将重点转向量化其对推理的影响,稀疏性与量化相结合为当今的部署挑战提供了强大的解决方案。

推理中的稀疏性与量化

为了凭经验比较独立量化与量化和稀疏性结合的有效性,我们对 LLaMA-2 7B 模型进行了实验。我们的目标是以等效的理论 8 倍压缩比评估这两种方法,特别比较 2 位量化与 4 位量化结合 50% 稀疏性(使用非结构化和 2:4 格式)。

我们的实验利用最先进的方法来表示每种策略。对于纯亚 4 位量化,我们选择了 AQLM 和 QUIP#。对于混合方法,我们使用 SparseGPT 进行非结构化稀疏性,使用 MaskLLM 进行硬件友好的 2:4 结构化格式,两者都结合了 4 位量化。最后,为了展示组合技术的强大功能,我们还在稀疏模型之上应用了 SLiM(一种零样本低秩适配器),以衡量进一步恢复准确性的潜力。

我们对 LLaMA-2-7B 的实验表明,尽管 4 位量化与 50% 稀疏性相结合和独立的 2 位量化都实现了等效的理论 8 倍压缩比,但前者在准确性方面始终优于后者。在稀疏方法中,2:4 结构化稀疏性,尤其是当通过 SLiM 等低秩适配器增强时,不仅保持了准确性,而且还利用了现代 GPU 上的硬件加速支持。这使得 2:4 稀疏性成为一个特别引人注目的选择,不仅适用于模型准确性,而且适用于使用现有 GPU 硬件的实际部署。

LLaMA-2-7B

量化 剪枝 位宽 稀疏性 压缩比 ArcC ArcE PiQA Wino 平均
密集 16 1.0 40.0 69.3 78.5 67.3 63.8
AQLM 2 0.18 33.6 62.8 73.5 64.6 58.6
QUIP# 2 0.18 34.6 64.6 75.1 64.9 59.8
GPTQ SparseGPT* 4 非结构化 0.18 35.3 68.1 74.2 67.7 61.3
AbsMax MaskLLM** 4 2:4 0.18 33.2 68.4 74.5 65.0 60.3
AbsMax MaskLLM + SLiM-LoRA (r=0.1) 4 2:4 0.22 38.0 70.9 77.2 70.6 64.2

* 最先进的非结构化稀疏性方法。

** 最先进的 2:4 稀疏性方法。

虽然低位量化提供了引人注目的压缩,但当应用于在更近期和复杂的模型上实现激进的压缩比时,其有效性可能会面临限制。例如,对于 LLaMA-3-8B,2 位 AQLM 量化方法在试图保持可接受的准确性时,仅实现了 0.25 倍的压缩比。(注意:QUIP# 没有可用的开源检查点进行直接比较。)相比之下,通过结合稀疏性、4 位量化和低秩近似,我们可以在相同的 LLaMA-3-8B 模型上以 相同 的 0.25 倍压缩比实现更高的准确性,如下表所示。这个引人注目的例子强调,在当代 LLM 中,仅仅依靠量化可能成为实现激进压缩和高准确性的限制因素。稀疏性与量化相结合的这一明显优势凸显了对强大的硬件和软件工具来有效部署此类压缩技术的关键需求,我们将在下一节中探讨。

LLaMA-3-8B

量化 剪枝 位宽 稀疏性 压缩比 ArcC ArcE PiQA Wino 平均
密集 16 1.0 50.4 80.1 79.7 72.6 70.7
AQLM 2 0.25 41.3 74.3 77.8 72.0 66.4
AbsMax MaskLLM + SLiM-LoRA (r=0.2) 4 2:4 0.25 42.9 75.2 77.8 71.2 66.8

模型加速的可用工具

现在有几个 GPU 库支持 2:4 稀疏性与高效矩阵乘法内核,简化了压缩模型的部署。值得注意的是,通过 cuSPARSELtCUTLASS 模板库,现在可以高效支持使用标准数据类型的 2:4 稀疏性。torchao 团队已将这些内核集成到 PyTorch 框架中,无需自定义 CUDA 或 C++ 扩展,从而简化了采用。

然而,尽管现有支持,这些库仍存在一些限制,尤其是在混合压缩的内核支持扩展方面。一个显著的挑战是它们目前缺乏对融合量化和去量化操作的支持,这对于最小化内存带宽使用和降低现代模型压缩管道中的延迟至关重要。当前的稀疏和量化推理方法通常需要将具有不同或不兼容数据类型的张量加载到共享内存中。然后,这些张量需要显式去量化并转换为通用格式,才能在张量核心上执行高效的矩阵乘法。此外,CUTLASS 和 cuSPARSELt 中关于 2:4 稀疏性元数据的全面文档稀缺,使得开发用于集成量化和稀疏性的自定义 CUDA 内核成为一项非常耗时和劳动密集型的工作。因此,2:4 稀疏性通常在大多数自定义量化内核中仍不受支持,从而阻碍用户充分利用在建模方面实现的准确性改进,并阻碍新型压缩技术的快速发展。

为了解决上述挑战,SGLang 和 vLLM 等外部库增加了自定义量化内核,例如 Sparse Marlin。这些内核独特地为量化方法添加了稀疏性支持,并且旨在与 PyTorch 框架无缝集成,旨在为用户提供更即插即用的稀疏量化推理体验。然而,这些解决方案具有很强的针对性,并未涵盖所有用例。它们通常仅支持有限的数据类型范围(例如 Sparse Marlin 中的 W4A16)和量化方案(例如一维组量化)。此外,它们在高度专业化的自定义 CUDA 代码中实现,这使得它们本质上难以扩展或适应新方法。更糟糕的是,与将此类内核转移到新一代硬件相关的大量维护开销意味着这些库通常滞后,仅支持旧架构;例如,Sparse Marlin 的高性能仍然仅限于 Ampere 架构。

此外,所有上述压缩方法都面临一个持续的挑战,即准备矩阵及其相关元数据所需的巨大预处理开销。这种巨大的预处理成本固有地将其效用主要限制在静态稀疏性和量化方法上,从而大大降低了它们在未来 LLM 至关重要的动态或自适应压缩场景中的适用性。为了应对这一特定挑战,PyTorch 团队积极开发了自定义内核,旨在显著降低 权重稀疏性激活稀疏性 的开销。然而,这些新内核中对量化的全面支持仍处于持续开发中,这突显了一个关键的持续进步领域。

结论

鉴于上述全面讨论,我们坚信 2:4 稀疏性与量化的协同组合在推动大型语言模型压缩的极限方面具有巨大潜力。然而,正如所示,现有工具和基础 GPU 编程接口的生态系统仍然是充分发挥这一潜力的主要限制因素。具体而言,许多常见的灵活 GPU 编码接口,例如 Triton 和 ThunderKittens,目前缺乏对 2:4 稀疏性的强大原生支持,并且它们与许多量化方法的集成仍然明显有限。因此,增强这些工具以原生支持 2:4 稀疏性和各种量化方法对于释放这一潜力并加速模型压缩领域的创新至关重要。