简介
此文章介绍一种新型量化量化方式,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的主要思路有两点:
-
将整体的End-to-End Training解耦成同时包含Block-wise Training 和 End-to-End Training的两阶段训练方式。
-
将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利用标准均匀量化,这简化了使用现有工具箱进行部署的过程。
那么,如何系统的去学习大模型LLM?
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
篇幅有限,部分资料如下:
👉LLM大模型学习指南+路线汇总👈
💥大模型入门要点,扫盲必看!
💥既然要系统的学习大模型,那么学习路线是必不可少的,这份路线能帮助你快速梳理知识,形成自己的体系。
路线图很大就不一一展示了 (文末领取)
👉大模型入门实战训练👈
💥光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉国内企业大模型落地应用案例👈
💥两本《中国大模型落地应用案例集》 收录了近两年151个优秀的大模型落地应用案例,这些案例覆盖了金融、医疗、教育、交通、制造等众多领域,无论是对于大模型技术的研究者,还是对于希望了解大模型技术在实际业务中如何应用的业内人士,都具有很高的参考价值。 (文末领取)
👉GitHub海量高星开源项目👈
💥收集整理了海量的开源项目,地址、代码、文档等等全都下载共享给大家一起学习!
👉LLM大模型学习视频👈
💥观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。 (文末领取)
👉640份大模型行业报告(持续更新)👈
💥包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
👉获取方式:
这份完整版的大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
😝有需要的小伙伴,可以Vx扫描下方二维码免费领取🆓