Please enable Javascript to view the contents

什么是模型量化

 ·  ☕ 4 分钟

1. 什么是模型量化

模型量化是将高精度的模型(通常为 32 位浮点数 FP32 或 16 位浮点数 FP16 )的权重和激活值转换为低精度模型(如 8 位整数 INT8)的过程。

FP32 的值范围为 -3.4*10^383.4*10^38,有 40 亿个值。而对于 INT8,我们只能看到可能值集内的 256 个值,值范围为 -128 到 128。计算 INT8 矩阵比 FP32、FP16 的速度要快很多。

模型量化的过程就是建立高精度数值映射到低精度数值的映射关系。

2. 模型量化的好处

  • 降低模型的显存占用

https://huggingface.co/Qwen/Qwen2.5-7B 为例,默认使用的是 bfloat16 精度,估算一下模型权重占用的显存为 7B _ 16/8 Byte = 14 GB 显存。如果进行 Int8 量化,模型权重的显存占用降为 7B _ 8/8 Byte = 7 GB 显存,只有之前的一半。

  • 提高模型的推理速度

首先是计算量会大大减少,W8A16(权重 8 位,激活 16 位)计算量减少 30~40%,W8A8(权重 8 位,激活 8 位)计算量减少 60-75%。

其次,还有数据传输量能减少 50% 左右,能够有效降低显存带宽占用。传输相同数据量,量化版本的模型比非量化版本的传输时间要短很多。

3. 常见的量化位数

简写含义应用场景
W16A16权重 FP16/BF16,激活 FP16/BF16常见的混合精度训练、推理
W8A8权重 INT8,激活 INT8经典 INT8 量化,推理部署广泛(TensorRT、ONNX Runtime、OpenVINO 等)
W8A16权重 INT8,激活 FP16/BF16折中方案,降低权重存储与带宽但保持较高精度
W4A16权重 INT4,激活 FP16/BF16大模型推理常用配置(如 GPTQ、AWQ、QLoRA)
W4A8权重 INT4,激活 INT8激进的低精度方案,压缩率更高,但精度下降风险大

4. 常见的量化方法

4.1 GGUF

GGUF 全称 GPT-Generated Unified Format,是由 Georgi Gerganov(llama.cpp 开源项目创始人)定义发布的一种大模型文件格式。

原理:

  • 使用 GPT 生成的统一格式
  • 采用块级量化技术,将权重按块进行量化处理
  • 通过块级结构平衡模型大小和精度损失

特点与优势:

  • 支持多种量化精度(Q4_0, Q4_1, Q5_0, Q5_1, Q8_0 等)
  • 对硬件要求低,普通 CPU 即可运行
  • 模型文件相对较小,便于存储和传输
  • 社区支持度高,工具链完善
  • 支持流式生成,用户体验良好
  • 采用块级量化,有效平衡了模型大小和精度

使用场景:

  • CPU 推理
  • 本地个人电脑运行大模型
  • 边缘设备部署
  • 资源受限环境

4.2 GPTQ

GPTQ 全称 Gradient-based Post-Training Quantization,是一种基于梯度的训练后量化方法。

原理:

  • 基于梯度信息进行训练后量化
  • 使用梯度下降法优化量化过程中的误差
  • 通过梯度信息指导量化参数的选择

特点与优势:

  • 基于梯度的训练后量化技术
  • 通常量化到 4bit 或 8bit
  • 在 4bit 量化下仍能保持较好的模型性能
  • 相比原始模型显著减少显存占用
  • 推理速度较快
  • 适合在消费级 GPU 上部署大模型

使用场景:

  • GPU 推理
  • 需要较高精度的生产环境
  • 中等规模的推理服务

4.3 AWQ

AWQ 全称 Activation-aware Weight Quantization,是一种基于激活感知的权重量化方法。

原理:

  • 基于激活值分布进行权重量化
  • 使用梯度下降法优化量化误差
  • 通过最小化量化误差来确定量化参数
  • 量化参数包括量化范围、量化步长等

特点与优势:

  • 基于激活感知的权重量化技术
  • 保护重要权重通道不被量化,保持关键信息
  • 通常实现 4bit 量化
  • 在相同量化位数下精度更高
  • 推理速度快,显存占用少
  • 特别适合需要高质量输出的应用

使用场景:

  • GPU 推理
  • 高性能推理需求
  • 对模型精度要求较高的场景

4.4 FP4

FP4 全称 4-bit Floating Point,是一种 4 位浮点数表示方法。

原理:

  • 使用 4 位浮点数格式表示权重
  • 保持浮点数的指数和尾数结构
  • 相比整数量化能更好地保持原始数值分布

特点与优势:

  • 4 位浮点数表示,保持数值精度
  • 极低的存储和计算开销
  • 相比 4bit 整数量化精度更好
  • 相比整数量化能更好保持数值分布
  • 适合大规模部署
  • 通常结合特殊的硬件优化

使用场景:

  • 极端资源受限环境
  • 需要最大化压缩比的场景
  • 特定硬件加速器

4.5 NVFP4

NVFP4 全称 NVIDIA 4-bit Floating Point,是 NVIDIA 专门优化的 4 位浮点数表示方法。

原理:

  • 基于 NVIDIA 硬件优化的 4 位浮点数格式
  • 针对 NVIDIA GPU 架构进行专门优化
  • 保持浮点数特性的同时实现极致压缩

特点与优势:

  • NVIDIA 专用的 4 位浮点数表示
  • 极低的存储和计算开销
  • 相比 4bit 整数量化精度更好
  • 相比整数量化能更好保持数值分布
  • 适合大规模部署
  • 针对 NVIDIA 硬件进行了特殊优化

使用场景:

  • NVIDIA GPU 环境下的极端资源受限场景
  • 需要最大化压缩比的 NVIDIA 硬件部署
  • NVIDIA 特定硬件加速器

微信公众号
作者
微信公众号