部署:量化剪枝与边缘推理

进阶06-实践工程预计 35 分钟部署量化边缘推理TensorRTONNX

前置知识点

kp-026 训练调优:增强、迁移与评估

一句话定义

部署把训练框架里的模型搬到目标硬件上稳定运行:经导出(ONNX)与编译优化(TensorRT 等推理引擎),配合量化(FP32 → INT8)、剪枝与蒸馏压缩体积与时延,工程核心是保证「部署后的精度与训练侧口径一致」。

为什么重要

模型不部署就没有价值,而「实验室 mAP」与「产线 mAP」之间的鸿沟是视觉工程最昂贵的意外来源:预处理不一致、量化掉点、NMS 实现差异,任何一处都能让离线 52% 的模型上线只剩 40%。掌握部署全链路,才能对「能不能实时、能便宜多少」给出负责任的回答。

直观类比

部署像把一位名厨(训练框架)的菜谱交给连锁店后厨(推理硬件)执行:先誊写成标准作业书(ONNX 导出),再按门店灶具重新设计火候(引擎编译与算子融合);量化是把「精确到克」的配方改成「精确到勺」——出品更快、食材更省,但要先试菜(校准)确认客人吃不出差别。

前置知识

kp-026(训练与评估协议);kp-018(检测模型的输入输出形态)。

核心概念

原理与机制

INT8 量化的数学本质是仿射映射:浮点张量 x 经 scale s 与零点 z 映射为整数 q = round(x/s) + z,推理中的卷积/矩阵乘全部落到整数指令(INT8 Tensor Core/DSP/NPU),时延与功耗成倍改善;PTQ 用几百张校准图统计各层激活范围确定 s、z,代价是约 0.5–2 个点的精度损失(检测头与后处理更敏感),掉点超限则上 QAT。工程链路:PyTorch 导出 ONNX → 引擎 builder 编译为硬件专属引擎文件(算子融合、内核自动调优)→ 运行时绑定输入输出张量。最容易翻车的不是算子而是「口径」:训练用 RGB/0–1 归一化、部署用了 BGR/0–255,指标静默掉十几个点;letterbox 的填充色与训练不一致同理。

公式与模型

量化: q = round(x / s) + z , 反量化: x ≈ s·(q − z) 对称量化: s = max(|x|) / (q_max − q_min) / 2 的简化形式(z = 0) 有效比特吞吐对比: INT8 相对 FP32 常见 2 至 4 倍时延收益(视硬件)

图示

训练模型 ONNX 引擎编译 量化/蒸馏 设备运行:预处理→推理→后处理 口径三查:色彩顺序 / 归一化 / letterbox 评测必须用部署引擎重跑

实例与案例

实时检测上 Jetson:YOLOv8s 经 TensorRT FP16 得约 2 倍提速,再 INT8 PTQ 校准后 mAP 掉 0.8 个点、时延再减半,达标上线;掉点超限时对检测头保留 FP16 混合精度。手机端 OCR:NCNN + INT8 + 剪枝后的轻量骨干,端上冷启动毫秒级。服务端吞吐:视频流多路分析用动态 batch 提高吞吐,但单路时延随之上升——批大小是时延/吞吐的显式旋钮。

# TensorRT 风格推理(伪代码骨架)
engine = build_engine('model.onnx', fp16=True, int8=True, calib=Calibrator(images[:500]))
ctx = engine.create_execution_context()
pre = letterbox(img, size=640, color=114).astype('float32') / 255.0   # 与训练管线一致
out = ctx.execute([pre])
boxes = nms(decode(out), conf=0.25, iou=0.5)

常见误区

与其他知识点的关系

被部署对象是 kp-018/019 训练出的检测与分割模型;「部署侧重跑评测」是 kp-026 评估纪律在部署侧的延伸;端上人脸比对类应用须遵守 kp-031 的合规边界。

自测题

  1. PTQ 与 QAT 的取舍原则是什么?

答案要点:PTQ 零训练成本、掉点通常可接受时优先;掉点超限或部署精度敏感(检测头/后处理)再上 QAT。

  1. 「实验室 mAP 52%、上线 41%」最可能的排查顺序?

答案要点:先查预处理口径(色彩/归一化/letterbox),再查后处理(NMS 参数/解码),最后量化掉点回归;每步用部署引擎重跑评测定位。

  1. 为什么 benchmark 要预热并报 P99?

答案要点:首次推理含编译与内存分配不计入稳态;平均时延掩盖长尾卡顿,实时性承诺应基于分位数。

延伸阅读

相关知识点

kp-018 YOLO 系与单阶段检测kp-026 训练调优:增强、迁移与评估