L3 · 专题文章

量化

模型压缩部署优化显存优化推理加速

本页只讲 4 条最关键判断,不写百科

4核心点
先记住量化不是无损压缩,校准数据质量决定成败

不掌握校准集代表性与粒度选择,量化必崩。

LIVE
CORE 量化
01 WHAT

是什么

将模型权重与激活从 FP32/FP16 降为 INT8/INT4 等低精度表示,以压缩体积与加速推理。

02 WHY

为什么

推理工程师与算法工程师在显存受限或延迟敏感场景下,用它换取可部署性。

03 HOW

怎么做

选定量化位宽与校准集,运行 PTQ 或 QAT,导出量化权重并验证精度。

04 WHEN

什么时候

显存不足或延迟超标时启用;对精度极度敏感或激活分布极端的任务应慎用。

FOCUS

先记住这些

只留最重要的判断,细节见下方实践
01 位宽与粒度

不掌握就不能用

INT8 通常可接受,INT4 需验证;per-channel 量化比 per-tensor 更保精度但计算更复杂。

02 校准数据

最高频踩坑

校准集若偏离线上分布,量化后精度断崖;需覆盖长尾与边界样本。

03 PTQ 与 QAT

与最近邻的差异

PTQ 无需训练,适合快速部署;QAT 在训练中模拟量化,精度更高但成本高。

04 推理兼容

部署前提

量化模型必须与推理引擎的算子支持匹配,否则无法加载或加速失效。

PROBLEM / POSITION / INTERFACE

先弄清它为什么存在,以及谁在使用

不从历史开始,从真实工作关系开始。
  1. 01 解决的问题

    模型体积过大无法装入单卡,或推理延迟超出业务 SLA。

    不量化则无法部署或成本过高;盲目量化会导致精度断崖式下降。

    成功标准
    在可接受精度损失内,显存与延迟显著下降,且线上表现稳定。
  2. 02 AI 生态位

    位于训练后与推理前的压缩环节,上游接训练权重,下游接推理引擎。

    上游
    依赖训练完成的浮点权重与代表性校准数据。
    下游
    为推理框架提供低精度权重与量化参数,支撑低延迟服务。
  3. 03 人的生态位

    工程师负责选择策略、准备校准数据、验证精度与回退。

    适合使用
    显存受限、延迟敏感、且任务对精度波动有一定容忍度。
    不必使用
    任务对精度极度敏感、激活分布极端或校准数据无法代表线上分布。
  4. 04 独特价值

    在不改模型结构的前提下,显著降低显存占用与推理延迟。

    校准数据偏差、激活分布异常与粒度选择不当会引发精度雪崩。

    复杂度判断
    复杂度不是功能数量,而是控制与验证成本。

INTERFACE FLOW

谁在操作,信息怎样流动

  1. WHO OPERATES

    HUMAN选择量化位宽、准备校准集、评估精度与决定回退。

    TOOL执行校准、生成量化参数、导出量化模型。

  2. INPUT

    训练好的浮点权重与覆盖真实分布的校准数据。

  3. CONTROL

    位宽选择、量化粒度、校准集规模、是否启用 QAT。

  4. OUTPUT

    量化后的权重文件与推理配置,供部署引擎加载。

CODE / PYTHON最小 Python 调用
import os
from transformers import AutoModelForCausalLM, AutoTokenizer
from optimum.int8 import Intel8Quantizer

model_id = "your-model-id"
model = AutoModelForCausalLM.from_pretrained(model_id)
tokenizer = AutoTokenizer.from_pretrained(model_id)

quantizer = Intel8Quantizer(model)
calibration_dataset = ["sample text 1", "sample text 2"]
quantizer.calibrate(calibration_dataset)
quantized_model = quantizer.export()
quantized_model.save_pretrained("./quantized_model")

最短闭环:加载模型 → 校准 → 导出量化权重。真实数据需替换。

JSON / RESPONSE典型返回(示意)
{
  "model_path": "./quantized_model",
  "quantization_config": {
    "bits": 8,
    "granularity": "per_channel",
    "method": "ptq"
  },
  "status": "success",
  "metrics": {
    "original_size_mb": 1200,
    "quantized_size_mb": 300,
    "accuracy_drop": 0.02
  }
}

PRACTICE

量化部署检查清单

校准集覆盖线上分布与长尾样本
位宽选择与任务精度容忍度匹配
量化粒度与推理引擎算子支持一致
导出后验证精度与延迟是否达标
准备回退方案以应对线上异常

FAQ

常见问题

选型、用法与失败,不复述定义。
01量化和剪枝有什么区别?

量化降精度保结构,剪枝去冗余改结构;量化更易部署,剪枝需重新训练。

避免混淆压缩策略导致选型错误。
02最小可用方式是什么?

用 PTQ + INT8 + 代表性校准集快速导出,验证精度后部署。

帮助快速验证可行性。
03什么时候不需要量化?

显存充足、延迟达标或任务对精度极度敏感时,直接部署 FP16。

控制系统成本与风险。
04量化后精度下降怎么办?

检查校准集分布、尝试 per-channel 量化或切换 QAT。

提供可操作的排错路径。