高效的大模型量化感知训练方案,单卡完成70B模型QAT

493ba602574ce3c1f1e02918c461c608.gif

©PaperWeekly 原创 · 作者 | 陈锰钊

单位 | 香港大学,上海人工智能实验室

研究方向 | 大模型压缩与加速

本文介绍一种新型量化量化方式,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)。

132dbe82bd563f3459c2960d908b69fb.png

▲ 图1. 方法性能总览

相关资源如下:

a968e0a75989772bd89609532d7279dd.png

论文标题:

EfficientQAT: Efficient Quantization-Aware Training for Large Language Models

文章链接:

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),所以我们选择的是 AutoGPTQ 的官方 bug 修订版 GPTQModel 进行 repack。

8dcb26f5ca2ce31c26e4df37bf1496c0.png

背景

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

14745039a1be83f0d2538319b65ca285.png

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

如图 1 所示,一个操作的计算时间可以分为两大块的和,分别是数据处理时间以及计算执行时间。为了更好的理解计算瓶颈是在数据搬运还是在计算执行上,我们引入一个经典的 roofline 性能分析模型。

如图 2 所示,x 轴是计算密度,即每秒计算次数和每秒数据搬运次数的比值;y 轴即每秒可以完成的计算次数(Operation Per Seconds, OPS)。从图 2 我们可以看出,当计算密度低时,操作就是内存密集型 (memory-bound),通过减少数据搬运开销,增大计算密度,可以显著增加 OPS,实现推理加速的目的。

d046211721b8496f4dab6607835a396a.png

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

值得注意的是,LLMs 的推理可以分为两个阶段,Prefilling 阶段和 Decoding 阶段。我们主要关注占据大部分时间的 Decoding 阶段,此时 LLMs 执行的是逐 token 的自回归推理。

计算每个 token 所需要的计算量低,但是却需要搬运整个模型的权重,导致计算密度低,即模型属于 memory-bound。因此,一种直接的加速手段,也即本文的研究对象,就是 weight-only quantization:通过降低 weight 的 bit 数,以同时实现推理时的显存减少和推理速度提升。

8e91636c470957bd4306775e23991987.png

方法

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

d72adb8b47443bca370bc18ec43fafac.png

▲ 图3 QAT示例图

如图 3 所示,QAT 需要同时端到端的训练整个网络的所有权重以及量化参数,导致内存开销大,以及对数据质量的要求高。

近期的工作 BitNet b1.58 [4] 证明了 3 值 QAT 也能达到和 FP 模型类似的精度。但是,由于 QAT 的巨大训练开销,导致 BitNet b1.58 也仅在 3B 模型以及 100B 训练 tokens 上进行了验证。总的来说,QAT 是提升量化模型的有效手段,但巨大的训练开销阻碍了其应用。

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

da7d47903d547f5306e6f10633279f9d.png

▲ 图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。

baf0752a8a76b40f922c832512ebc420.png

实验结果

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

8222a8094bccfdf29ca313a9da0fe4f1.png

▲ 表1 zero-shot tasks 性能对比

e400b9f147e8196689ad1cc41b3368a5.png

▲ 表2 Perplexity 性能对比

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

acdd08b6514288755f19e7e942496f31.png

▲ 表3 和 QAT 方法的对比

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

afa6b14a3f25bba0dcc0ca3d1bb12868.png

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

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

28d64a75f1caa33f27911fc1380ccdab.png

▲ 表5 训练开销

ce019efd43a267910f18b44463a59602.png

▲ 表6 推理加速

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

ee0d9358054ac272905efcdb0ec08015.png

总结

在本研究中,我们引入了 EfficientQAT,它在内存使用和训练时间上均提高了量化感知训练(QAT)的效率。

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

outside_default.png

参考文献

outside_default.png

[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

更多阅读

76bc64f805c9ce3ac74a768268768da3.png

9032f1640e5ba3f8e2a0e53ca4753285.png

8674315a472f2fd7f61d85531307a173.png

097fb264623dfc1c0bb5d2e6212490b9.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

827ba66009d23e2699e13411315faeb8.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

97c6769568bb4f5efc7fe924c227f2cb.jpeg

校园失物招领微信小程序源码, 失物招领小程序主要为解决大学生时常丢失物品而且很难找回以及归还过程繁琐不方便的问题, 与传统的失物招领方式不同,该款校园失误招领小程序拥有快捷发布寻物启事和失误找领功能, 快速查找、极速归还、高效沟通、防误领冒领等功能, 在开发校园失物招领小程序前与用户访谈发现有近40的同学校园内频繁丢失物品、证件、校园卡等, 数码产品、日用品等,丢失区域主要发生在教学楼、图书馆和食堂。 拾领校园失物招领小程序继承了寻物启事和失物招领,丢失物品或拾取物品都可发布帖子, 首页的横幅滚动公告展示通知公告等,banner图片化的方式更具有视觉吸引力, 最新信息可显示最近发布的招领信息或寻物信息,更加方便快捷的展示信息, 用户可通过首页的发布按钮发布帖子,发布者只需填写物品的相关信息,类别、地点等相关信息, 并且可以填写手机号开启认领验证,并可以一键生成二维码分享或分享至群聊和朋友圈。 列表内可以筛选物品类别或精确搜索,物品详情里可展示物品的相关信息, 确认是自己的物品后可点击认领,然后验证信息,需填写物品的关键信息以作辨认, 防止冒领误领,物品详情页可生成二维码海报分享,还有即时的消息联系功能以提高沟通效率, 发布者还可选择放置在代收处,双方还可以通过拨打电话紧急联系,用于紧急情况,让失物找到主人, 个人中心可以管理发布的物品帖子,管理个人信息,包括昵称、默认学校、手机号的修改、 编辑发布的物品帖子、获取帮助等。帮助用户流畅的使用该小程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值