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

深度学习量化双雄:PTQ 与 QAT 的技术剖析与实战

深度学习量化双雄:PTQ 与 QAT 的技术剖析与实战

写给想把 FP32 模型卷成 INT8 又不掉精度的你。


1 量化的动机

  • 体积:FP32 → INT8,模型大小 ×4 倍压缩
  • 带宽:内存/显存占用 ×4 倍降低
  • 算力:INT8 Tensor Core 峰值 ×4 倍提升
    一句话:量化 ≈ 免费午餐

2 训练后量化(PTQ)

2.1 原理

  1. 在校准集上跑一次前向,统计 权重/激活 的 min/max(或 99.9 % percentile)。
  2. 按公式计算 scalezero-point
    对称量化(权重常见):
    scale = max(|w|) / 127
    zero_point = 0
    
    非对称量化(激活常见):
    scale = (max - min) / 255
    zero_point = round(-min / scale)
    
  3. 将 scale/zero-point 写入引擎,推理时作为 常量乘子 直接吸收进 kernel,无额外计算

2.2 粒度

对象推荐粒度scale 个数
权重per-channel(每输出通道)OC
激活per-tensor(整张特征图)1

2.3 一键脚本

trtexec --onnx=model.onnx --int8 \--calibDataDir=./calib_imgs \--saveEngine=model_int8.engine
  • calib_imgs/ 只需原始图片,无标签
  • 10 分钟生成可部署引擎。

2.4 优缺点

  • ✅ 零训练、零侵入
  • ❌ 精度损失 1–3 %,对异常值敏感

3 量化感知训练(QAT)

3.1 原理

在训练图里插入 FakeQuant 节点

w_q = round(clip(w / scale)) * scale
  • 前向:模拟量化误差
  • 反向:STE 把梯度直接传给 FP32 权重,让网络学会“抗量化”的位置。

3.2 粒度

  • 默认:权重 per-channel,激活 per-tensor
  • 最新研究:scale/zero-point 亦可 可学习参数,端到端更新。

3.3 PyTorch 30 行示例

import torch, torchvision, torch.quantization as tqmodel = torchvision.models.resnet18(pretrained=True)
model.train()
tq.prepare_qat(model, qconfig=tq.get_default_qat_qconfig('fbgemm'))opt = torch.optim.AdamW(model.parameters(), 1e-4)
for x, y in train_loader:loss(model(x), y).backward()opt.step()torch.jit.save(tq.convert(model.eval()), 'qat.pt')
  • 额外训练 1–5 epoch
  • 精度损失 <0.5 %

3.4 优缺点

  • ✅ 精度几乎无损,支持 4-bit 超低比特
  • ❌ 需完整训练集和 GPU 时间

4 选型建议

场景推荐
模型已训练好,精度要求不苛刻PTQ
精度敏感,可接受再训练QAT
正在训练新模型直接 QAT

5 技术小结

  • scale/zero-point 是编译期常数,推理时 无额外延迟
  • PTQ 先上车,QAT 再精雕
    量化不再是黑魔法,而是标准化流水线。
http://www.xdnf.cn/news/19274.html

相关文章:

  • 异步编程以及promise的一些拓展
  • 【lua】二进制数据打包和解析
  • Nginx反向代理及配置
  • 趣味学RUST基础篇(枚举模式匹配)
  • C语言强化训练(1)
  • Sequelize ORM - 从入门到进阶
  • SIEPIC工具和PDK安装
  • FastAPI 核心实战:精通路径参数、查询参数与数据交互
  • 解决FreeBSD无法使用pkg安装任何程序
  • 入站5年,首创3年,习惯养成4个月,从问题求助者到方案提供者转变,我的CSDN之旅
  • 刚上线的PHP项目被攻击了怎么办
  • 系统架构评估
  • 7.1elementplus的表单
  • Wi-Fi技术——网络安全
  • 代码分析之符号执行技术
  • 鸿蒙Next媒体展示组件实战:Video与动态布局全解析
  • 心路历程-基础命令3
  • 学习笔记:MySQL(day1)
  • 复现 RoboDK 机器人校准功能(以Staubli TX2‑90L / TX200机械臂为测试对象)
  • 腾讯智影AI绘画
  • DriveDreamer4D
  • Qt线程提升:深度指南与最佳实践
  • HTS-AT模型代码分析
  • More Effective C++ 条款17: 考虑使用缓式评估(Consider Using Lazy Evaluation)
  • 快速傅里叶变换FFT推导以及运算复杂度分析
  • 【深入解析——AQS源码】
  • 机器视觉学习-day11-图像噪点消除
  • audioLDM模型代码阅读(二)——HiFi-GAN模型代码分析
  • 对于STM32工程模板
  • 坚鹏请教DEEPSEEK:请问中国领先的AI智能体服务商有哪些?知行学