【AIaaS 全栈架构师】第 17 篇:模型量化技术——GPTQ、AWQ 与 GGUF 的精度与效率权衡

本系列定位:面向全栈架构师的 AIaaS 系统化教程。本篇为模块三"模型推理与部署优化"的第四篇,深入模型量化这一推理加速的核心技术。


本篇你将学到

  • 理解量化的本质:用更低精度表示模型权重,以显存和计算换取效率
  • 掌握训后量化(PTQ)与量化感知训练(QAT)的分类与适用场景
  • 深入 GPTQ 的二阶信息量化原理与 AWQ 的激活感知量化思想
  • 理解 GGUF 格式的 k-quants 系列及其在端侧部署中的角色
  • 建立量化方法选型决策框架

学完本篇,你将能根据模型大小、硬件条件和精度要求,选择合适的量化方案,并理解每种方案的精度损失与收益权衡。


一、为什么需要量化

1.1 大模型的显存困境

在模块二的训练篇中,我们讨论过模型参数量与显存的关系。一个 70B 参数的模型,以 FP16 存储,需要:

70B × 2 字节 = 140 GB

这远超单张 GPU 的显存(H100 是 80GB)。推理时还要加上 KV Cache(第 15 篇讨论过,大模型长上下文下可达数十 GB),单卡根本放不下。

模型 参数量 FP16 显存 INT8 显存 INT4 显存
7B 70 亿 14 GB 7 GB 3.5 GB
13B 130 亿 26 GB 13 GB 6.5 GB
70B 700 亿 140 GB 70 GB 35 GB
175B 1750 亿 350 GB 175 GB 87.5 GB

量化到 INT8,显存减半;量化到 INT4,显存降至 1/4。这意味着:

  • 70B 模型 INT4 后只需 35GB,单张 A100(80GB)就能跑
  • 7B 模型 INT4 后只需 3.5GB,消费级显卡甚至 CPU 都能跑

1.2 量化的双重收益

量化带来的不仅是显存节约,还有计算加速

  • 显存带宽:低精度数据占空间小,从显存读取权重更快,Decode 阶段(访存密集型)直接受益
  • 计算吞吐:现代 GPU 有专用的低精度计算单元。H100 的 INT8 算力是 FP16 的 2 倍,INT4/FP8 算力更高
  • 能耗降低:低精度计算的能耗更低,大规模部署时电费成本显著下降

1.3 代价:精度损失

量化不是免费的午餐。将连续的浮点数压缩到有限的整数级别,必然引入量化误差(Quantization Error)。关键问题是:误差多大?能否接受?

一个好的量化方法的目标是:用最小的精度损失,换取最大的效率提升。这正是本篇讨论的各种方法(GPTQ、AWQ、GGUF 等)要解决的核心问题。


二、量化的基本分类

2.1 量化分类树

模型量化

训后量化
Post-Training Quantization

量化感知训练
Quantization-Aware Training

权重-only 量化
(仅量化权重,激活保持 FP16)

权重+激活量化
(W8A8 等)

RTN
Round-to-Nearest
最简单,直接四舍五入

GPTQ
基于 Hessian 的逐层量化

AWQ
激活感知的权重量化

SmoothQuant
平滑激活异常值

ZeroQuant 等
权重激活联合量化

LSQ
可学习步长

2.2 PTQ vs QAT

训后量化(PTQ)

  • 在模型训练完成后,离线地将 FP16/FP32 权重转换为低精度
  • 不需要重新训练,只需要少量校准数据(calibration data)
  • 速度快、成本低,是生产部署的主流方式
  • 代表方法:GPTQ、AWQ、GGUF 的 k-quants、SmoothQuant

量化感知训练(QAT)

  • 训练过程中模拟量化的效果,让模型"适应"低精度
  • 需要完整的训练流程(数据、GPU、时间),成本高
  • 精度通常优于 PTQ,尤其是极低比特(2-4 bit)场景
  • 代表方法:LSQ(Learned Step Size Quantization)、GPTQ 后的 QAT 微调
维度 PTQ QAT
时机 训练后 训练中
成本 低(需校准数据) 高(需完整训练)
精度 较好(INT8 接近无损,INT4 有损) 更好
适用场景 生产部署主流 极致精度需求
工程门槛

在 AIaaS 平台中,绝大多数场景使用 PTQ。QAT 主要用于对精度极度敏感的场景(如边缘设备的 2-4 bit 部署)。本文重点讨论 PTQ 方法。

2.3 对称量化与非对称量化

无论 PTQ 还是 QAT,量化的数学操作都是将浮点数映射到整数:

量化:  x_quant = round(x / scale) + zero_point
反量化:x ≈ (x_quant - zero_point) × scale
  • scale(缩放因子):浮点范围到整数范围的比值
  • zero_point(零点):浮点 0 对应的整数值

对称量化:zero_point = 0,浮点范围关于 0 对称(如 [-A, A] 映射到 [-127, 127])。计算简单,硬件友好,但若数据分布不对称会浪费精度。

非对称量化:zero_point ≠ 0,适用于分布不对称的数据(如 ReLU 后全为正的激活值)。精度更好但计算略复杂。

权重通常对称量化(分布近似关于 0 对称);激活值可能非对称量化。主流方法多采用对称量化以简化硬件实现。


三、RTN:最朴素的基线

3.1 Round-to-Nearest 原理

最简单的量化方法是 RTN(Round-to-Nearest)——直接将浮点权重四舍五入到最近的整数级别。

对于一个权重张量 W,INT8 对称量化的过程:

  1. 找到权重的最大绝对值:max_val = max(|W|)
  2. 计算缩放因子:scale = max_val / 127
  3. 量化:W_int8 = round(W / scale)
  4. 反量化:W_recovered ≈ W_int8 × scale

3.2 RTN 的问题

RTN 的问题在于它完全不考虑权重的分布特征和重要性差异。如果一个权重张量中,99% 的值在 [-0.1, 0.1] 范围内,但有 1% 的异常值达到 5.0,RTN 会用 5.0 作为 max_val,导致 99% 的正常值被压缩到极小的整数范围内,精度严重损失。

这就是为什么需要更智能的量化方法——它们试图在量化过程中保护重要的权重,最小化量化误差对模型输出的影响。GPTQ 和 AWQ 就是两种不同的"保护策略"。


四、GPTQ:基于二阶信息的量化

4.1 核心思想

GPTQ(Generalized Post-Training Quantization)的核心思想是:逐层量化,利用二阶信息(Hessian 矩阵)指导量化顺序和补偿

它的灵感来自经典的 OBQ(Optimal Brain Quantization)方法,后者又追溯到 1990 年代的 Optimal Brain Damage(OBD)——一种基于二阶信息的网络剪枝方法。

4.2 量化误差与补偿

GPTQ 的关键洞察是:量化一个权重不只是把它"四舍五入",还要补偿这个量化引入的误差,让后续权重的量化"知道"前面有哪些误差,从而调整自己的量化策略。

具体做法是:

  1. 将一层的权重矩阵 W 按列(每个输出神经元的权重向量)逐个量化
  2. 量化第 i 列时,计算量化误差 e = W[:,i] - quantize(W[:,i])
  3. 根据二阶信息(Hessian),将这个误差分配到尚未量化的列上,更新它们的值
  4. 这样,尚未量化的列在量化时,已经"考虑"了前面列的量化误差

GPTQ 逐列量化流程

权重矩阵 W
[in_dim × out_dim]

量化第 1 列 W[:,0]
误差 e0 分配到后续列

量化第 2 列 W[:,1]
(已吸收 e0 的影响)
误差 e1 分配到后续列

量化第 3 列 W[:,2]
(已吸收 e0,e1)
误差 e2 分配到后续列

...直到所有列量化完成

4.3 Hessian 矩阵的作用

二阶信息(Hessian 矩阵 H)告诉量化算法:每个权重对输出误差的敏感度有多高。Hessian 的对角线元素 H[i,i] 近似表示权重 i 的"重要性"——H[i,i] 越大,权重 i 的量化误差对输出的影响越大。

GPTQ 用 Hessian 来决定误差的分配权重:误差更多地被分配到"不那么重要"的后续列(Hessian 值小的方向),从而保护重要的权重。

Hessian 如何获得:GPTQ 不需要真实的训练梯度。它使用一批**校准数据(Calibration Data)**前向传播通过模型,收集每层输入激活的统计量,用激活的 Gram 矩阵 X^T × X 近似 Hessian。这就是为什么 GPTQ 需要校准数据(通常 128-1024 条文本样本)。

4.4 GPTQ 的特性

特性 说明
精度 INT8 几乎无损;INT4 精度损失小(优于 RTN)
校准数据 需要 128-1024 条样本
量化速度 中等(逐列量化,单层秒级,整个模型分钟级)
推理兼容性 量化后模型可与 vLLM/TGI 等引擎配合
适用比特 3/4/8-bit

4.5 GPTQ 的局限

  • 逐列量化的串行性:每列量化依赖前面列的结果,难以完全并行化
  • 校准数据敏感性:量化质量受校准数据选择影响
  • 极低比特退化:2-bit 以下精度损失急剧增大

五、AWQ:激活感知的权重量化

5.1 核心洞察

AWQ(Activation-aware Weight Quantization)来自 MIT 的研究团队,它的核心洞察是:并非所有权重都同样重要——激活值大的通道对应的权重更"敏感",需要特殊保护

AWQ 的关键观察

权重矩阵的各通道
对量化误差的敏感度不同

激活值大的通道
其权重对输出影响大

保护这些'重要'通道的权重
其他通道可以激进量化

5.2 等效缩放技巧

AWQ 保护重要权重的方法非常巧妙——它不是降低这些权重的量化比特,而是通过一个缩放变换,等效地将"重要权重"放大、将"不重要权重"缩小,使得整体量化误差更小。

具体地,对于每个通道,AWQ 引入一个缩放因子 s(per-channel):

  • 将重要通道的权重乘以 s(放大),激活值除以 s(缩小)
  • 量化放大后的权重——因为值更大,量化误差的相对比例更小
  • 反量化后,权重除以 s、激活值乘以 s,恢复原始运算

数学上,这个变换是精确等价的(乘除抵消),但对量化有利:重要通道的权重被"放大"后再量化,量化误差相对减小。

s 的选择是关键。AWQ 通过分析校准数据的激活分布,自动搜索每个通道的最优 s 值。

5.3 AWQ vs GPTQ

维度 GPTQ AWQ
核心策略 逐列量化 + 误差补偿 通道缩放 + 保护重要权重
二阶信息 使用(Hessian 近似) 不使用(基于激活统计)
校准数据 需要(128-1024 条) 需要(128-1024 条)
INT4 精度 略优(多数基准测试)
量化速度 中等 (无逐列迭代)
内存占用 量化过程需较多内存 较少
推理速度 相当 相当

在实际使用中,AWQ 和 GPTQ 都是 4-bit 量化的主流选择。AWQ 在多数基准测试中精度略优,且量化过程更快、更省内存。但两者差距不大,更多取决于具体模型和实现。

5.4 AWQ 的特性

特性 说明
精度 INT4 损失极小,多数任务接近 FP16
校准数据 需要(但比 GPTQ 更少也可)
量化速度 快(无逐列迭代)
适用比特 主要 4-bit(也有 8-bit 变体)
引擎支持 vLLM、TGI、TensorRT-LLM 均支持

六、GGUF 与 k-quants:端侧量化的王者

6.1 GGUF 格式简介

GGUF(GPT-Generated Unified Format)是 llama.cpp 项目推出的模型文件格式。它的特点是单文件即模型——文件内嵌了模型权重、tokenizer 配置、模型超参数等全部信息,拷贝一个文件即可部署。

GGUF 格式的详细讨论见第 19 篇。这里聚焦于它的量化方案——k-quants 系列。

6.2 k-quants 量化系列

llama.cpp 的量化方案称为 k-quants,它不是单一的量化比特,而是一系列混合精度量化方案,针对模型不同部分采用不同精度。核心思想是"好钢用在刀刃上"——对精度敏感的部分用高比特,不敏感的用低比特。

常见的 k-quants 量化类型:

量化类型 平均比特 说明 适用场景
Q8_0 8-bit 块量化,每 32 个权重共享一个 scale 高精度需求
Q6_K 6-bit 混合精度,attention 层精度更高 高质量
Q5_K_M 5-bit 混合精度中等版 平衡型
Q4_K_M 4-bit 混合精度中等版 最常用
Q4_0 4-bit 简单 4-bit 速度优先
Q3_K_M 3-bit 混合精度 极限压缩
Q2_K 2-bit 块量化 最小体积

6.3 块量化(Block Quantization)

k-quants 的核心是块量化:将权重分成固定大小的块(如 32 个权重一组),每个块独立计算 scale 和 min/max。

这样做的好处是局部精度更高:不同区域的权重分布可能差异很大,全局 scale 会"平均化"这种差异,而块级 scale 让每个块都能充分利用其比特范围。

块量化示意(Q4_0,块大小 32)

原始权重: [w0, w1, ..., w31 | w32, ..., w63 | ...]

块 0: scale_0, [q0, q1, ..., q31]
每个权重 4-bit

块 1: scale_1, [q32, ..., q63]
每个权重 4-bit

...

6.4 GGUF 量化的定位

GGUF 量化的最大优势是与 llama.cpp 生态的深度集成——llama.cpp 针对 k-quants 各类型都有高度优化的 CPU/GPU Kernel(包括 AVX2/AVX-512/CUDA/Metal 等),在各种硬件上都能高效运行。

维度 GPTQ/AWQ GGUF k-quants
主要使用场景 GPU 服务器推理 CPU/端侧/边缘推理
量化策略 全局或通道级 块级混合精度
推理引擎 vLLM/TGI/TRT-LLM llama.cpp/Ollama
硬件优化 GPU(CUDA)为主 CPU + GPU 全覆盖
灵活性 固定几种比特 十余种量化类型可选

在 AIaaS 平台中,GGUF/k-quants 常用于端侧模型分发——将量化后的 GGUF 文件推送到用户设备或边缘节点运行。


七、SmoothQuant:平滑激活异常值

7.1 激活异常值问题

前面讨论的 GPTQ 和 AWQ 都是权重-only 量化——只量化权重,激活值保持 FP16。但完整推理需要同时做权重和激活的量化(称为 W8A8——权重和激活都 INT8),才能获得计算加速(利用 GPU 的 INT8 Tensor Core)。

权重-only 量化的瓶颈:推理时,权重从显存加载是 INT4/INT8,但计算时仍要反量化为 FP16 再与 FP16 激活做矩阵乘法,无法利用 INT8 计算单元。

W8A8 量化能利用 INT8 Tensor Core 加速计算,但面临一个难题:激活值存在异常值(Outliers)

大模型的激活值中,少数通道的值远大于其他通道(可能大 10-100 倍)。如果对这些异常值和正常值用同一个 scale 量化,正常值会被严重压缩。

7.2 SmoothQuant 的解决方案

SmoothQuant 的思路极其巧妙:将激活值的异常值"搬运"到权重上

数学上,Attention 和 FFN 的核心运算是 Y = X × W(激活 X 乘权重 W)。SmoothQuant 引入一个平滑因子 s(per-channel):

Y = X × W
  = (X / s) × (s × W)    // s 是 per-channel 向量
  = X' × W'                // X' = X/s, W' = s×W

这个变换是数学等价的,但:

  • X' = X / s:大激活通道除以大的 s,异常值被"压平"
  • W' = s × W:对应权重通道乘以 s,权重"吸收"了异常值

因为权重在推理时是固定的,且其分布相对均匀(没有极端异常值),将异常值从激活"搬"到权重后,两者都更容易量化。

数学等价变换

SmoothQuant 平滑后

易量化

激活 X': [..., 0.1, ..., 1.2, ..., 0.2]
异常值被压平

Y = X' × W'

权重 W': 异常通道被放大
但整体仍可量化

量化前(异常值在激活)

难量化

激活 X: [..., 0.1, ..., 50.0, ..., 0.2]
异常值 50.0 难量化

Y = X × W

权重 W: 分布均匀

7.3 SmoothQuant 的定位

SmoothQuant 是一种 W8A8(权重和激活都 INT8) 方案,适合需要 INT8 计算加速的场景。它常与其他方法配合:

  • SmoothQuant 平滑激活 → 然后用 RTN 或其他方法量化为 INT8
  • 或作为 W8A8 的预处理步骤,提升整体量化质量
维度 权重-only(AWQ/GPTQ) W8A8(SmoothQuant)
量化对象 仅权重 权重 + 激活
比特 权重 INT4/INT8,激活 FP16 权重+激活 INT8
计算加速 仅减少显存带宽 利用 INT8 Tensor Core 加速计算
精度 INT4 有损,INT8 近无损 INT8 近无损
适用场景 显存受限 计算受限(大 batch)

八、其他重要量化方案

8.1 BitsAndBytes NF4

NF4(NormalFloat 4-bit)是 BitsAndBytes 库提出的 4-bit 量化方案,专为 QLoRA(量化感知的 LoRA 微调) 设计。

  • 特点:基于正态分布的分位数量化,假设权重服从正态分布,用 4-bit 表示 16 个最优分位点
  • 用途:不是用于推理部署,而是用于在量化模型上做 LoRA 微调——将 70B 模型量化为 4-bit 后,在单张 GPU 上做 LoRA 微调(第 10 篇 QLoRA 已详细介绍)
  • 精度:NF4 + 双重量化,精度损失极小

8.2 FP8:硬件原生低精度

FP8 是 NVIDIA H100(Hopper 架构)引入的硬件原生 8-bit 浮点格式。与 INT8 不同,FP8 是浮点表示(有指数位和尾数位),动态范围更大。

FP8 有两种模式:

模式 指数位 尾数位 动态范围 适用场景
E4M3 4 3 较大 前向传播(权重、激活)
E5M2 5 2 更大 反向传播(梯度)

FP8 与 INT8 量化的关键区别:

  • INT8 是整数:需要 scale 和 zero_point,分布受限
  • FP8 是浮点:天然支持不同量级的值,动态范围大,量化误差小
  • 硬件支持:H100/H200 有原生 FP8 计算单元,吞吐量是 FP16 的 2 倍

重要区分:FP8 不是传统意义上的 PTQ。FP8 通常在训练/推理框架(如 Transformer Engine)中原生支持,通过动态或静态方式确定 scale,不需要独立的"量化转换"步骤。它是硬件级的低精度,而非"把高精度模型压缩为低精度文件"的 PTQ。

维度 INT8 量化(GPTQ/AWQ) FP8
数据类型 整数 浮点
硬件要求 所有 GPU 仅 Hopper+(H100/H200/B200)
动态范围 有限(需 scale) 大(浮点指数)
精度 INT8 近无损,INT4 有损 近无损(优于 INT8)
量化方式 离线 PTQ 转换 运行时动态/静态
计算加速 INT8 Tensor Core FP8 Tensor Core

九、量化方法选型决策矩阵

9.1 综合对比表

方法 类型 比特 校准数据 精度 适用场景 引擎支持
RTN PTQ 权重-only 8/4-bit 不需要 基准 快速验证 全部
GPTQ PTQ 权重-only 3/4/8-bit 需要 GPU 推理 vLLM/TGI/TRT
AWQ PTQ 权重-only 4/8-bit 需要 略优于 GPTQ GPU 推理 vLLM/TGI/TRT
GGUF k-quants PTQ 权重-only 2-8-bit 不需要 中等 CPU/端侧 llama.cpp
SmoothQuant PTQ W8A8 8-bit 需要 近无损 计算加速 TRT-LLM
NF4 QAT 辅助 4-bit - 微调场景 QLoRA 微调 Transformers
FP8 硬件原生 8-bit 动态 近无损 H100 推理 TRT-LLM/vLLM

9.2 选型决策流程

CPU/端侧

GPU

H100/H200/B200

充裕

紧张

压一半(INT8)

压 1/4(INT4)

精度优先

速度优先

开始量化选型

部署硬件?

GGUF k-quants
Q4_K_M 或 Q5_K_M

GPU 型号?

需要极限计算加速?

FP8
(硬件原生,近无损)

显存是否充裕?

SmoothQuant W8A8
(近无损,计算加速)

需要多大压缩?

GPTQ/AWQ INT8
(近无损)

精度 vs 速度?

AWQ INT4

GPTQ INT4

9.3 场景速查

场景 推荐方案 理由
GPU 服务器,显存充裕 FP8(H100)或 FP16 不量化 精度最优
GPU 服务器,70B 模型单卡放不下 AWQ INT4 35GB 可单卡运行,精度损失小
GPU 服务器,需要计算加速 SmoothQuant W8A8 利用 INT8 Tensor Core
CPU 推理 / 端侧部署 GGUF Q4_K_M llama.cpp 生态,多硬件优化
QLoRA 微调 BitsAndBytes NF4 专为量化微调设计
快速原型验证 RTN INT8 最简单,无需校准数据

十、量化对推理性能的实际影响

10.1 精度影响

以 Llama-2-70B 在 MMLU 基准测试上的表现为例(数据为行业典型值,具体因实现而异):

量化方案 模型大小 MMLU 分数 相对 FP16 损失
FP16(基准) 140 GB ~69 0%
GPTQ INT8 70 GB ~68.5 -0.7%
AWQ INT4 35 GB ~67 -2.9%
GPTQ INT4 35 GB ~66.5 -3.6%
GGUF Q4_K_M ~40 GB ~67 -2.9%
GGUF Q2_K ~25 GB ~62 -10%

关键规律:

  • INT8 量化几乎无损(精度损失 <1%),绝大多数场景可直接替代 FP16
  • INT4 量化精度损失 2-5%,在多数任务中可接受,但对复杂推理/数学任务影响较大
  • 2-bit 以下精度急剧下降,仅适合对精度不敏感的简单任务

10.2 性能影响

量化方案 显存减少 推理加速(vs FP16) 说明
INT8 权重量化 50% 1.5-2x(主要来自带宽节约) Decode 阶段受益明显
INT4 权重量化 75% 2-3x 显存受限场景提升最大
W8A8(SmoothQuant) 50% 2-3x(INT8 计算加速) 大 batch 场景提升最大
FP8 50% 1.5-2x(FP8 计算加速) H100 原生支持

注意:量化加速效果与场景高度相关。在显存受限的场景(单卡放不下模型),量化能带来数量级的提升(从"跑不了"到"能跑")。在显存充裕的场景,量化主要带来 1.5-3x 的加速。


十一、量化在 AIaaS 平台中的工程实践

11.1 量化作为模型流水线的一环

在 AIaaS 平台中,量化通常是模型上架流水线的一部分:

精度达标

精度损失过大

训练完成
FP16 权重

精度评估

量化转换
(GPTQ/AWQ/FP8)

量化后精度评估

上架到模型仓库

换用量化方案
或提高比特

关键工程要点:

  1. 精度回归测试:量化后必须在标准基准(MMLU、HumanEval 等)上评估,确认精度达标
  2. 多量化版本管理:同一模型可提供 FP16、INT8、INT4 多个版本,按场景选择
  3. 量化与引擎匹配:不同引擎支持的量化格式不同(vLLM 支持 AWQ/GPTQ,llama.cpp 用 GGUF)

11.2 动态量化选择

高级 AIaaS 平台可以根据用户请求动态选择量化版本

  • 免费/低优先级用户 → INT4 量化版本(低成本)
  • 付费/高优先级用户 → FP16 或 INT8 版本(高精度)
  • 端侧部署用户 → GGUF 量化版本

这种策略需要平台层的模型路由能力,将在模块六(第 37 篇推理调度进阶)详细讨论。


十二、量化技术发展趋势

最后,简要展望量化技术的发展方向:

  1. 更低比特探索:1-bit/2-bit 量化(如 BitNet、GPTQ 2-bit)正在研究,配合 QAT 可能可行
  2. 混合精度量化:模型不同层使用不同比特(敏感层高比特,不敏感层低比特),已有工具支持
  3. FP8 普及化:随着 H100/B200 部署量增加,FP8 将成为高端推理的默认选择
  4. 量化自动化:AutoML 技术自动搜索每个模型的最优量化配置,减少人工调参
  5. KV Cache 量化:不仅量化权重,还量化 KV Cache(第 15 篇提到),进一步降低显存

本篇小结

知识点 核心内容
量化本质 用低精度表示权重,换取显存节约和计算加速,代价是精度损失
PTQ vs QAT PTQ 训后离线转换(主流),QAT 训练时模拟量化(精度更优但成本高)
RTN 最简单的四舍五入量化,不考虑权重分布,是基线方法
GPTQ 逐列量化 + Hessian 二阶信息指导误差补偿,需校准数据,精度好
AWQ 激活感知,保护大激活通道的权重,通过缩放变换减小量化误差,INT4 精度略优
GGUF k-quants 块量化混合精度系列(Q4_K_M 等十余种),llama.cpp 生态,适合 CPU/端侧
SmoothQuant 将激活异常值"搬"到权重上,使 W8A8(权重+激活 INT8)量化可行,利用 INT8 Tensor Core
NF4 BitsAndBytes 正态分数量化,专为 QLoRA 微调设计
FP8 H100 硬件原生浮点格式(E4M3/E5M2),近无损,非传统 PTQ
选型原则 CPU/端侧→GGUF;H100→FP8;GPU INT4→AWQ;计算加速→SmoothQuant

下篇预告

第 18 篇:Speculative Decoding——投机解码如何加速推理 2-3 倍

量化从"精度维度"优化推理,下一篇我们从"算法维度"优化。自回归解码每步只生成一个 Token,是串行瓶颈。投机解码用小模型快速生成候选 Token、大模型并行验证,能将推理加速 2-3 倍。我们将深入 Draft Model 投机解码的原理、接受率与加速比分析,以及 Medusa、EAGLE、N-gram 等变体方案。


如果本篇内容对你有帮助,欢迎点赞收藏!有任何疑问,欢迎在评论区交流。

更多推荐