当前位置: 首页 > news >正文

解码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.xdnf.cn/news/1351477.html

相关文章:

  • Mac相册重复照片终结指南:技术流清理方案
  • chromadb使用hugging face模型时利用镜像网站下载注意事项
  • Node.js特训专栏-实战进阶:23. CI/CD流程搭建
  • 通过官方文档详解Ultralytics YOLO 开源工程-熟练使用 YOLO11实现分割、分类、旋转框检测和姿势估计(附测试代码)
  • 优先使用 `delete` 关键字删除函数,而不是将函数声明为 `private` 但不实现 (Effective Modern C++ 条款11)
  • 2025年Java在中国开发语言排名分析报告
  • 深度学习之PyTorch框架(安装,手写数字识别)
  • Redis 从入门到实践:Python操作指南与核心概念解析
  • Redis全面详解:从配置入门到实战应用
  • 联邦学习之----联邦批量归一化(FedBN)
  • 非线性规划学习笔记
  • 【KO】前端面试题一
  • 浮点数比较的致命陷阱与正确解法(精度问题)
  • 【Linux】深度学习Linux下的包管理器yum/apt
  • 自动化知识工作AI代理的工程与产品实现
  • 文献阅读笔记【物理信息神经网络】:Physics-informed neural networks: A deep learning framework...
  • 深入理解 Linux 系统文件 I/O:从 open 到重定向的底层逻辑》
  • CA6150主轴箱系统设计cad+设计说明书
  • Spring:IOC(控制反转 )、DI(依赖注入 )、AOP(通知类型、事务、拦截器)
  • 博士招生 | 美国圣地亚哥州立大学 Yifan Zhang 课题组博士招生,AI 安全领域顶尖平台等你加入!
  • ​崩坏世界观中的安全漏洞与哲学映射:从渗透测试视角解构虚拟秩序的脆弱性​
  • lanczso算法中的额外正交化代码解释
  • Linux问答题:分析和存储日志
  • Leetcode—931. 下降路径最小和【中等】
  • 告别静态网页:我用Firefly AI + Spline,构建次世代交互式Web体验
  • 同类软件对比(一):Visual Studio(IDE) VS Visual Studio Code
  • 支持电脑课程、游戏、会议、网课、直播录屏 多场景全能录屏工具
  • LeetCode 448.找到所有数组中消失的数字
  • Ubuntu通过 systemd 管理 gpt4free,需为其创建 g4f.service 文件,定义服务的启动、停止等操作(未实践)
  • 97. 小明逛公园,Floyd 算法,127. 骑士的攻击,A * 算法