1. 课程导论与知识图谱
大家好,我是这门课的主讲。在AI落地这件事上摸爬滚打了六七年,我最大的感触就是:模型做出来只是第一步,能跑起来、跑得快、跑得省,才是真本事。
今天这第一讲,我们不敲代码,也不调参数。我想先带你站在高处,把整条链路看清楚——知识蒸馏、模型压缩、部署优化,这三件事到底是什么关系?为什么非做不可?以及,这门课能帮你走到哪一步。
为什么需要模型压缩?
先讲个我自己的经历。几年前我参与一个手机端的人脸识别项目。模型在GPU上跑,精度92%,一切完美。结果一放到骁龙855上,推理一次要800毫秒,手机直接发烫。用户刷脸解锁,等了一秒多——这产品根本没法用。
你想想看,一个ResNet-152,参数量超过6000万,计算量高达11 GFLOPs。而手机芯片的算力就那么点,还要同时跑相机、UI、网络。模型再大,也塞不进去。
说白了,模型压缩不是锦上添花,是生死线。它要解决三个核心矛盾:
- 精度 vs 速度:模型小了,推理快了,但精度不能掉太多
- 算力 vs 功耗:边缘设备算力有限,电池就那么一块
- 通用 vs 定制:大模型什么都能做,但部署时只需要特定能力
核心观点:模型压缩的本质,是在精度损失可控的前提下,把模型从“实验室巨兽”变成“产品级轻骑”。
全链路知识图谱
这门课覆盖的技术栈,我画了一张图。你可以把它当作整个课程的地图。
这张图其实就回答了三个问题:从哪来、怎么瘦、往哪去。
- 从哪来:一个训练好的大模型,可能是ResNet、MobileNet、ViT
- 怎么瘦:蒸馏、剪枝、量化,三种手段可以组合使用
- 往哪去:ONNX做中间表示,TensorRT/NCNN做推理优化,最终落到目标硬件
我的建议:别想着一步到位。我见过太多人一上来就搞量化,结果精度崩了也不知道是哪里出的问题。正确的做法是:先蒸馏,再剪枝,最后量化。每一步都验证,每一步都留回退点。
三种压缩技术的对比
我把蒸馏、剪枝、量化放在一起做了个对比。这张表你后面每学完一章都可以回来看一眼,能帮你保持全局感。
| 技术 | 核心思想 | 压缩比 | 精度影响 | 部署友好度 |
|---|---|---|---|---|
| 知识蒸馏 | 大模型教小模型,学“软标签” | 2x - 10x | 低(通常 < 1%) | 高(小模型结构灵活) |
| 模型剪枝 | 去掉不重要的通道/层 | 2x - 5x | 中(需微调恢复) | 中(依赖框架支持) |
| 量化压缩 | FP32 → INT8,减少位宽 | 3x - 4x | 低-中(取决于校准) | 高(硬件原生支持) |
嗯,这里要注意:这三种技术不是互斥的。我在实际项目中,经常是蒸馏出一个小模型,然后做剪枝,最后量化到INT8。三步走下来,模型体积能缩小到原来的1/10,推理速度提升5-8倍,精度只掉1-2个点。
课程目标与学习路径
这门课的目标很明确:让你能独立完成一个图像分类模型从训练到部署的全流程优化。
具体来说,学完这门课,你应该能:
- 掌握知识蒸馏的核心方法:从Logit蒸馏到Feature蒸馏,从离线蒸馏到在线蒸馏
- 动手实现模型剪枝:结构化剪枝、非结构化剪枝,以及如何微调恢复精度
- 完成量化压缩:PTQ(训练后量化)和QAT(量化感知训练),以及校准数据集的使用
- 部署到真实硬件:ONNX导出、TensorRT加速、NCNN在手机端的集成
- 掌握调试与优化方法:精度下降时怎么定位问题,速度瓶颈怎么分析
我曾经踩过的坑:有一次做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的预装环境,十分钟就能跑起来。