1. 课程导论与知识图谱

大家好,我是这门课的主讲。在AI落地这件事上摸爬滚打了六七年,我最大的感触就是:模型做出来只是第一步,能跑起来、跑得快、跑得省,才是真本事。

今天这第一讲,我们不敲代码,也不调参数。我想先带你站在高处,把整条链路看清楚——知识蒸馏、模型压缩、部署优化,这三件事到底是什么关系?为什么非做不可?以及,这门课能帮你走到哪一步。

为什么需要模型压缩?

先讲个我自己的经历。几年前我参与一个手机端的人脸识别项目。模型在GPU上跑,精度92%,一切完美。结果一放到骁龙855上,推理一次要800毫秒,手机直接发烫。用户刷脸解锁,等了一秒多——这产品根本没法用。

你想想看,一个ResNet-152,参数量超过6000万,计算量高达11 GFLOPs。而手机芯片的算力就那么点,还要同时跑相机、UI、网络。模型再大,也塞不进去。

说白了,模型压缩不是锦上添花,是生死线。它要解决三个核心矛盾:

  • 精度 vs 速度:模型小了,推理快了,但精度不能掉太多
  • 算力 vs 功耗:边缘设备算力有限,电池就那么一块
  • 通用 vs 定制:大模型什么都能做,但部署时只需要特定能力

核心观点:模型压缩的本质,是在精度损失可控的前提下,把模型从“实验室巨兽”变成“产品级轻骑”。

全链路知识图谱

这门课覆盖的技术栈,我画了一张图。你可以把它当作整个课程的地图。

图像分类模型压缩与部署全链路知识图谱 原始大模型(ResNet / ViT) ① 知识蒸馏 ② 模型剪枝 ③ 量化压缩 轻量化模型(小模型 / 量化模型 / 稀疏模型) 部署优化:ONNX / TensorRT / NCNN / TFLite / OpenVINO 目标设备:手机 / 边缘盒子 / 嵌入式 / 浏览器 课程覆盖:从 PyTorch 训练 → 蒸馏剪枝量化 → ONNX 导出 → TensorRT 加速 → 边缘端部署 全流程

这张图其实就回答了三个问题:从哪来、怎么瘦、往哪去。

  • 从哪来:一个训练好的大模型,可能是ResNet、MobileNet、ViT
  • 怎么瘦:蒸馏、剪枝、量化,三种手段可以组合使用
  • 往哪去:ONNX做中间表示,TensorRT/NCNN做推理优化,最终落到目标硬件

我的建议:别想着一步到位。我见过太多人一上来就搞量化,结果精度崩了也不知道是哪里出的问题。正确的做法是:先蒸馏,再剪枝,最后量化。每一步都验证,每一步都留回退点。

三种压缩技术的对比

我把蒸馏、剪枝、量化放在一起做了个对比。这张表你后面每学完一章都可以回来看一眼,能帮你保持全局感。

技术 核心思想 压缩比 精度影响 部署友好度
知识蒸馏 大模型教小模型,学“软标签” 2x - 10x 低(通常 < 1%) 高(小模型结构灵活)
模型剪枝 去掉不重要的通道/层 2x - 5x 中(需微调恢复) 中(依赖框架支持)
量化压缩 FP32 → INT8,减少位宽 3x - 4x 低-中(取决于校准) 高(硬件原生支持)

嗯,这里要注意:这三种技术不是互斥的。我在实际项目中,经常是蒸馏出一个小模型,然后做剪枝,最后量化到INT8。三步走下来,模型体积能缩小到原来的1/10,推理速度提升5-8倍,精度只掉1-2个点。

课程目标与学习路径

这门课的目标很明确:让你能独立完成一个图像分类模型从训练到部署的全流程优化。

具体来说,学完这门课,你应该能:

  1. 掌握知识蒸馏的核心方法:从Logit蒸馏到Feature蒸馏,从离线蒸馏到在线蒸馏
  2. 动手实现模型剪枝:结构化剪枝、非结构化剪枝,以及如何微调恢复精度
  3. 完成量化压缩:PTQ(训练后量化)和QAT(量化感知训练),以及校准数据集的使用
  4. 部署到真实硬件:ONNX导出、TensorRT加速、NCNN在手机端的集成
  5. 掌握调试与优化方法:精度下降时怎么定位问题,速度瓶颈怎么分析

我曾经踩过的坑:有一次做QAT量化感知训练,训练完精度96%,一部署到TensorRT上直接掉到82%。查了两天才发现,是校准数据集和真实数据分布不一致。后来我养成了一个习惯——校准数据集一定要从真实部署场景中采样,不能用训练集随便凑。

课程路线图

30章的内容,我把它分成五个阶段。你可以把它当作一张行军地图:

阶段 章节 核心内容
基础篇 1 - 4 知识图谱、环境搭建、基线模型训练、精度评估
蒸馏篇 5 - 11 Logit蒸馏、Feature蒸馏、多教师蒸馏、蒸馏实战
压缩篇 12 - 19 剪枝、量化、混合压缩、精度恢复策略
部署篇 20 - 26 ONNX导出、TensorRT、NCNN、OpenVINO、边缘端部署
调试篇 27 - 30 性能分析、精度调试、自动化流水线、项目实战

我个人习惯是,每学完一个阶段,就停下来做个小的项目验证。比如学完蒸馏篇,就蒸馏一个MobileNetV3出来,和原始模型比一比精度和速度。这样学到的知识才是活的。

你需要准备什么

在开始之前,我建议你准备好这些:

  • 硬件:一台带GPU的电脑(RTX 3060以上就够用),或者云服务器(AutoDL、Colab都行)
  • 软件:PyTorch 1.10+、CUDA 11.x、Python 3.8+
  • 数据集:CIFAR-100或ImageNet子集(课程会提供下载脚本)
  • 心态:做好反复调试的准备。模型压缩这件事,有时候调一整天就为了涨0.3个点

一个小建议:别在环境配置上花太多时间。我见过有人配环境配了三天还没开始写代码。直接用我提供的Docker镜像,或者用Colab的预装环境,十分钟就能跑起来。