跳到主要内容

案例串联与复盘

建议学时

4 学时。

建议拆成四段:

时段内容课堂产出
第 1 学时传统视觉模型案例视觉部署评审表
第 2 学时小型 LLM 案例Qwen 部署复盘表
第 3 学时VLM/Agent 与端云协同案例系统架构复盘图
第 4 学时最终项目报告展示与答辩端侧部署评估报告

学习目标

  • 把端侧部署问题框架、量化、精度修复、压缩蒸馏、推理加速、runtime 和系统架构串成完整工程路径。
  • 能复盘传统视觉模型、小型 LLM、VLM 和 Hybrid Agent 的不同优化路线。
  • 能输出一份可执行、可评审的端侧部署方案。
  • 能比较 Ubuntu Server 和 Jetson 两条部署路径的收益与限制。
  • 能把失败样例、异常日志和未达标原因写入报告,而不是只展示最好结果。
  • 能判断一个 40+ 学时课程最终项目的体量是否足够支撑真实学习成果。

问题背景

课程最后不再只做 Q&A,而是用案例把全书内容串起来。不同模型形态的优化路径不同,不能用同一套指标粗暴套用。

传统视觉模型更关注 INT8 PTQ/QAT、结构化剪枝、TensorRT/TFLite/ONNX Runtime 和真实设备延迟;小型 LLM 更关注 GGUF、AWQ/GPTQ、INT4/INT5、group size、KV Cache、首 token、tokens/s 和本地 runtime;VLM 和 Hybrid Agent 还需要系统级架构设计。

本章的重点是“复盘能力”。学习者需要解释:为什么这样选模型,为什么这样选量化,为什么这样选 runtime,为什么这个结果可以或不可以上线。

总体复盘闭环

这个闭环要求每一步都有证据。没有证据的“感觉更快”“好像质量还可以”不能作为课程项目结论。

案例一:传统视觉模型

传统视觉模型是端侧部署最成熟的路径之一。它适合讲清楚量化、runtime 和硬件加速之间的关系。

项目复盘问题常见证据
模型选择模型是否适合目标输入和设备模型结构、输入尺寸、参数量、任务指标
量化方式PTQ 是否足够,是否需要 QAT校准数据、精度对比、失败样例
RuntimeTensorRT、ONNX Runtime、TFLite 是否适配导出日志、算子支持、推理日志
设备Ubuntu GPU、Jetson、移动端差异nvidia-smitegrastats、设备信息
稳定性长时间运行是否降频或内存泄漏连续运行日志、温度记录

视觉模型案例不要求本课程每个学生完整训练模型,但要能读懂一个视觉部署方案的关键风险。

案例二:Qwen 小型 LLM

本课程主线项目围绕 Qwen 小模型、本地量化和 llama.cpp 展开。

阶段任务产出
Baseline跑通 FP16 或指定 GGUF 模型加载日志、基础响应样例
量化对比比较 Q8/Q5/Q4 等格式结果表,不编造数字
KV Cache改变 ctx-size 观察内存和速度上下文长度记录
Runtime调整 GPU offload、threads、server命令和日志
服务化暴露 OpenAI-compatible APIPython smoke test
复盘写部署评估报告结论、风险、下一步

LLM 案例的复盘必须同时看“能否回答”和“能否稳定服务”。如果只展示一次问答成功,不能算完成部署。

案例三:Jetson 迁移

Jetson 迁移案例用于验证学习者是否理解端侧硬件约束。

对比项Ubuntu ServerJetson需要解释
模型加载待填待填文件大小、内存、runtime
首 token待填待填prefill、GPU offload、上下文
tokens/s待填待填decode、kernel、功耗模式
内存峰值待填待填显存/共享内存、KV Cache
温度/功耗通常非主线待填热稳定性、功耗模式
失败日志待填待填依赖、编译、OOM、fallback

Jetson 的目标不是证明它比服务器更快,而是证明方案是否能迁移到边缘约束下运行,并能解释差异。

案例四:VLM 与 Hybrid Agent

VLM 和 Hybrid Agent 用于把课程从单模型部署扩展到系统架构。

案例端侧部分云端部分复盘重点
图片问答预处理、小模型初筛复杂 VLM 问答隐私、图像质量、fallback
工业巡检Jetson 采集、检测、告警趋势分析、报告生成实时性、误报、稳定性
本地文件助手本地索引、摘要、权限控制高级推理或知识补全工具权限、数据边界
设备运维 Agent本地状态读取和规则处理云端 planner 或专家模型安全边界、人工确认

这类案例的复盘不能只写“使用 Agent”。必须画出组件、数据流、权限边界和失败路径。

核心概念回收

课程模块在复盘中如何体现
前置知识能解释 tokenizer、prefill/decode、KV Cache、memory footprint
端侧框架能说明任务、硬件、runtime、端云协同的选择
量化压缩能比较不同量化格式和质量风险
推理加速能区分模型变小、算子加速、runtime 调优和硬件加速
Ubuntu/Jetson 实作能把同一方案放到两类硬件上比较
Profiling能记录并解释延迟、tokens/s、内存、温度和失败日志
VLM/Agent能从单模型走向系统设计

最终项目要求

最终项目建议以“端侧 Qwen 小模型部署评估报告”为主线,也可以扩展到视觉、VLM 或 Agent 场景。

必须包含:

模块最低要求
项目背景说明任务、目标用户、端侧必要性和约束
模型选择说明模型来源、尺寸、许可证和选择理由
环境记录Ubuntu Server 或 Jetson 的设备信息和软件栈
Baseline原始运行命令、日志和输出样例
量化对比至少两种量化格式或参数设置,不编造数字
推理加速至少一次 runtime 参数或硬件路径对比
Profiling延迟、tokens/s、内存、温度/功耗或 CPU/GPU 使用记录
服务化如果做 LLM,建议提供本地 API smoke test
风险复盘质量、性能、内存、许可证、维护和安全边界
结论当前是否可用,下一步如何优化

加分项:

  • Ubuntu Server 与 Jetson 双路径对比。
  • VLM 或 Agent 的端云协同设计。
  • 失败样例分类和质量修复建议。
  • 自动化记录脚本或 profiling 模板。

最终报告模板

# 端侧模型部署评估报告

## 1. 项目背景

- 任务:
- 目标用户:
- 为什么需要端侧:
- 隐私/网络/成本/实时性约束:

## 2. 方案概览

| 项目 | 选择 | 理由 |
| --- | --- | --- |
| 模型 | 待填 | 待填 |
| 量化格式 | 待填 | 待填 |
| Runtime | 待填 | 待填 |
| 硬件 | 待填 | 待填 |
| 服务形态 | 待填 | 待填 |

## 3. 实验结果

| 实验 | 命令/参数 | 结果 | 证据 |
| --- | --- | --- | --- |
| Baseline | 待填 | 待填 | 日志 |
| 量化对比 | 待填 | 待填 | 表格 |
| 推理加速 | 待填 | 待填 | 日志 |
| Jetson 迁移 | 待填 | 待填 | tegrastats |

## 4. 失败样例

| 样例 | 现象 | 可能原因 | 下一步 |
| --- | --- | --- | --- |
| 待填 | 待填 | 待填 | 待填 |

## 5. 结论

- 当前是否达到业务可用:
- 最大瓶颈:
- 下一步建议:

课堂答辩问题

教师或同学可以用下面的问题检查项目质量:

  • 这个任务为什么必须端侧部署,云端方案有什么不足?
  • 当前模型选择是否过大或过小,有没有替代方案?
  • 量化后质量是否下降,证据是什么?
  • 低比特模型是否真的更快,还是只是更小?
  • Runtime 是否真正使用了目标硬件后端?
  • 上下文长度变化时,KV Cache 如何影响内存和速度?
  • Jetson 上是否记录了功耗模式和温度?
  • 服务化后如何处理并发、超时、日志和重启?
  • 如果本地模型失败,端云协同或人工确认如何介入?
  • 当前方案最大的上线风险是什么?

评分建议

维度比例评价重点
问题定义15%任务、约束、端侧必要性是否清楚
技术路线20%模型、量化、runtime、硬件选择是否有理由
实验记录25%命令、日志、表格和失败样例是否完整
系统设计20%服务化、端云协同、权限和 fallback 是否考虑
复盘表达20%能否解释瓶颈、风险和下一步

评分不应鼓励“跑出最高数字”,而应鼓励可复现、可解释、可改进的工程报告。

代码/命令示例

部署评审清单可以以 Markdown 表格保存,作为每个项目的复盘模板:

| 项目 | 当前结论 | 证据 | 下一步 |
| --- | --- | --- | --- |
| Baseline | 待填 | 待填 | 待填 |
| 量化格式 | 待填 | 待填 | 待填 |
| Runtime | 待填 | 待填 | 待填 |
| 首 token | 待填 | 待填 | 待填 |
| tokens/s | 待填 | 待填 | 待填 |
| 峰值显存/内存 | 待填 | 待填 | 待填 |
| 温度/功耗 | 待填 | 待填 | 待填 |
| 质量风险 | 待填 | 待填 | 待填 |

配套实作

对应实作章节:

最终实作复盘应回答:

  • 当前 Qwen 小模型是否达到课程定义的“业务可用”。
  • 如果没有,是质量、速度、内存、runtime、硬件还是服务化问题。
  • 下一轮应该换量化类型、换模型尺寸、调 runtime 参数,还是改变系统架构。
  • 如果迁移到 Jetson,主要差异来自性能、内存、功耗、温度还是模型质量。
  • 如果扩展到 VLM/Agent,哪些组件应端侧运行,哪些组件应云端兜底。

验收结果

产物验收标准
小型 LLM 复盘表从目标、baseline、量化、runtime、profiling 到结论完整记录
风险清单至少覆盖质量、延迟、显存/内存、许可证、模型来源和部署维护
后续路线能明确下一步是继续优化、换模型、换 runtime 还是端云协同
Ubuntu vs Jetson 对比能说明两个硬件路径各自适合的部署场景
最终项目报告能被别人按命令和表格复现实验过程

常见问题

  • 只汇报最好结果:复盘需要保留失败样例和参数,才能指导下一轮。
  • 把模型问题和系统问题混在一起:输出差、速度慢、服务不稳要分开定位。
  • 没有验收阈值:没有阈值就无法判断“是否达标”。
  • 忽略上线后的环境差异:开发机、测试机和目标设备的驱动、温度、并发和网络都可能不同。
  • 把报告写成命令集合:命令只是证据,报告还必须解释决策和风险。

参考资料