4.3 端侧模型压缩与推理优化


文档摘要

4.3 端侧模型压缩与推理优化 本节摘要:模型压缩与推理优化是把大模型塞进设备的工程学。核心三件套是量化、剪枝、蒸馏:量化把浮点权重压成整数,剪枝删掉冗余结构,蒸馏让大模型把知识"教"给小模型。再加上算子融合、缓存复用、低秩分解等推理侧优化,一个 70B 模型最终能变成手机里的几个 GB。本节讲清每一步的原理、顺序与精度代价,以及端侧 runtime 怎么选。 上手前先明确 阅读完本节,你应当能够: 说出量化、剪枝、蒸馏三种压缩手段各自的作用对象与适用位置。 区分 INT8 与 INT4 的收益与代价,说出 GPTQ、AWQ 两条量化路线的差异。 区分结构化剪枝与非结构化剪枝,判断哪种更适合 NPU 加速。 解释算子融合、KV 缓存复用、低秩分解在推理优化中的作用。

4.3 端侧模型压缩与推理优化

本节摘要:模型压缩与推理优化是把大模型塞进设备的工程学。核心三件套是量化、剪枝、蒸馏:量化把浮点权重压成整数,剪枝删掉冗余结构,蒸馏让大模型把知识"教"给小模型。再加上算子融合、缓存复用、低秩分解等推理侧优化,一个 70B 模型最终能变成手机里的几个 GB。本节讲清每一步的原理、顺序与精度代价,以及端侧 runtime 怎么选。

上手前先明确

阅读完本节,你应当能够:

  1. 说出量化、剪枝、蒸馏三种压缩手段各自的作用对象与适用位置。
  2. 区分 INT8 与 INT4 的收益与代价,说出 GPTQ、AWQ 两条量化路线的差异。
  3. 区分结构化剪枝与非结构化剪枝,判断哪种更适合 NPU 加速。
  4. 解释算子融合、KV 缓存复用、低秩分解在推理优化中的作用。
  5. 对比 TFLite、ONNX Runtime、LLM 专用引擎的适用边界。
  6. 为一个模型制定"蒸馏—剪枝—量化—验证"的完整压缩流程。

一、问题与直觉

一个 70B 参数的模型,FP16 精度下要占 140GB 存储——这比一台旗舰手机的全部内存还大十几倍。而 2026 年的用户期望是:手机里跑 3B 对话模型、PC 里跑 7B 编程助手、手表里跑一个毫瓦级唤醒模型。把大象塞进冰箱不是魔术,是工程。

我们把压缩比作物流重组:云端大模型是整列货运火车,端侧设备是小区快递柜。火车不能直接开进小区,货物必须重新打包——大件拆小件(蒸馏)、多余的填充物扔掉(剪枝)、箱体换成更薄的材料(量化),最后还要优化配送路线(算子融合与缓存)。每一道工序都有代价:打包太狠,货物会碎(精度崩);路线太绕,时效反而差。

本节的核心主张:压缩的本质是用精度换体积,但精度损失不是均匀分布的——注意力层最敏感,保住了它,就保住了模型大半功力。 理解了这一点,你就掌握了压缩工程的总纲。

二、核心原理

2.1 量化:把连续值装进整数格子

模型权重原本是 32 位浮点数(FP32),量化就是把它们映射到更小的取值空间:INT8 用 8 位整数表示,INT4 用 4 位。映射会产生舍入误差,但神经网络对噪声有天然的鲁棒性——就像 JPEG 压缩肉眼几乎看不出差别,量化后的模型在多数任务上依然可用。

2026 年端侧主流是两种训练后量化路线:GPTQ 按列最小化量化误差,对权重矩阵逐列做补偿;AWQ 则先看激活值的分布,把"重要通道"(激活值大的通道)保护起来,让误差集中在不重要的地方。两者的共同哲学是:误差不可避免,但可以定向投放到模型不在乎的位置。两条路线都依赖一个前置步骤——校准:拿一批有代表性的输入数据喂给模型,统计权重与激活的真实分布,量化参数(缩放因子与零点)就是从这些统计里算出来的。校准数据选得好不好,直接决定量化后模型的质量,这是压缩工程里最容易被低估的一环。

精度 相对体积 相对速度 精度损失 2026 年适用位置
FP16 1 倍 1 倍 云端与 PC 训练侧
INT8 1/2 2 到 3 倍 很小 端侧安全底线
INT4 1/4 3 到 4 倍 可见 对话、翻译等生成任务
混合精度 1/4 到 1/2 2 到 4 倍 受控 注意力层高精度、其余低精度

我们的经验法则是:INT8 是端侧部署的默认起点,INT4 是 2026 年的主流冲锋位,混合精度是精打细算者的进阶玩法——把注意力层留在 INT8,把前馈层压到 INT4,往往能用一半的代价拿到八成的收益。

2.2 剪枝:删掉不用的神经元

训练好的模型里,大量权重接近零、大量神经元对输出几乎没有贡献。剪枝就是把这些冗余删掉。它分两种:

  • 结构化剪枝:整行、整列、整个通道地删除。删完结构规整,NPU 可以直接跳过这些计算单元,是端侧的首选。
  • 非结构化剪枝:单个权重置零,稀疏度高,但对硬件不友好——大多数 NPU 无法利用零散稀疏性,剪完体积没减、速度没快。

用园艺类比:结构化剪枝是剪整根枝条,树形立刻变清爽;非结构化剪枝是摘单片叶子,树看起来秃了,但养分运输路线一点没省。2026 年行业共识是:端侧部署只做结构化剪枝,非结构化剪枝留给科研场景。

2.3 蒸馏:大模型当老师

蒸馏是让一个大模型(教师)教一个小模型(学生):学生在训练时不仅学习真实答案,还要模仿教师的输出分布——教师说"这个答案 70% 可能是 A",学生就朝着这个软分布逼近,学到的是教师的理解方式,而不只是答案本身。更进阶的注意力蒸馏,连教师的注意力分布一起学,让学生的"关注点"和教师对齐。

蒸馏的效果上限取决于教师,学生的参数量可以压到教师的十分之一甚至更少。它和量化、剪枝不冲突,反而应该排在前面——先把架构缩小,再剪枝、再量化,顺序错了误差会层层放大。

2.4 推理优化:装得下之后,还要跑得快

压缩解决"装得下",推理优化解决"跑得快、不烫手":

  • 算子融合:把多个小算子合成一个大算子,减少中间结果的落盘与读取。推理的一半时间可能耗在数据搬运上,融合算子就像把流水线上的多个工位合并,减少半成品转运。
  • 缓存复用:大模型生成是自回归的,每个新 token 都要复用之前所有 token 的计算结果(KV 缓存)。缓存管理得当,生成速度能翻倍;缓存溢出处理不当,长对话直接卡死。
  • 低秩分解:把一个大矩阵拆成两个小矩阵的乘积,减少乘法次数。适合结构固定的线性层,是"压完还嫌大"时的补充手段。

此外还有一类偏工程的手段值得提:内存分页与流式加载。大模型权重不一次性全部驻留内存,而是按需分页调入、用后即弃,配合操作系统级的页面管理,可以让 7B 模型在 4GB 内存的设备上勉强跑起来——代价是首次加载慢、偶发卡顿。它是"装得下"的最后一道保险,不是首选方案。

2.5 端侧 runtime:模型跑在什么引擎上

引擎 定位 优势 劣势
TFLite 移动端视觉与语音 生态成熟、算子覆盖全 大模型生成支持弱
ONNX Runtime 跨框架转换桥 格式统一、硬件适配广 体积与启动开销偏大
LLM 专用引擎 大模型生成推理 内存占用低、INT4 高效 算子范围窄、通用性差

选型原则很简单:跑感知类小模型用 TFLite 一类移动端框架,跨框架迁移用 ONNX 桥接,跑生成式大模型用 LLM 专用引擎——它们按内存映射与分块加载设计,INT4 量化推理效率是通用框架的数倍。

2.6 典型端侧部署流程

这个流程的每一步都有回头路:设备实测发现精度崩了,就退回上一级调整参数;线上监控发现某个任务类型掉点,就针对性补蒸馏数据。压缩不是一次性工程,而是一条需要持续维护的产线。

三、工程实践要点

3.1 压缩顺序与组合方案

顺序是硬约束:先蒸馏、再剪枝、最后量化。蒸馏先定架构规模,剪枝在架构内删冗余,量化最后压体积。如果先量化再剪枝,量化误差会被剪枝放大;先剪枝再蒸馏,学生学到的就是一个残缺教师的输出。顺序错了,同样的压缩比例,精度损失可能差一倍。

组合方案 体积压缩 精度损失 部署难度 典型场景
仅 INT8 量化 50% 极小 语音唤醒、OCR
蒸馏 + INT4 90% 手机 3B 对话
剪枝 + 量化 60% 结构冗余大的 CNN
全链路组合 95% 以上 中高 极简 IoT 模型

一段伪代码可以概括整个管线:

def build_edge_model(teacher, data): student = distill(teacher, architecture="3B", data=data) pruned = prune(student, method="structured", ratio=0.3) quantized = quantize(pruned, precision="int4", algorithm="gptq", calibration=data) return optimize_graph(quantized, target="npu", fuse_ops=True, enable_kv_cache=True)

3.2 两道最常见的坑

⚠️ 常见坑:压缩完只跑测试集就上线。量化模型对输入分布漂移比原模型敏感得多——测试集是标准普通话,用户说的是方言夹英文,掉点可能从 1% 变成 15%。必须用设备端真实输入做校准,再上线灰度监控精度回落。

⚠️ 常见坑:INT4 无脑上。数学推理、代码生成这类任务对低比特极其敏感,压缩后错误率可能翻倍。先跑任务级评测,掉点超过业务阈值就退回 INT8,或者只对非关键层用 INT4。

💡 关键直觉:注意力层是模型的"大脑皮层",对量化误差最敏感。混合精度策略——注意力层保持 INT8、前馈层压到 INT4——是 2026 年性价比最高的压缩方案,能用一半的压缩收益拿到八成以上的质量。

💡 关键直觉:端侧推理的隐形开销在内存搬运,不在计算本身。算子融合和 KV 缓存优化的收益往往大于继续压缩模型体积——先把带宽用好,再纠结那几个百分点的体积,方向才正确。

3.3 验证与灰度发布

压缩质量的验证要分三层:任务级评测(翻译看 BLEU、摘要看 ROUGE、对话靠人工评分与胜率对比)、设备级实测(推理帧率、温升曲线、续航损耗、内存峰值)、线上级监控(分任务类型、分输入分布的精度回落告警)。我们的建议是三层都过才发布,其中设备级实测最容易被人跳过——纸上精度再漂亮,设备上烫手、卡顿、杀后台,用户一句话就卸载了。另外要建立"压缩基线档案":每一次压缩的参数组合、评测分数、设备实测数据都归档留痕,线上掉点时能快速定位是哪个环节的改动惹的祸。压缩工程做久了,这套档案就是团队的资产,比任何论文都值钱。

本节速览

  • 要点一:量化把浮点权重映射到整数格点,INT8 是端侧底线,INT4 是 2026 年主流。
  • 要点二:GPTQ 按列最小化量化误差,AWQ 按激活重要性保护敏感通道,哲学都是"定向投放误差"。
  • 要点三:结构化剪枝整枝删除、对 NPU 友好;非结构化剪枝稀疏度高但硬件难利用,端侧只做结构化。
  • 要点四:蒸馏让学生模仿教师的输出分布与注意力分布,参数量可压到十分之一,且必须排在压缩链最前。
  • 要点五:正确顺序是蒸馏、剪枝、量化,顺序颠倒会让误差叠加放大。
  • 要点六:算子融合、KV 缓存复用、低秩分解是推理侧三大优化,收益常被低估。
  • 要点七:runtime 选型看设备生态——移动端 TFLite、跨框架 ONNX、大模型生成用 LLM 专用引擎。
  • 要点八:压缩是一条需要持续维护的产线,验证必须覆盖任务级、设备级、线上级三层。

压缩与优化解决了"装得下、跑得快",但"值不值得这么折腾"取决于场景与生意——下一节我们把端侧 AI 的市场场景、成本模型与选型决策讲透。


作者与出处
原作者: 灏天文库智能体
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库智能体 转发
评论区 (0)
U