解码LLM量化:深入剖析最常见8位与4位核心算法

解码LLM量化:深入剖析8位与4位核心算法

大型语言模型(LLM)的性能日益强大,但其庞大的体积和高昂的计算成本构成了部署的主要障碍。模型量化,作为一种将高精度浮点权重(如16位)映射到低位宽整数(如8位或4位)的技术,已成为应对这一挑战的关键。它旨在不显著牺牲模型性能的前提下,大幅压缩模型大小、降低显存占用并加速推理。

本文将系统性地剖析当前业界主流的8位与4-bit量化算法,重点阐述其核心思想、差异点及实践中的关键注意事项。


一、 坚实的基础:8位(INT8)量化

8位量化技术相对成熟,能够在显著降低资源消耗的同时,保持接近原始模型的性能。其主要挑战在于如何有效处理权重和激活值中的“异常值”(Outliers)。

算法1:Absmax 量化 (Absolute Maximum Quantization)

Absmax量化是一种基础且高效的对称量化方案,也是许多框架中8位量化的起点。

  • 核心思想
    Absmax的核心在于找到权重张量中所有数值的绝对值最大值(absmax),并以此为基准进行线性缩放。它将原始的[-absmax, absmax]浮点数范围,直接映射到[-127, 127]的8位有符号整数范围内。这个absmax值与一个固定的整数范围(127)共同定义了缩放因子(Scale),它是连接浮点世界和整数世界的桥梁。

  • 算法流程

    1. 寻找缩放基准: 对于给定的权重张量W,计算 s = absmax(W)
    2. 计算缩放因子: Scale = s / 127
    3. 量化: W_int8 = round(W / Scale)
    4. 反量化: 在计算时,通过 W_fp16 ≈ W_int8 * Scale 恢复浮点数值。
  • 关键挑战
    Absmax的主要弱点在于对异常值的极端敏感性。若一个张量中绝大多数权重都分布在[-1, 1]区间,但存在一个值为20.0的异常值,那么absmax将为20.0。这会导致缩放因子变得极大,使得[-1, 1]区间内的所有权重都被量化到极少数几个整数上(如-1, 0, 1),从而丢失了大量的精度信息。

算法2:SmoothQuant

SmoothQuant是一种更先进的量化感知(Quantization-Aware)算法,它精准地识别并解决了导致LLM量化性能下降的关键瓶颈——激活值中的异常值。

  • 核心思想
    SmoothQuant的核心在于,矩阵乘法 Y = X * W 的量化误差同时来源于激活值X和权重W。其中,激活值的分布通常比权重更不规则,更容易出现大幅度的异常值。SmoothQuant提出,可以通过一个数学上等价的变换,将激活值的量化“难度”一部分“迁移”给权重。

  • 算法流程

    1. 等价变换: 引入一个可学习的平滑因子s,将矩阵乘法改写为 Y = (X / s) * (s * W)
    2. 难度迁移: 通过优化选择s,使得X' = X / s的数值分布变得更加平滑(异常值被抑制),而W' = s * W的分布虽然有所变化,但仍在易于量化的范围内。
    3. 独立量化: 对处理后、更容易量化的X'W'分别进行标准的8位Absmax量化。
  • 差异点与优势

    特性AbsmaxSmoothQuant
    关注点仅关注权重张量本身。同时关注激活值和权重,识别出激活值是主要矛盾。
    处理方式被动接受权重分布,对异常值无能为力。主动干预,通过数学变换平滑激活值,优化整个计算流。
    性能表现在LLM中遇到激活值异常时,性能下降明显。显著提升了LLM的INT8量化性能,已成为高性能推理的标准。

二、 突破极限:4位(INT4)量化

4位量化能带来极致的模型压缩率,但精度挑战也随之剧增。简单的线性映射在此几乎完全失效,必须采用更复杂的、基于优化的算法。

算法1:GPTQ (Generative Pre-trained Transformer Quantizer)

GPTQ是早期在4位量化领域取得突破性成功的算法,其核心是把量化视为一个误差最小化的优化问题。

  • 核心思想
    GPTQ的目标不是简单地让量化后的权重在数值上逼近原始权重,而是要找到一组4位整数权重W_int4,使得反量化后的权重W'与原始输入X相乘的结果,与原始权重WX相乘的结果误差最小。即 argmin || W*X - W'*X ||

  • 算法流程

    1. 逐层量化: 采用贪心策略,一次只处理模型中的一层,固定其他层不变。
    2. 逐列优化: 在单层权重矩阵内部,逐列进行量化。
    3. 误差补偿: 这是GPTQ的精髓。在量化完第i列后,会计算出产生的量化误差。这个误差将被添加到所有尚未被量化的后续列上。这样,后续列的量化过程就会自动地去“补偿”前面步骤中产生的误差,从而实现全局最优。
    4. 校准数据: 该过程需要一个小的校准数据集来获取代表性的激活值X,以便进行误差计算和优化。
算法2:AWQ (Activation-aware Weight Quantization)

AWQ从一个完全不同的视角出发,它认为并非所有权重都同等重要,应该优先保护那些对模型输出影响最大的权重。

  • 核心思想
    AWQ的观察是,权重的重要性与其对应的激活值幅度高度相关。一个权重即使数值不大,但如果它总是与一个大幅度的激活值相乘,那么它对最终结果的贡献就很大。因此,量化的核心应该是保留这些与显著激活通道相关的权重的精度

  • 算法流程

    1. 识别重要激活: 使用校准数据集,分析并找到那些平均幅度较大的激活通道。
    2. 保护对应权重: 与这些重要激活通道相对应的权重被视为“显著权重”。
    3. 选择性缩放: 引入一个优化的缩放因子,仅对这些显著权重进行缩放,降低其数值范围,从而使其在量化时能被更精确地表示。为了维持数学等价性,对应的激活通道会被相应地放大。
    4. 量化: 对缩放后的权重张量进行4位量化。
  • 差异点与权衡:GPTQ vs. AWQ

    特性GPTQAWQ
    核心哲学误差重建: 通过迭代补偿,让最终输出的误差最小化。显著性保护: 保护与重要激活相关的权重,从源头减少误差。
    量化过程迭代优化,逐列求解,量化过程相对较慢。分析驱动,一次性缩放,量化过程非常快。
    校准数据用于计算和最小化输出误差。用于分析激活值分布,识别重要权重。
    性能表现精度非常高,长期以来是4位量化的黄金标准。精度与GPTQ相当,有时更优,且量化速度和推理性能有优势。

三、 注意事项与总结

  1. 校准数据集的重要性: 对于GPTQ和AWQ这类高级算法,一个虽小但具有代表性的校准数据集是保证量化后模型性能的关键。
  2. 硬件与核函数: 量化的最终推理加速效果,高度依赖于底层硬件是否对低位宽整数运算(如INT4/INT8矩阵乘法)有高效的支持(Kernel)。
  3. 生态系统: bitsandbytes, auto-gptq, auto-awq等库的出现,极大地简化了这些复杂算法的应用,使其能够被广大开发者方便地集成和使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96540.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提问:温度不改变 logits 与概率的排名,为何还会影响模型输出?

你此前围绕温度的核心困惑始终是:“温度不改变 logits 与概率的排名,为何还会影响模型输出?” 以下总结将紧扣这一困惑,并重点补充核采样(Top-p)在其中的作用,明确温度与核采样如何共同影响输出…

【文献阅读】Lossless data compression by large models

1. 中华人工智能研究中心,郑州。 2. 鹏程实验室,深圳。 3. 上海数学与交叉学科研究所,上海。 4. 中国科学院计算技术研究所,北京。 5. 宁波人工智能产业研究所,宁波。 6. 滑铁卢大学计算机科学学院,加拿大安…

注意力机制:捕获长距离依赖关系的革命性技术

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! ✨ 1. 注意力机制概述:为什么需要关注"长距离依赖&qu…

PHP如何使用JpGraph生成柱形图?

PHP使用JpGraph库生成各类统计图形具有显著优势,该库作为专业的PHP图表生成工具,能够高效创建包括折线图、饼图、散点图在内的多种数据可视化图形,其核心价值在于提供了丰富的图形定制能力和简洁的API接口。JpGraph通过纯PHP实现,…

免费的端口映射工具 ChmlFrp

免费的端口映射工具 ChmlFrp 前言:之前我写过一篇关于cloudflare tunnel的使用教程,ChmlFrp是一个类似的工具,也可以用来进行内网穿透 我的博客对应文章地址 1.注册账号 注册地址 点击这个链接前往官网注册一个账号,过程简单&…

遥感领域解决方案丨涵盖:高光谱、无人机多光谱、空天地数据识别与计算

一:AI智慧高光谱遥感实战:手撕99个案例项目、全覆盖技术链与应用场景一站式提升方案在遥感技术飞速发展的今天,高光谱数据以其独特的光谱分辨率成为环境监测、精准农业、地质勘探等领域的核心数据源。然而,海量的波段数据、复杂的…

中科米堆CASAIM自动化三维测量设备测量汽车壳体直径尺寸

随着新能源汽车产业向轻量化与高集成度发展,壳体作为电池组和电驱系统的核心承载部件,其孔位加工精度直接影响装配密封性及结构强度,传统人工测量方式已难以满足现代化生产需求。自动化三维测量设备的引入,为汽车壳体直径尺寸测量…

08.21总结

圆方树 引入 我们注意到,树结构相比普通图具有诸多优良特性。若能将在无向图上求解的问题转化为树结构问题,往往能大幅简化求解过程。圆方树正是实现这一转化的有效工具。 定义 我们称原图中的点为"圆点"。通过引入方点并调整边的关系&#xf…

亚马逊广告优化新逻辑:从人工苦力到AI智能的进化之路

"为什么我的广告花费越来越高,转化却越来越差?""如何在海量关键词中找到真正能带来转化的黄金词?""为什么手动调整出价总是跟不上流量变化的速度?""怎样才能避免因库存问题导致的广告权重暴跌…

【51单片机】【protues仿真】基于51单片机水位监测系统

目录 一、主要功能 二、使用步骤 三、硬件资源 四、软件设计 五、实验现象 一、主要功能 1、数码管显示当前水位值 2、按键设置水位上下限阈值 3、当水位低于下限,启动蜂鸣器警报并抽水至水位上限停止抽水 4、电机模拟水泵,蜂鸣器,指示…

白名单过滤的文件上传如何bypass:boot2root靶机之fristileaks

靶机提示 base64解码提取图片 文件上传之apache多后缀名解析漏洞 linpeas dirtycow提权 靶机下载 通过网盘分享的文件:FristiLeaks_1.3.ova 链接: https://pan.baidu.com/s/1ZWznp8egNGwnQqwh1gkSZg?pwdwwvp 提取码: wwvp --来自百度网盘超级会员v8的分享主…

Centos 8 管理防火墙

firewall-cmd 检查与安装 在 CentOS 8 上安装和启用 firewalld(提供 firewall-cmd 工具)的步骤如下:1. 检查 **firewalld** 是否已安装 在安装前,先检查系统中是否已安装: sudo firewall-cmd --version如果返回版本号&…

使用PPT进行科研绘图过程中常用的快捷键

PPT科研绘图常用快捷键速查表功能类别快捷键功能描述基础操作与选择Ctrl A全选幻灯片上的所有对象。Ctrl D快速复制选中的对象,并自动保持等间距排列。Shift Click多选多个对象。Ctrl G将选中的多个对象组合成一个整体。Ctrl Shift G取消组合。Ctrl 拖动复制…

`strchr` 字符串查找函数

1) 函数的概念与用途 strchr 是 C 标准库中的一个基础但极其重要的字符串处理函数,它的名字来源于"string chracter"(字符串字符)。这个函数的功能非常明确:在字符串中查找特定字符的第一次出现位置。 可以将 strchr 想…

Redis 678

Redis 8 是当前的最新稳定版(截至 2024 年中),它在 Redis 7 的基础上带来了更多重要改进。我们来对这三个主要版本进行一次全面的功能和性能对比。 核心演进脉络 Redis 6 (2020):多线程时代的开创者。解决了网络 I/O 瓶颈&#xf…

【大白话解析】 OpenZeppelin 的 Address 库:Solidity安全地址交互工具箱​(附源代码)

🧩 一、这个文件是干嘛的?—— Address.sol 是个“工具箱” 你可以把这个 Address.sol文件理解为一个 ​​“工具箱”​​,里面装了一堆​​专门用来安全地跟别的地址(账户或合约)打交道的工具函数​​。 在区块链世界里,地址(address)可以是: ​​外部账户(EOA)…

漫谈《数字图像处理》之测不准原理

在数字图像处理中,提到的 “测不准原理” ,和量子力学里由海森堡提出的 “不确定性原理” (Heisenberg uncertainty principle,也叫海森堡测不准原理)有一定的类比关系,但本质上并不是同一个概念。以下为详…

Linux服务测试

一、环境准备确认 确保 4 台主机(APPSRV、STORAGESRV、ROUTERSRV、CLIENT )网络连接正常,虚拟机网卡模式按要求设置(APPSRV、STORAGESRV 为 NAT 模式;ROUTERSRV 为双网卡,NAT 仅主机模式;CLIE…

2.Shell脚本修炼手册---创建第一个 Shell 脚本

2. 创建第一个 Shell 脚本 文章目录2. 创建第一个 Shell 脚本2.1 什么是 Shell 脚本?2.1.1 脚本开头:告诉系统用什么程序执行2.1.2 脚本注释:给人看的 “说明书”2.1.3 bash 与 sh 的区别2.2 如何执行 Shell 脚本?方法 1&#xff…

Day22 顺序表与链表的实现及应用(含字典功能与操作对比)

day22 顺序表与链表的实现及应用(含字典功能与操作对比) 使用顺序表实现查字典功能 支持连续查询单词,输入 #quit 退出程序。数据格式示例如下: a\0 indef art one\r\n word mean [---buf--->] [---i--…