
A Comprehensive Evaluation of Quantization Strategies for Large Language Models全面评估大型语言模型的量化策略论文阅读
A Comprehensive Evaluation of Quantization Strategies for Large Language Models全面评估大型语言模型的量化策略论文阅读——————大模型量化的一个小综述
最近想研究研究大模型的轻量化,所以先拿这篇文章来练练手。
先用gpt列一个大纲
1. 问题陈述
论文主要讨论了以下核心问题:
- 量化模型的性能差距:量化后的大语言模型(LLMs)通常不包含在标准评估基准中,导致无法全面比较量化模型与非量化模型的性能。
- 量化行为理解不足:随着LLMs参数规模的增加,量化对模型能力的影响更难理解,当前对量化后模型行为的理解尚不充分。
- 缺乏全面评估框架:目前缺少一个系统化的框架,能够从知识、对齐(alignment)和效率等多个维度对量化LLMs进行全面评估。
2. 挑战
论文中指出了量化LLMs评估中面临的主要挑战:
- LLMs的多功能性:由于LLMs的广泛应用,全面评估它们的各项能力变得困难。
- 可解释性问题:LLMs作为“黑箱”模型,量化后其内部行为难以解释。
- 资源受限:在计算和内存有限的设备上部署LLMs需要依赖量化技术,同时需要尽量减少精度损失。
- 基准测试的局限性:当前许多评估基准仅针对非量化模型,无法有效评估量化模型的表现。
3. 解决方案如何应对挑战
论文提出了一种结构化的评估框架,通过以下方式应对上述挑战:
- 全面评估:从知识与能力、对齐性和效率三个关键维度对量化模型进行系统分析。
- 使用标准基准:采用MMLU、C-EVAL、TruthfulQA等广泛接受的基准测试,确保量化与非量化模型的公平比较。
- 多种量化策略比较:对比多种量化方法(如LLM.int8、GPTQ、SpQR),揭示量化策略与性能之间的权衡。
4. 解决方案陈述
论文提出的解决方案包括以下三点:
- 评估框架:构建了一个包含知识与能力、对齐性、效率的三维评估框架。
- 量化策略对比:对多种量化技术(LLM.int8、GPTQ、SpQR)进行分析和比较,揭示其性能影响。
- 基准测试验证:利用多个标准化的公开数据集对量化模型进行全面测试和验证。
5. 系统模型
系统模型主要包括以下方面:
- 量化过程:将模型的权重和激活值转换为低精度表示(如8位、4位整数),而非原始的32位或16位浮点数。
- 性能指标:主要采用准确率(Accuracy)、BLEU(翻译评价)、**ROUGE(摘要生成评价)**等指标。
- 数学表示:在量化过程中,使用权重变换和误差逼近模型性能变化。
相关图示:图1(展示了包含知识、对齐、效率的评估框架)。
6. 记号表
符号 | 定义 |
---|---|
LLM | 大语言模型(Large Language Model) |
PTQ | 训练后量化(Post-Training Quantization) |
QAT | 量化感知训练(Quantization-Aware Training) |
INT8, INT4, INT3 | 整数精度格式(8位、4位、3位) |
MMLU | 大规模多任务语言理解(Massive Multitask Language Understanding) |
BLEU | 翻译模型的评估指标(Bilingual Evaluation Understudy) |
ROUGE | 自动文本摘要的评估指标(Recall-Oriented Understudy for Gisting Evaluation) |
HSR, SSR, CSL | 指令遵循的评估指标(Hard Satisfaction Rate、Soft Satisfaction Rate、Consistent Satisfaction Levels) |
7. 设计
设计问题的核心在于:
- 量化优化:在模型性能和模型压缩之间寻找最佳平衡,尽可能减少性能损失。
- 决策变量:量化精度(如INT8、INT4、INT3)、模型参数规模、评估指标等。
相关图示:图2(不同量化水平下Qwen-Chat模型的性能比较)。
8. 解决方案
决策变量的确定方法包括:
- 权重变换:采用训练后量化(PTQ)和量化感知训练(QAT)对模型进行权重压缩。
- 误差最小化:通过GPTQ和SpQR算法调整模型权重,减少量化误差。
- 性能评估:根据准确率、BLEU、ROUGE等指标评估模型性能。
9. 定理
论文未明确提出形式化的定理,但提供了以下重要数学结论和实证分析:
- 误差分析:通过数学公式量化因量化引起的性能损失。
- 权重缩放:如SmoothQuant方法,通过缩放激活值有效降低量化误差。
10. 设计过程
论文中解决方案的执行步骤如下:
- 模型选择:选择Qwen-Chat系列的大语言模型作为实验对象。
- 应用量化:对模型应用多种量化方法(如LLM.int8、GPTQ、SpQR)。
- 基准测试:使用知识、对齐性和效率维度的基准测试评估模型。
- 性能比较:比较量化模型与原始模型在各个维度的表现。
- 结果分析:分析模型的性能与量化精度之间的权衡关系。
11. 仿真实验
论文验证了以下方面的性能:
- 准确率:在MMLU、C-EVAL、TruthfulQA等多任务评估上的表现。
- 效率:量化对推理速度和内存消耗的影响。
- 量化性能:量化级别(如INT8、INT4、INT2)对模型精度和生成速度的影响。
关键仿真实验结果展示于图2和图16,涵盖了不同量化精度模型的各项性能指标。
12. 讨论
局限性:
- 模型依赖性:实验结果主要针对Qwen-Chat模型,可能无法直接推广到其他LLMs。
- 量化偏差:某些量化方法可能引入系统性误差,影响特定任务的准确性。
未来工作:
- 高级量化方法:探索混合量化和动态量化等新技术。
- 扩大评估范围:将评估扩展到更多语言和多样化的真实世界任务。
现在开始阅读
摘要:
为了解决
- 量化模型的性能差距:量化后的大语言模型(LLMs)通常不包含在标准评估基准中,导致无法全面比较量化模型与非量化模型的性能。
- 量化行为理解不足:随着LLMs参数规模的增加,量化对模型能力的影响更难理解,当前对量化后模型行为的理解尚不充分。
- 缺乏全面评估框架:目前缺少一个系统化的框架,能够从知识、对齐(alignment)和效率等多个维度对量化LLMs进行全面评估
提出了一个结构化的评估框架,包括三个关键维度:(1) 知识与能力;(2) 匹配;(3) 效率。最后在是个基准上进行了验证,得出结论:
采用 4 位量化的 LLM 可以保持与非量化 LLM 相媲美的性能,而在大多数基准上,perplexity 可以作为量化 LLM 的替代指标。此外,参数标度较大的量化 LLM 性能也优于较小的 LLM。尽管量化可以节省内存,但也会降低 LLM 的推理速度。因此,在量化 LLM 的背景下,要实现解码速度和内存消耗的平衡优化,必须付出大量的工程努力和硬件支持。
Introduction
量化的目的:优化模型推理和内存使用,同时尽量减少性能下降。
模型量化的核心思想:以低精度格式(如 8 位整数)而非原始的高精度浮点格式(通常为 16 位或 32 位)来表示模型的权重或激活度。
量化方法大致可分为两大类:
quantization-aware training (QAT)量化感知训练。
QAT 将量化过程纳入模型的训练阶段,从而使模型能够适应较低精度的表征。
post-training quantization (PTQ).训练后量化(PTQ)
相反,PTQ 则是在训练阶段结束后再应用量化技术。
尽管 PTQ 有性能下降的风险,但由于与 QAT 相关的培训费用过高,因此 PTQ 更为普遍。
本文的内容:
利用各种公开的基准,对经过指令调整的量化 LLM 进行了全面评估。这些基准涵盖语言理解和生成,以及 LLM 的两个关键维度:知识与能力和对齐。此外,我们还评估了各种量化策略在生成速度和内存消耗方面的效率。
图一:评估的综合框架
本文的贡献:
- 提出了一个结构化的评估框架。
- 证明了
-
采用 4 位量化的 LLM 可以保持与未量化 LLM 相当的性能。
-
与参数规模较小的非量化 LLM 相比,参数规模较大的量化 LLM 表现出更优越的性能。
-
在大多数基准测试中,困惑度都是量化 LLM 的可靠性能指标。
-
- 隔离离群值权重(isolating outlier weights)是 SpQR 能够有效地将 LLM 量化到极限 2 位水平的关键因素,其性能明显优于相同水平的 GPTQ。
- 量化需要大量的工程设计和硬件支持,才能有效地应用于实际场景,特别是在内存和速度要求方面。
Related Work
1.量化
量化分为两种:
- PTQ:训练后量化
- QAT:训练前量化,但是由于需要大量的资源和专业知识,从而限制了其更广泛的应用。更多的考虑PTQ。
关于离群值的识别和预防
- GPT3.int8()(也称为 LLM.int8())通过幅度识别离群值。
- SpQR采用Hessian矩阵识别离群值。
减少量化误差的方法:
- SmoothQuant通过等效缩放权重和激活值,大大降低了激活的量化误差,从而大大减少了模型的量化损失。
- Outlier Suppression+ 通过执行通道平移和缩放来抑制权重的离群值。
- QLoRA 建议使用 NF4 数据格式,以进一步减少量化舍入误差。
- OPTQ (一般称为 GPTQ)在量化过程中调整权重,以减少量化误差。
ps补充知识
(1) 什么是outlier values也就是异常值或离群权重
主要指的是在模型权重分布中那些数值与大多数权重相比异常偏大(或偏小)的权重。
这些异常值有以下几个详细的特点和重要性:
-
权重分布特性
- 在大多数神经网络中,权重通常呈现出一个集中在某个较小范围内的分布。然而,总会存在一些权重明显大于(或小于)其他大多数权重,这些就被称为异常值。
- 这些异常值往往位于权重分布的尾部,与大部分权重相比,它们的数值变化范围更大,分布较为稀疏。
-
对量化过程的影响
- 量化误差放大:当使用低位宽(例如4位、3位或2位)进行统一的量化时,大部分权重可以较好地近似表示。但对于那些异常值,由于它们超出了大部分权重的数值范围,直接量化会引入较大的离散化误差,导致量化后的表示与原始值偏差较大。
- 性能瓶颈:这些较大的量化误差可能会显著影响模型在推理时的表现,甚至破坏模型捕捉到的重要特征信息,进而导致模型输出的质量下降,出现理解或生成不连贯的情况。
-
识别与处理方法
- 识别方式:部分方法(如LLM.int8)通过简单的基于绝对数值大小的阈值来识别这些异常权重;而其他方法(如SpQR)则使用更复杂的技术,例如利用Hessian矩阵评估每个权重对损失函数的敏感性,从而更精确地识别出那些对模型性能影响较大的异常值。
- 隔离处理策略:为了降低异常值带来的量化误差,论文中提到的方法(例如SpQR)会将这些异常值“隔离”出来,即在实际量化过程中不将它们压缩到低位宽,而是保持较高的精度(例如16位)。这种做法允许模型在极低位量化(比如2位)时仍然保留关键的特征信息,从而在整体上维持较好的性能。
-
统计特性与量化位宽的关系
- 随着量化位宽的降低,模型中需要隔离的异常值比例往往会增加。例如,在论文中给出的实验数据表明,对于某些模型,当采用极低位宽(如2位)量化时,可能需要保留超过10%的权重以高精度存储,而在8位量化时,这个比例可能非常低(仅千分之几)。这表明,低位量化对异常值更为敏感,也更依赖于特殊的处理策略。
总体来说,异常值在低位量化过程中起着至关重要的作用。如果不对这些权重进行特别处理,统一的低精度量化可能会导致模型性能大幅下降;而通过识别和隔离异常值,并保持它们的高精度,可以在极端低位量化下仍保持模型的整体性能。
(2)什么是模型权重
在神经网络中,“模型权重”指的是在模型各层之间连接的参数,这些参数决定了输入数据如何被转换成输出。
更具体地说:
- 参数作用:每一层神经元会接收前一层传来的输入信号,这些输入信号会与相应的权重相乘,然后再加上偏置项,通过激活函数得到输出。权重在这个过程中充当“系数”,影响了输入信息的重要性。
- 学习过程:模型权重是在训练过程中通过优化算法(例如梯度下降)从数据中自动学习到的。训练过程中不断调整权重,使模型能够更准确地从输入中预测或生成输出。
- 存储形式:在计算机中,权重通常以矩阵或向量的形式存储,每个权重对应着神经网络中一条连接的强度信息。
- 模型性能:模型的性能在很大程度上依赖于这些权重的正确设置,它们直接决定了模型对于复杂数据模式的捕捉能力。
简而言之,模型权重是构成神经网络“记忆”和“知识”的核心参数,通过不断优化这些权重,模型能够在不同任务中实现高效且准确的表现。
(3)SpQR方法
-
Hessian矩阵的作用:
Hessian矩阵是一个由二阶偏导数组成的矩阵,它描述了损失函数在当前参数点附近的“曲率”。简单来说,它告诉我们,如果对某个权重做出微小变化,损失函数将如何变化。 -
敏感性评估:
通过计算每个权重在Hessian矩阵中的对应值(或其相关指标),我们可以判断哪个权重对损失函数最敏感。如果某个权重的Hessian值较大,说明即使对它做出很小的调整,也会导致损失函数显著变化,这表明该权重对于维持模型性能至关重要。 -
对角线元素作为敏感性指标
- 为了简化计算,通常只关注 Hessian 矩阵的对角线元素,即每个权重的二阶偏导数
- 如果某个权重对应的对角线值较大,则表示该权重处的损失函数曲率较高,也就是说,对这个权重做出微小改变就会引起损失函数显著波动,从而表明它对模型性能的影响较大。
- 为了简化计算,通常只关注 Hessian 矩阵的对角线元素,即每个权重的二阶偏导数
-
敏感性判断流程
- 计算二阶导数:对每个权重Wi计算损失函数L关于Wi的二阶偏导数
- 评估敏感性:根据这些二阶导数的绝对值大小来判断敏感性。数值越大,说明该权重越敏感,对整体模型性能的影响越大。
- 设定阈值:根据经验或实验结果,可以设定一个阈值,将那些超过该阈值的权重标记为“敏感”或“异常”权重,需要在量化过程中进行特殊处理(例如保留较高精度)。
- 计算二阶导数:对每个权重Wi计算损失函数L关于Wi的二阶偏导数
-
识别异常值(outlier values):
基于Hessian矩阵的评估,SpQR能够更精确地判断哪些权重在整体模型中起着“关键”作用。那些敏感性高的权重,即使它们的数值并不特别大,也可能被视为“异常值”,因为它们对模型性能的影响远超其他权重。 -
处理策略:
知道了哪些权重对模型性能极为敏感之后,SpQR在量化过程中会将这些权重“隔离”出来,即不对这些权重进行低精度量化,而是保留它们的高精度表示。这样做可以有效降低因量化带来的误差扩散,确保模型在极低位宽下仍能保持较好的性能。
这种利用Hessian矩阵评估权重敏感性的策略,比起单纯使用权重数值大小来判断,能够更全面地反映每个权重对模型损失的影响,从而帮助识别出那些真正对模型性能起关键作用的“异常值”。
(4) Hessian 矩阵
Hessian 矩阵本质上是 损失函数(Loss function)对所有模型参数的二阶偏导数矩阵。在机器学习和深度学习中,它用于描述损失函数在参数空间的 局部曲率,可以帮助我们分析每个权重对损失函数的影响程度。下面是 Hessian 矩阵的建立过程:
1. 定义损失函数
2. 计算 Hessian 矩阵
Hessian 矩阵的计算涉及所有权重参数的二阶偏导数,但由于神经网络的参数往往 非常多(通常是百万级甚至十亿级别),直接计算完整的 Hessian 矩阵的计算代价是极高的。因此,通常会采用 近似方法 来高效计算 Hessian 矩阵。
几种计算 Hessian 矩阵的方法:
3. 在 SpQR 量化中的应用
2. LLM评估
两种LLM评估基准类别:
(1) knowledge & capacity evaluation知识与能力评估
考察模型理解和生成正确答案的能力;
(2) alignment evaluation对齐评估
衡量模型的输出结果与人类偏好和价值观的吻合程度
3. 评估策略
LLM全面评估的问题:由于 LLM 功能多样、应用广泛、可解释性差,对其进行全面评估是一项长期挑战。
本文提出的评估框架:
(1) 知识和能力
(2) 一致性
(3) 效率
(1) knowledge and capacity知识能力
包括两个方面:
- 要求llm在不同领域展示广泛知识以取得令人满意的成绩的领域——MMLU、C-EVAL基准。
- 评估llm执行特定任务(如语言生成和理解)的能力——FLORES-200、CNN/DailyMail、XSum基准。侧重于翻译和总结等基本语言生成任务
评估结果:
表 2:Qwen-Chat 系列模型及其量化模型在十项基准测试中的评估结果
这些基准测试旨在评估 LLM 的知识与能力和对齐度,以及推理过程中的内存消耗和解码速度。这些基准按所用指标的类型分组,并列出了各自组内每个指标的平均得分。
- “Average Accuracy”平均准确度 "表示 LLM 在 MMLU、C-EVAL、GSM8K、SNLI和 TruthfulQA基准中的平均准确度。
- “Average BLEU” "表示 FLORES-200 基准上的汉译英、英译汉的得分。
- “Average ROUGE-1/ROUGE-2/ROUGE-L”显示 XSum和 CNN/DailyMail基准的平均 ROUGE-1、ROUGE-2 和 ROUGE-L 分数。
- “Average HSR/SSR/CSL表示 FollowBench 基准上五个难度等级的平均硬满意率(HSR)、软满意率(SSR)和五个约束条件的一致满意度(CSL)。
- “Average Bias Score”以 x/y 表示,其中 x 和 y 分别代表 BBQ 基准上模棱两可和毫不含糊上下文中不同类别的平均偏差分。
- “Average Perplexity表示 WikiText2、C4和 PTB上的平均困惑度。
- “Memory”指的是当输入包含 256 个词组、输出包含 512 个词组时,推理过程中所消耗的内存(单位:GB)。
- “Speed”指的是当输入包含 256 个词块、输出包含 512 个词块时,每秒生成的词块数量。
(2) 对于对齐结果评估采用:
遵从HHH 标准(从三个不同的角度对llm进行评估:乐于助人、诚实和无害。)
从而选用了:FollowBench、TruthfulQA、BBQ基准
(3) 对于效率评估采用:
内存使用率和生成速度
Evaluation Setup
4.1 LLMs
主要使用了Qwen模型
(1) Qwen-Chat 模型在各种任务中都表现出卓越的性能。
(2) Qwen-Chat 系列包括不同参数规模的 LLM,特别是具有 70 亿、140 亿和 720 亿参数的模型。(3) Qwen-Chat 系列中的模型已在大量多语言数据语料库上进行了预训练,尤其侧重于中文和英文。这种广泛的预训练使模型能够支持英语以外的多种语言
Qwen模型性能:
图 2:Qwen-Chat 系列模型及其量化模型在 MMLU基准(a)和 FLORES-200 基准的英译汉(En → Zh)翻译任务(b)上的表现。x 轴表示模型权重的数据格式,其中 INTx 中的 x 表示权重表示所用的整数位数。为了突出 LLM.int8() 与其他方法之间的细微差别,图中加入了放大视图。
图 3:Qwen-Chat 系列模型及其量化模型在 XSum 测试集上的 ROUGE-1 (a)、ROUGE-2 (b) 和 ROUGE-L (c) 分数。
4.2 Quantization Strategies 量化策略
三种著名的量化方法以及专门的开源实现进行评估:
LLM.int8()
GPTQ
SpQR
具体来说,我们使用 GPTQ 和 SpQR 将 LLM 分别量化为 8、4、3 和 2 位,但 LLM.int8() 除外,它只将 LLM 量化为 8 位。
ps 详细学习各量化方法
LLM.int8()
LLM.int8() 提出了一种矢量量化方法,并将离群子矩阵(outlier submatrices)存储为 FP16 格式,而将常规子矩阵存储为 int8 格式。在矩阵乘法运算中,FP16 子矩阵和 int8 子矩阵分别计算。这样可以保护离群值,但推理速度会降低。
LLM.int8() 是一种 8-bit 量化方法,专门用于 大语言模型(LLMs)的高效推理,该方法主要用于 在尽可能降低内存占用的同时,保持计算精度和推理性能。
核心思想:
LLM.int8() 采用了一种特殊的“分组量化”(Group-wise Quantization)和“异常值检测”(Outlier Detection)方法,以降低量化误差,提高推理精度。
基本流程:
LLM.int8() 主要针对 神经网络中的权重矩阵(weight matrices)和激活值(activations) 进行量化
(1) 计算层的拆分
(2) 识别异常值(Outlier Detection)
(3) 量化权重矩阵(Weight Quantization)
(4) 量化激活值(Activation Quantization)
激活值
在神经网络中,激活值(Activations) 指的是 每一层神经元计算后的输出值,它们是输入数据经过神经网络处理后流动的中间结果。可以把它们想象成 模型内部传递的信息,用于指导下一层的计算。
(5) 推理时的计算(Mixed Precision Computation)
合并结果方法:
由于 LLM.int8() 采用混合精度计算,因此计算分为两部分:
下一步:INT8 计算结果恢复到 FP16/FP32
最终:合并两部分结果
GPTQ
GPTQ(Generalized Post-Training Quantization) 是一种专门针对 大语言模型(LLMs) 设计的 训练后量化(PTQ, Post-Training Quantization) 方法。它的目标是 在保持模型性能的同时,将权重从 FP16/FP32 量化到更低的位宽(如 INT8、INT4、甚至 INT2),从而减少存储需求并加快推理速度。
GPTQ 是近年来 最先进的 LLM 量化方法之一,它比传统量化方法(如 LLM.int8()、普通均匀量化)更精准,尤其适用于 大规模 Transformer 模型(如 LLaMA、GPT、BLOOM 等)。
核心思想:
GPTQ 采用 误差补偿(Error Compensation) 技术,使得即使使用极低位宽(如 4-bit 量化),模型性能仍然接近原始 FP16/FP32 精度。它的关键思想包括:
- 逐列量化(Column-wise Quantization) ✅
- 对 每个权重矩阵的列 依次进行量化,而不是整个矩阵一次性量化。
- 误差补偿(Error Compensation) 🎯
- 量化每个列时,调整剩余未量化的权重,使得总误差最小化。
- 优化量化方案 🚀
- 通过 最小二乘优化(Least Squares Optimization) 来选择最合适的量化值。
这样,GPTQ 避免了传统量化方法容易导致的累积误差问题,即使在 4-bit 甚至 2-bit 量化下,模型仍然能保持较高的推理质量。
详细流程:
GPTQ 主要针对 Transformer 模型的权重矩阵(Weight Matrix) 进行量化
第一步:准备权重矩阵
第二步:逐列量化(Column-wise Quantization)
- 一次处理矩阵的一列 Wj而不是整个矩阵,这样能减少累积误差。
- 在量化当前列 Wj后,会调整剩余未量化的列,以补偿误差,确保整体误差尽可能小。
第三步:寻找最佳量化值(Optimal Quantization Selection)
最小二乘优化(Least Squares Optimization):
最小二乘法 = 找到一条最适合数据的直线,使得所有点的偏差平方和最小。
最小二乘优化的数学公式:
解法:求导并令其为 0
在矩阵形式下的最小二乘优化:
第四步:误差补偿(Error Compensation)
第五步:重复直到所有列量化完成
SpQR
SpQR(Sparse-Quantized Representation) 是一种先进的 量化 + 剪枝(Quantization + Sparsity) 方法,旨在 减少大语言模型(LLMs)的存储和计算开销,同时保持高精度推理。
SpQR 在 GPTQ 量化的基础上 进行了改进,增加了 稀疏化(Sparsity) 机制,使得模型不仅仅是低比特存储,还能跳过计算 零权重,进一步提升推理速度和降低显存需求。
核心思想:
SpQR 结合了两大关键优化技术:
- 量化(Quantization):类似 GPTQ,使用 误差补偿(Error Compensation) 技术将权重转换为低比特(如 INT4、INT3)。
- 剪枝(Sparsity):利用 Hessian 矩阵分析 找出对损失函数影响最小的权重,将它们置零,以减少计算量。
详细流程:
Step 1:权重矩阵分析
Step 2:使用 Hessian 矩阵评估权重的“重要性”
Step 3:剪枝(Sparsity - Zero Out Low-Impact Weights)
Step 4:低比特量化(Low-bit Quantization)
Step 5:推理阶段的优化(Efficient Inference Execution)
SpQR 量化 vs LLM.int8() vs GPTQ(4-bit)
4.3 Benchmarks基准
5 Experiment Results and Discussion实验结果与讨论
图 4:在 FollowBench 基准上,Qwen-Chat 系列模型及其量化模型在五个难度级别上的平均硬满意率(a)、软满意率(b)和一致满意度(c)。
图 5:Qwen-Chat 序列模型及其量化模型在 TruthfulQA 基准(a)以及 GSM8K(b)和 SNLI(c)测试集上的表现。
得出结论:
- 参数越多,表现越好。
- LLM 被量化为较少比特时,我们观察到其性能呈下降趋势。
-
4 位量化在 LLM 的容量和低精度格式的位数之间进行了权衡。当量化位数减少到 3 位或更低时,LLM 与量化后的 LLM 之间就会出现明显的性能差异。
-
易错性是量化 LLM 的可靠性能指标。perplexity serves as a reliable performance indicator for quantized LLMs on evaluation benchmarks.
讨论:
- 当 LLM 被量化到 8 位时,大多数 LLM,无论其参数量级如何,都能保持与未量化等价物相当的性能水平。
- 此外,在大多数基准测试中,量化为 4 位的 LLM 也能保持与其非量化版本相似的性能。
- 如果这些 LLM 进一步量化到 3 比特或更低,这些模型的容量就会开始下降。
- 当使用 GPTQ 将 LLM 量化为 2 比特时,LLM 就会失去理解和遵循用户指令的能力,从而生成不连贯的文本。
猜测4bits表现好的原因是:
这些基准所使用的非线性或不连续度量标准,可能无法反映复杂性的微小变化。
图 6:在 BBQ 基准测试中,Qwen-Chat 系列模型及其量化模型在模棱两可和去歧义上下文中的偏差分数
图 7:Qwen-Chat 系列模型及其量化模型在 WikiText2 数据集上的复杂度
作者还作了一个实验证明了要使 SpQR 有效地将 LLM 量化到 2 比特的极限水平,识别和隔离离群权重至关重要。
SpQR 引入了两种创新策略来提高量化 LLM 的性能,使其有别于 GPTQ:
(1) 采用极小的分组规模和双级量化
(2) 隔离非结构化离群值权重,在计算过程中保持这些权重的较高精度(16 位)。
表 4:不同量化配置下 WikiText2、C4和 PTB的易错性。"w2g16 "表示权重量化为 2 位,组大小为 16。"w/ outlier "表示识别离群值,但不进行量化,而 "w/o outlier "表示不识别离群值,对整个权重矩阵进行量化。所有实验均采用双级 3 位量化,即首先量化模型权重,然后量化分组统计量(刻度和零)。
表 5:SpQR 量化的 LLM 中保持高精度的异常值比例。
实验:
这两个对照实验(1) 将 SpQR 的分组规模从 16 个增加到 128 个,与 GPTQ 所使用的分组规模相匹配,同时仍然隔离离群值权重。(2) 保持较小的分组规模,但不分离离群值权重。
结果:
实验结果如表 4 所示。我们观察到,当离群值权重未被隔离时,即使分组规模较小,三个基准的困惑度也会明显增加。相反,增加分组规模只会导致易解性的微弱增加。此外,我们还分析了量化 LLM 高精度存储的离群值权重比例,结果如表 5 所示。
这些研究结果表明,量化位数与离群权重百分比之间存在反比关系,在同一量化水平下,不同模型尺度的离群权重百分比一致。因此,SpQR 要有效地将 LLM 量化到 2 比特的极限水平,离群值权重的隔离和高精度保留是必不可少的。
在实际应用中,低位量化的应用需要大量的工程设计和硬件支持。
图 8:左图:Qwen-Chat 系列模型与量化模型的内存消耗对比。y 轴以对数标度表示,以清楚地显示随着量化位数的减少,参数标度较小(7B、14B)的 LLM 内存消耗量的变化。右图:Qwen-Chat 系列模型与量化模型的推理速度比较。这些实验在 A100 80GB SXM GPU 上进行,输入 256 个tokens,生成 512 个tokens。
作者观察到:尽管 SpQR 的性能令人印象深刻,但它无助于减少 LLMs 推理过程中的内存消耗。
推测:
- 本文SpQR 实现,它使用高精度格式来表示量化权重。它只是限制了量化权重的范围,使其与低精度格式相匹配,从而模仿了用低精度表示量化权重的效果。因此,计算是在高精度格式下执行的,不会减少内存消耗。
- 多数计算库(如 PyTorch)还不支持以低精度格式高效执行并行计算。这意味着与低精度格式相关的运算符的实现必须手动完成,要求对计算硬件(如 GPU、TPU 等)有透彻的了解,并投入大量工程精力以实现高效执行。
作者还观察到:与未量化的相比,经 GPTQ 和 LLM.int8() 量化的 LLM 的推理速度较慢,4 位量化的情况除外
推测原因:
- 只有 LLM 的权重使用了低精度格式表示法,而激活仍使用高精度格式表示法。
- 我们实验中使用的硬件不支持这种混合精度格式的计算加速。
这里补充一点
针对低比特量化的硬件优化:
在内存消耗水平相近的情况下,考虑到参数标度较小的 LLM 的性能,以较低比特精度量化的参数标度较大的 LLM 比参数标度较小的 LLM 更受青睐。
虽然量化 LLM 在内存效率方面具有优势,但量化也会导致推理速度降低。因此,这些量化方法最适合内存有限而推理速度是次要考虑因素的情况。
总结,第五章一共得出五个结论:
- 4 位量化在 LLM 的容量和低精度格式的位数之间进行了权衡。当量化位数减少到 3 位或更低时,LLM 与量化后的 LLM 之间就会出现明显的性能差异。
- 易错性是量化 LLM 的可靠性能指标。perplexity serves as a reliable performance indicator for quantized LLMs on evaluation benchmarks.
- 要使 SpQR 有效地将 LLM 量化到 2 比特的极限水平,识别和隔离离群权重至关重要。
- 在实际应用中,低位量化的应用需要大量的工程设计和硬件支持。
6 Conclusion结论
- LLM 的量化策略进行了全面评估,展示了各种基准中模型效率和性能下降之间的权衡。
- 通过采用结构化评估框架,从知识与容量、对齐和效率等方面对模型进行评估,我们旨在为量化 LLM 的可扩展性和实际应用提供有价值的见解。
- 实验结果表明,虽然 4 位量化保持了与非量化对应模型接近的性能,但当量化降低到 3 位或更低时,就会出现明显的性能差异。
- 实验结果还表明,在各种评估基准上,迷惑性可以作为量化 LLM 的可靠性能指标。
- SpQR 通过隔离离群权重和在计算过程中保持高精度,有效地将 LLM 量化到 2 位的极端水平。
- 当存在内存限制且推理速度是次要考虑因素时,量化到较低比特精度且参数规模较大的 LLM 可能比更小的模型更受青睐。
- 我们还强调了在实际应用中高效部署量化 LLM 所需的工程努力和硬件支持。
Limitations局限性
- LLM 是在大量数据基础上进行预训练的。这可能会导致我们使用的基准中的一些测试示例受到预训练数据的污染,从而可能导致高估 LLM 的性能
- 计算资源有限,我们的实验仅限于 Qwen-Chat 系列模型,Qwen 系列模型的实验结果和发现不一定能推广到其他 LLM。
下一步工作
识别和消除这些受污染的示例
更多推荐
所有评论(0)