端侧部署走到最后一步,量化基本绕不过去。但量化有个分水岭:PTQ(训练后量化)做得动就直接用,做不动才需要上 QAT(量化感知训练)。这篇文章拆开讲这个判断该怎么下,以及真开了 QAT 之后要付什么代价。
先看清楚基础数字
INT8 量化的映射关系是教科书上的那一行:q = round(x / scale + zero_point),scale 和 zero_point 来自校准集统计。按 TensorFlow Model Optimization 的说明,用默认 API 参数时模型体积可以压到原来的四分之一,在它测试过的 CPU 后端上延迟大约缩短到原来的 2/3 到 1/4。
这两个数字是卖给老板看的,不是给工程判断用的。真实项目里占板子的往往是校准集:一般从训练集里随机抽 100 到 500 个样本,要覆盖各种典型场景。校准集分布一旦偏了,PTQ 后的精度会掉得很难看,而且掉得失真——你在本地测试集上看到 drop 0.8%,上线后发现某类输入直接崩掉,大概率就是校准集没有覆盖那种情况。
什么时候 PTQ 就够了
一个粗略的工程经验:分类任务 top-1 精度下降在 1% 以内,PTQ 就可以收了。语音唤醒、关键词识别这类任务容忍度再高一些;如果是文档问答、OCR 后处理这种本来就靠小模型做工的端侧场景,掉 1% 有可能改变一整条链路的输出质量,得具体看下游对错误的敏感度。
实操顺序建议固定在:先用 TFLite 的工具链跑一轮 PTQ,拿到精度损失,再决定要不要继续。别一上来就上 QAT,QAT 会增加训练时间,资料里给的量级是 30% 到 50%,前提是你有可用的训练代码和算力。多一轮训练循环意味着多一轮调参、多一轮回归,项目排期上要把这块算进去。
QAT 在做什么,以及你付出的不只是训练时间
QAT 的核心是在浮点模型里插入伪量化节点,前向时模拟量化带来的取整和截断误差,让训练过程 把这些误差吸收进权重里。落到部署工具链上,最后要把伪量化模型转成定点模型。D-Robotics 的 X5 平台文档里有个值得注意的表述:QAT 从原理上和普通训练无异,难点在于你得先搞清楚目标硬件的限制,并按照这些限制搭建伪量化模型;工具的价值是做在你提供的浮点模型上自动插算子。
这句话背后的重点是硬件限制前置。你用哪个后端、NPU 支持哪些算子、激活值的量化粒度是 per-tensor 还是 per-channel、哪几层只能保持高精度,这些都决定了伪量化算子的插法。同一份 QAT 训练代码换一颗芯片,未必能直接跑。
TensorFlow Model Optimization 的文档也提醒了一件事:代码目前只覆盖一部分模型架构。你在模型里加了个不太常见的算子,很可能得自己补梯度或退回浮点。
伪量化节点的统计方法要选
伪量化里 scale 和 zero_point 怎么来,有两条路。基于统计的方法是先从校准数据推出一组固定参数,插进去当常量;基于学习的方法是让这组参数跟着训练一起更新。前者更接近 PTQ 的部署形态,数值更可控;后者灵活性高,但训练更慢、收敛更飘。做端侧文生音频或者小语言模型的时候,激活值分布有长尾,固定 scale 容易切掉尾部峰值,这种情况下基于学习的方式收益会更明显,但它会把训练轮次和显存占用一起抬高。
一个容易踩的坑:量化救了延迟,未必救了吞吐
INT8 在 NPU 上通常快得明显,到 CPU 上则要看后端是否真的走了定点整数指令。有些框架的 INT8 实现会先把数据反量化回浮点再用 SIMD 算,这时实测速度可能比 FP32 还慢。所以精度和延迟要分开验证:精度在离线集上比,延迟在目标设备的真实后端上跑,不是在你开发机的模拟器里跑。
决策清单
- PTQ 第一轮,看精度损失;分类任务 1% 以内即可接受。
- 校准集 100 到 500 条,必须覆盖上线后预期的长尾输入;覆盖不到的那类样本要单独评估。
- 还要看硬件算子支持表:某些层如果能不量化,就别强行量化,混合精度保留少数敏感层往往比全 INT8 QAT 划算。
- 上 QAT 之前估算训练预算:时间加 30% 到 50%,以及后续每一版训练脚本都要重新过一遍伪量化节点回归。
- 验收时分开跑三个指标:离线精度、目标芯片上的首层延迟、端到端首次输出时间。三者不一定同向。
端侧小模型这波(包括在 Windows 设备上跑本地小模型的那类方案),量化给出的空间主要是体积和延迟的压缩。但如果精度敏感、后端刁钻,QAT 不是一键开关,而是一段要跟硬件厂商文档一起读的工程流程。先用 PTQ 拿到线上的精度上限,再决定要不要花那份训练预算。
转载请注明出处: 皮哈皮阿
本文的链接地址: https://blog.phpat.com/ai-frontier/639.html
微信或手机浏览器扫一扫,随时随地随心阅读与分享
-
多智能体不是银弹:编排、通信与成本取舍
我们试过让五个 Agent 开会,结果它们花了二十分钟争论谁该先说话,最后交上来的方案还不如一个单 Agent 加两个工具。多智能体不是不能做,是很多团队做早了。
2026/10/18
-
AI 浏览器用了一个月,我还是回到了地址栏
我试着把 AI 浏览器当主力用了一个月。模型不差,功能也不少,但最后让我放弃的是一件很朴素的事:地址栏比对话框更快、更确定。AI 浏览器到底卡在哪?
2026/10/20
-
世界模型被吹了两年,真正难的不是生成视频
看世界模型的演示视频,很容易产生“就差一点”的错觉。可一旦你试图在里面做一个动作,问题就全暴露了。生成一段像世界的视频,和拥有一个能交互的世界,是两件难度完全不同的事。
2026/10/20
-
个人 Agent 与常驻智能体:长期记忆、主动性与隐私边界
我让一个常驻 Agent 帮我盯快递。包裹签收三天后,它还在提醒我“预计今天送达”。长期记忆、主动性和隐私边界,决定了个人 Agent 是助手还是负担。
2026/10/20
-
思维链压缩到 20%,还能保住数学推理的准确率吗
把推理模型的思维链砍到原来的 20%,多数压缩方法会崩,但 Extra-CoT 在 MATH-500 上还保住了近半准确率。拆一下它怎么用公式原子性和分层奖励,以及这些结果在别的任务上不一定成立。
2026/10/22
-
投机解码落地:草稿模型对齐与逐利陷阱
草稿模型选型、对齐和接受率曲线决定了投机解码的最终收益。批量越大加速衰减越多,低接受率、短输出和高温采样可能让线上请求更慢。草稿对齐和持续监控接受率是基础工作量,而不是换个配置文件就能兑现一次加速。
2026/10/23
京公网安备11011402053654 
@muffin:链接已更新,分类图像功能...
AI网址导航模版图标库更换指南
作者大大,图标库邀请链接失效了,麻烦更新...
AI网址导航模版图标库更换指南
太好看了,快点更新!
友情链接
@戴墨镜的刘备:哈喽,路过点赞。
vue.js组件之手写签名板vue-signature-simple
太好看了,快点更新!太棒了!👍真的很赞!
vue.js组件之手写签名板vue-signature-simple
你写得非常清晰明了,让我很容易理解你的观...
Emlog插件RSS订阅器发布