04-端侧 AI 部署与调优学习路线
端侧 AI 部署与调优学习路线
定位:让模型在真实手机上"又快又省又稳"地跑起来的系统工程方向,不是"转行做算法"。
适用对象:Android 开发背景,希望将性能优化、Native、Framework 经验延伸到模型端侧部署领域。
抗替代性逻辑:端侧 AI 工程的核心矛盾是"云端模型很强,但手机内存/算力/功耗有限",需要既懂模型又懂移动端系统资源约束的人做取舍,这正是纯算法背景缺的一课,AI 无法替你在真机上验证功耗与延迟。
完整详细版:本文是精简导航版,完整分阶段展开(含更多代码示例、llama.cpp 端侧大模型部署细节)见../端侧AI与AI系统工程学习路线.md,两文档内容互补,建议配合使用。
一、能力迁移对照(为什么 Android 背景是优势)
| 已有能力 | 端侧 AI 应用 |
|---|---|
| 内存分析、OOM 定位 | 模型加载内存占用评估 |
| 多线程/协程 | 推理任务调度、异步加载 |
| Native/JNI | 调用 TFLite/ONNX/llama.cpp C++ API |
| 性能优化方法论 | 推理延迟优化闭环 |
| Framework/HAL | NNAPI、GPU Delegate、NPU 驱动对接 |
二、能力地图
- 机器学习与模型基础 — 看懂模型结构,不要求会训练
- 端侧推理框架 — TFLite、ONNX Runtime、MediaPipe、llama.cpp
- 模型优化技术 — 量化、剪枝、蒸馏
- 硬件加速与异构计算 — CPU/GPU/NPU 调度
- 系统工程与性能调优 — 延迟、内存、功耗量化分析
三、学习路线总览(建议 9~14 个月)
阶段 0:机器学习与模型基础补齐 → 1~1.5 月
阶段 1:端侧推理框架实战 → 2 月
阶段 2:模型压缩与优化 → 1.5~2 月
阶段 3:硬件加速与异构调度 → 1.5~2 月
阶段 4:端侧大模型部署(进阶加分项) → 1.5~2 月
阶段 5:系统级性能调优 → 1~1.5 月
阶段 6:项目化与求职 → 持续四、阶段 0:机器学习与模型基础(1~1.5 月)
4.1 必学内容
| 主题 | 要学到什么程度 |
|---|---|
| 张量与基本运算 | shape、广播、矩阵乘法 |
| 神经网络基本结构 | 全连接层、卷积层、注意力机制原理 |
| 常见模型家族 | CNN、Transformer、轻量网络(MobileNet/EfficientNet) |
| 模型文件格式 | .tflite、.onnx、safetensors 的区别与转换 |
| 评估指标 | 精度、延迟(ms)、内存(MB)、功耗 —— 端侧四维权衡 |
4.2 阶段产出
- [ ] 能解释量化/剪枝/蒸馏各解决什么问题
- [ ] 能用 Netron 读懂一个
.tflite模型的算子列表 - [ ] 写一页《模型部署链路笔记》
五、阶段 1:端侧推理框架实战(2 月)
5.1 框架选型
| 框架 | 定位 |
|---|---|
| TensorFlow Lite (LiteRT) | Android 生态最主流,官方支持最好,优先精通 |
| ONNX Runtime Mobile | 跨框架通用,模型来源多样时首选 |
| MediaPipe | 现成多模态管线(人脸/手势/姿态) |
| NCNN / MNN | 国内厂商常用,包体积要求高场景 |
5.2 最小集成示例
val model = FileUtil.loadMappedFile(context, "mobilenet_v2.tflite")
val interpreter = Interpreter(model, Interpreter.Options().apply { numThreads = 4 })
interpreter.run(inputBuffer.buffer, outputBuffer.buffer)5.3 阶段产出
- [ ] 一个可运行的 Android Demo(图像/文本分类),真机验证
- [ ] 《TFLite vs ONNX Runtime Mobile 对比笔记》
六、阶段 2:模型压缩与优化(1.5~2 月)
| 技术 | 效果 | 代价 |
|---|---|---|
| 量化 (INT8/INT4) | 体积缩小 2~4 倍,加速明显 | 精度小幅下降 |
| 剪枝 | 移除不重要权重/通道 | 需重新训练/微调 |
| 知识蒸馏 | 小模型逼近大模型精度 | 需要教师模型和训练资源 |
决策框架:"精度损失是否在业务可接受范围" + "延迟/体积收益是否值得" + "能否部分层量化折中"。
阶段产出
- [ ] 对同一模型做动态量化/全整数量化/FP32 三版本对比测试并写报告
七、阶段 3:硬件加速与异构调度(1.5~2 月)
CPU(兜底)→ GPU Delegate(并行计算强)→ NNAPI(统一异构接口)→ 厂商 NPU SDK必须做:在 2~3 台不同芯片真机上跑同一模型,对比 CPU/GPU/NNAPI 延迟差异,产出对比报告——这是简历上最有说服力的数据。
阶段产出
- [ ] 《多设备加速对比报告》
- [ ] 了解至少一个厂商 NPU SDK 基本接入流程
八、阶段 4:端侧大模型部署(进阶加分项,1.5~2 月)
方案选型:llama.cpp(社区最活跃)、MLC-LLM(多后端)、MediaPipe LLM Inference API
路径:PC 跑通量化小模型 → NDK 交叉编译 → JNI 封装 → 手机端聊天 Demo详细代码与编译步骤见 ../端侧AI与AI系统工程学习路线.md 第八节。
阶段产出
- [ ] 一个能在真机跑本地大模型对话的 Demo App
- [ ] 不同量化等级的速度/内存/质量对比记录
九、阶段 5:系统级性能调优(1~1.5 月)
现象(卡顿/发热)→ 工具定位(Perfetto/TFLite Benchmark)→ 归因 → 优化 → 数据验证| 问题 | 优化手段 |
|---|---|
| 首次推理慢 | 预热、后台提前加载 |
| 推理阻塞 UI | 移到协程/线程池 |
| 内存暴涨 | 单例 Interpreter,及时释放 |
| 机型表现不一致 | 建立兼容性测试矩阵 |
阶段产出
- [ ] 用 Perfetto 分析一次完整推理耗时分布
- [ ] 一份《机型兼容性测试矩阵》
十、阶段 6:项目化与求职
简历表述模板
「在 Android 平台完成 XX 模型端侧部署,通过 INT8 量化将模型体积压缩 70%、
推理延迟从 XXms 降至 XXms,并在 3 款不同芯片机型上验证 NNAPI/GPU Delegate
加速效果差异,输出兼容性测试矩阵。」目标岗位
内部转岗(大厂端侧智能小组)> 社招端侧 AI 工程师(手机厂商/大模型厂商)> AI Infra 延伸岗位
十一、能力自检清单(精简版 12 项)
- [ ] 能解释量化/剪枝/蒸馏区别
- [ ] 独立完成 TFLite Android 集成
- [ ] 完成量化对比实验并有数据报告
- [ ] 启用过 GPU Delegate / NNAPI 并测量效果
- [ ] 在 2 款以上真机做过加速对比
- [ ] 完成端侧大模型 Demo(可选)
- [ ] 用 Perfetto 分析过推理耗时
- [ ] 完成一次性能优化闭环案例
- [ ] 建立机型兼容性矩阵
- [ ] 有可演示的端侧 AI Demo App
- [ ] 简历能用数据讲清一次优化案例
- [ ] 能对比端侧与云端推理的取舍逻辑
完整 24 项自检清单见 ../端侧AI与AI系统工程学习路线.md 第十二节。十二、最短路径
1. 跑通官方 TFLite 图像分类 Demo(2周)
2. 量化对比实验,产出数据报告(4周)
3. 2~3台真机测 CPU/GPU/NNAPI 对比(4周)
4. 端侧大模型 Demo 加分(6周,可选)
5. Perfetto 完成一次性能优化案例(3周)一句话总结:
端侧 AI 工程不是"重新学 AI",而是把 Android 系统资源管理能力用在"让模型在真实手机上又快又省又稳"这件事上。
十三、关联文档
../端侧AI与AI系统工程学习路线.md— 完整详细版,含更多代码与深度内容../移动开发转型规划-不易被AI替代方向.md— 本方向在整体转型策略中的定位../Android移动开发方向抗替代性与薪酬分析.md— 替代率与薪酬定位01-性能优化专项学习路线.md— 性能调优方法论可交叉参考