大模型推理加速技术的学习路线是什么?

科技   2024-11-22 13:01   广东  
作者丨ChenMnZ@知乎
来源丨https://www.zhihu.com/question/591646269/answer/3569924276
编辑丨极市平台

简介

此文章介绍一种新型量化量化方式,EfficientQAT。大语言模型的4-bit量化相对来说已经较为成熟,掉点少。近期,众多工作聚焦于推进2-bit量化。考虑到均匀(INT)量化的显著性能损失,近期领域内主要关注vector量化,例如用于2-bit精确量化的 AQLM [1] 和 QUIP# [2]。但他们[1,2]或是引入额外不可忽略的计算开销,或是数据格式难以实现实际加速,给部署带来了诸多挑战。

在EfficentQAT中,我们致力于突破INT量化的局限性。如下图1所示,我们在保持INT量化容易落地部署的特性下,成功地使INT量化达到与vector量化相当的性能。特别是,EfficientQAT 可以在 41 小时内在单个 A100-80GB GPU 上完成对 2-bit Llama-2-70B 模型的量化感知训练。与全精度模型相比,精度仅下降了不到 3%(69.48 vs. 72.41)。值得注意的是,该 INT2 量化的70B 模型比 Llama-2-13B 模型获得了 1.67 的精度增益(69.48 vs. 67.81),同时需要更少的内存(19.2GB vs. 24.2GB)。

图1 方法性能总览

相关资源如下:

  • 文章https://arxiv.org/abs/2407.11062
  • 代码https://github.com/OpenGVLab/EfficientQAT

同时,我们也在huggingface上提供了量化后的模型,以及将量化模型repack成更多不同的格式,例如GPTQ格式以及BitBLAS格式:

  • EfficientQAT量化后的模型: https://huggingface.co/collections/ChenMnZ/efficientqat-6685279958b83aeb6bcfc679
  • 转化为GPTQ格式https://huggingface.co/collections/ChenMnZ/efficientqatgptq-format-669e050e0060107f091edc95
  • 转化为BitBLAS格式: https://huggingface.co/collections/ChenMnZ/efficientqat-bitblas-format-669e0559fe9496b3c6fca59c

注意,由于原本的AutoGPTQ对asymmetric quantization存在一个数据溢出的bug (详见 Lin Zhang:分析AutoGPTQ中存在的一个Bug(https://zhuanlan.zhihu.com/p/680047456),所以我们选择的是AutoGPTQ的官方bug修订版 GPTQModel(https://github.com/ModelCloud/GPTQModel) 进行repack。

背景

为了更好得理解量化操作是如何加速大语言模型(Large Language Models, LLMs)的,我们首先介绍模型推理过程中的计算瓶颈。

图1 一个操作(如矩阵乘法等)在硬件上的执行过程[3]。

如图1所示,一个操作的计算时间可以分为两大块的和,分别是数据处理时间以及计算执行时间。为了更好的理解计算瓶颈是在数据搬运还是在计算执行上,我们引入一个经典的roofline性能分析模型。如图2所示,x轴是计算密度,即每秒计算次数和每秒数据搬运次数的比值;y轴即每秒可以完成的计算次数 (Operation Per Seconds, OPS)。从图2我们可以看出,当计算密度低时,操作就是内存密集型 (memory-bound), 通过减少数据搬运开销,增大计算密度,可以显著增加OPS,实现推理加速的目的。

图2 Roofline模型。以NVIDIA A6000上的FP16计算为例[3]。

值得注意的是,LLMs的推理可以分为两个阶段,Prefilling阶段和Decoding阶段。我们主要关注占据大部分时间的Decoding阶段,此时LLMs执行的是逐token的自回归推理。计算每个token所需要的计算量低,但是却需要搬运整个模型的权重,导致计算密度低,即模型属于memory-bound。因此,一种直接的加速手段,也即本文的研究对象,就是weight-only quantization:通过降低weight的bit数,以同时实现推理时的显存减少和推理速度提升。

方法

如前文所述,INT2 量化会带来显著的性能损失。一种可能的解决方案是Quantization-Aware Training (QAT):

图3 QAT示例图

如图3所示,QAT需要同时端到端的训练整个网络的所有权重以及量化参数,导致内存开销大,以及对数据质量的要求高。近期的工作BitNet b1.58 [4]证明了3值QAT也能达到和FP模型类似的精度。但是,由于QAT的巨大训练开销,导致BitNet b1.58也仅在3B模型以及100B训练tokens上进行了验证。总的来说,QAT是提升量化模型的有效手段,但巨大的训练开销阻碍了其应用。

为了解决QAT的高训练开销问题,我们提出平替版,EfficientQAT:

图4 EfficientQAT 示例图

如图4所示,EfficientQAT的主要思路有两点:

  1. 将整体的End-to-End Training解耦成同时包含Block-wise Training 和 End-to-End Training的两阶段训练方式。
  2. 将weight的更新限制在Block-wise Training阶段。

具体而言,引入Block-wise Training的思路主要follow此前的工作BRECQ [5] 和OmniQuant [4], 旨在通过此细粒度的Block-wise MSE重建监督降低对数据量的需求。同时,我们发现,在Block-wise Training阶段,简单的直接优化权重和相关量化参数即可获得最优性能。无需像此前的PTQ方法一样设计rounding parameters [6,7] 或者clipping parameters [4]以约束解空间防过拟合。由于此Block-wise Training 阶段所有参数被同时训练,我们将其称为:Block-wise Training with All Parameters (Block-AP)。

进一步的,我们希望对网络进行端到端训练以实现进一步降低量化损失的能力,以及实现支持模型adapt到任意数据集的能力。基于此,我们提出End-to-End Training with Quantization Parameters (E2E-QP)。我们首先对Block-AP量化后的低bit模型进行pack,使得其可以用更少的内存读取,降低训练内存开销。其次,我们发现,在小数据的End-to-End training上,单独训练量化参数 step size (s), zero point (z) 或者两者同时训都能达到类似的性能,但是训练z需要将其从低bit的表现形式转化回fp16,引入了额外的存储开销。基于此,在E2E-QP阶段,我们选择只训练量化参数s。

实验结果

训练数据 Block-AP阶段采用来自RedPajama数据集的4096个长度为2048的片段,E2E-QP阶段采用来自RedPajama数据集的4096个长度为4096的片段。

表1 zero-shot tasks 性能对比
表2 Perplexity 性能对比

如表1和表2所示,EfficientQAT 在低bit 场景相较于此前的uniform量化方案性能优势明显,同时产生于vector量化方案comparable的结果。需要注意的是,表中加粗并不表示最优,因为大多数情况下,性能最优方案是vector量化,但需要注意的是他们是以难以部署为代价,如此前的图1所示。同时,值得注意的是,Llama-3的量化难度或者量化敏感性显著高于Llama-2,和此前的文献[3]观察类似。

表3 和QAT方法的对比

表3给出了EfficientQAT和此前的一些LLM QAT方案的对比。

表4 和量化高效参数微调方法的对比

通过修改E2E-QP阶段的数据集,EfficientQAT也可以实现和此前Q-LoRA [9]系列工作, 即量化版parameter-efficient fine-tuning。但值得注意的是EfficientQAT不需要引入额外的LoRA模块,其本身训练的量化参数即可视为Adapter。如表4所示,可以发现EfficientQAT显著优于此前的方案,我们将性能优势其归因为Block-AP阶段量化的初始化。

表5 训练开销
表6 推理加速

表5和表6分别呈现了EfficientQAT的量化开销以及推理加速。更多实验以及分析可以参见原文。

总结

在本研究中,我们引入了EfficientQAT,它在内存使用和训练时间上均提高了量化感知训练(QAT)的效率。经过全面测试,EfficientQAT在多样性和性能方面超越了现有的后训练量化(PTQ)、量化感知训练(QAT)以及量化参数高效微调(Q-PEFT)方法,适用于不同模型和量化级别。此外,EfficientQAT利用标准均匀量化,这简化了使用现有工具箱进行部署的过程。

Reference

[1] Extreme Compression of Large Language Models via Additive Quantization

[2] QuIP#: Even Better LLM Quantization with Hadamard Incoherence and Lattice Codebooks

[3] LLM Inference Unveiled: Survey and Roofline Model Insights

[4] The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits

[4] OmniQuant: Omnidirectionally Calibrated Quantization for Large Language Models

[5] BRECQ: Pushing the Limit of Post-Training Quantization by Block Reconstruction

[6] Up or down? adaptive rounding for post-training quantization.

[7] Optimize weight rounding via signed gradient descent for the quantization of llms

[8] How Good Are Low-bit Quantized LLAMA3 Models? An Empirical Study

[9] QLORA: Efficient Finetuning of Quantized LLMs

推荐阅读




欢迎大家加入DLer-计算机视觉技术交流群!


大家好,群里会第一时间发布计算机视觉方向的前沿论文解读和交流分享,主要方向有:图像分类、Transformer、目标检测、目标跟踪、点云与语义分割、GAN、超分辨率、人脸检测与识别、动作行为与时空运动、模型压缩和量化剪枝、迁移学习、人体姿态估计等内容。


进群请备注:研究方向+学校/公司+昵称(如图像分类+上交+小明)

👆 长按识别,邀请您进群!

深度学习技术前沿
本公众号专注于深度学习领域的前沿技术分享和学术交流。推送有关于机器学习、深度学习、强化学习、计算机视觉、自然语言处理等领域干货文章,致力于在第一时间内汇集和发布最新人工智能技术和前沿资讯。
 最新文章