这是 100 页综述的精讲系列,共 5 篇
这一篇在干嘛?
本篇取自 Luo 等人的综述《Efficient Deep Learning Infrastructures for Embedded Computing Systems: A Comprehensive Survey》(ACM TECS,2024)的第 7、8、9 章,是整个系列的收官篇。前三章我们一路从”手工设计轻量网络”讲到”自动搜网络""压缩网络""端侧训练与端侧大模型”,这一篇回答最后两个问题:这些东西跑在什么上面(第 7 章软件框架 + 硬件框架),以及跑起来到底干了什么活(第 8 章计算机视觉与自然语言处理应用)。第 9 章给出全文结论与未来方向。文中包含一张覆盖 11 款嵌入式 AI 硬件平台的横评表(内存、存储、功耗、算力、首发价、支持的软件框架),以及一条从 AlexNet 到 ResNet 的卷积网络里程碑图。
一、先想清楚:为什么端侧深度学习需要”专门的框架”
前面几篇讲的所有技巧——深度可分离卷积(depthwise separable convolution)、神经架构搜索(NAS, Neural Architecture Search)、剪枝(pruning)、量化(quantization)、知识蒸馏(knowledge distillation)——最后都要落到一台真实的设备上跑起来。这时候你会撞上一堵墙:
在服务器上训练模型的那套工具,搬到嵌入式设备上根本用不了。
原因有三层,一层比一层硬:
- 体积层:PyTorch 完整安装包动辄 2 GB 以上,还要拖着一整套 Python 运行时和 CUDA 动态库。一块 256 MB Flash 的 MCU(微控制器单元,Microcontroller Unit)连装都装不下。
- 依赖层:嵌入式 Linux 往往是裁剪过的,glibc 版本、Python 版本、驱动版本全都不由你决定。训练框架那种”我要求 Python 3.9 + CUDA 11.8 + cuDNN 8.6”的强依赖在这里是奢侈品。
- 运行时层:训练框架的核心目标是”让反向传播好写”,所以它保留计算图、保留中间激活值、保留自动微分引擎。而端侧推理只需要前向传播,所有这些东西都是纯浪费。
于是就有了端侧深度学习的两个支柱:
- 软件框架(software framework):负责把训练好的模型翻译成能在资源受限设备上高效执行的代码——算子融合、内存复用、定点化、调度。
- 硬件框架(hardware framework):负责提供算力本身——GPU、NPU(神经网络处理器,Neural Processing Unit)、TPU(张量处理器,Tensor Processing Unit)、VPU(视觉处理器,Vision Processing Unit)、FPGA(现场可编程门阵列)等等。
一句话概括本篇的主线:软件框架决定”能不能跑起来”,硬件框架决定”跑得多快、多省电”,而应用决定”这些快慢省电到底值不值钱”。
二、软件框架全景:每个框架究竟解决什么问题
综述原文 Table 3 列出了 8 个被广泛使用的深度学习软件框架。初学者最容易犯的错误是把它们当成”竞品”来比较谁更好——其实它们诞生于完全不同的场景,定位差异很大。我们按”它最初想解决什么问题”来重排一遍。
2.1 两大通用底座:TensorFlow 与 PyTorch
TensorFlow(Google,2015 年发布)是端侧部署生态最完整的一个。它的关键分支是 TensorFlow Lite(TFLite),专门为移动端和嵌入式设备设计:
- 模型格式
.tflite是 FlatBuffer 序列化,加载不需要解析复杂的 protobuf,冷启动快; - 内置量化工具链,支持训练后量化(post-training quantization)和量化感知训练(QAT, Quantization-Aware Training),可以直接把 FP32 权重压成 INT8;
- 有 TensorFlow Lite Micro(TFLM) 子项目,专门为 KB 级内存的 MCU 设计,连动态内存分配都尽量避免;
- 硬件覆盖极广:手机、MCU、树莓派(Raspberry Pi)、Edge TPU、边缘 GPU 都能跑。
PyTorch(Meta,2016 年发布)的最大卖点是动态计算图(dynamic computation graph)。所谓动态图,就是网络结构可以在运行时随数据改变——比如你写一个 RNN,序列长度每次不一样,或者你写 if x.sum() > 0: ... else: ... 这种依赖数据分支的逻辑,PyTorch 都能直接跑。相比之下早期 TensorFlow 只支持静态图:你得先把整个计算图”画”出来,再喂数据。
这个差异对研究极其重要(改结构不用重写代码),但对端侧部署曾经是劣势——动态图不好做静态优化。所以 PyTorch 的端侧路线是 TorchScript / PyTorch Mobile:先把动态图”追踪”(trace)或”脚本化”(script)成静态中间表示,再做算子融合和量化。此外 TorchVision 提供了大量图像/视频方向的预训练模型和工具,是视觉类项目的默认起点。
怎么选
研究/快速实验 → PyTorch;要落到 MCU、TPU 或者需要最成熟的量化工具链 → TensorFlow / TFLite。实际工业界的常见做法是用 PyTorch 训,导出 ONNX,再用目标平台的推理引擎部署。
2.2 老牌与专用:Caffe、MXNet、Keras、CoreML、PaddlePaddle、BigDL
| 框架 | 出身 | 首次发布 | 最初想解决的问题 | 今天该不该学 |
|---|---|---|---|---|
| Caffe | Berkeley | 2014 | 图像任务快、模块化、上手简单;能吃百万级图片数据集 | 新项目不建议,但大量老模型/老代码是 Caffe 格式,读论文复现时躲不掉 |
| MXNet | Amazon | 2015 | 分布式训练:跨多计算节点高效训练;多语言绑定(Python/C++/R/Julia) | 与 Apache Spark、Flink 集成好,数据流水线现成的场景仍有价值 |
| Keras | François Chollet | 2015 | 高层 API:用最少的代码拼出网络 | 必学——自 TensorFlow 2.0 起它就是 TensorFlow 的默认 API |
| CoreML | Apple | 2017 | 把模型塞进 iPhone / iPad / Apple Watch,纯端侧推理不依赖云端 | 做 Apple 生态必学 |
| PaddlePaddle | 百度 | 2016 | 工业级全栈平台:核心框架 + 模型库 + 端到端工具 + 服务平台 | 国内制造业、农业、企业服务落地多,中文文档友好 |
| BigDL | Intel | 2017 | 跑在 Apache Spark 之上的分布式深度学习,能榨干 CPU/GPU/FPGA 集群 | 大数据平台已有的团队做训练加速时考虑 |
几个值得单独记住的细节:
- Keras 的定位变化:它从”独立框架”变成了”TensorFlow 的官方前端”。这件事的意义是——你写的 Keras 代码天然就站在 TensorFlow 的部署生态上,不用再做转换。
- CoreML 的关键特性:支持 30 多种层类型,除了深度网络还覆盖树集成(tree ensembles)、支持向量机(SVM)、广义线性模型这些传统机器学习模型;并且自带量化和剪枝优化;底层建立在 Metal 和 Accelerate 之上,能自动在 CPU 和 GPU 之间选最快的路径。“纯端侧、不上云”是它的设计前提,这与嵌入式场景的隐私诉求天然契合。
- PaddlePaddle 的自我定位是”源于产业实践的工业平台”,覆盖核心框架、基础模型库、端到端工具和服务平台四层。对国内嵌入式工程师来说,它的中文文档和国产硬件适配是实打实的优势。
- BigDL 的独特之处:它不是一个”另一个 TensorFlow”,而是”长在 Spark 上的深度学习”。这意味着数据预处理、训练、后处理可以写在同一条 Spark 流水线里,从数据摄入到模型部署端到端打通。
2.3 补充:综述表格之外,工程上还会遇到的推理引擎
说明
下面这几个不在综述原文 Table 3 的清单里,是本文为了贴合国内工程实践补充的。综述发表于 2024 年,其 Table 3 侧重”通用训练/部署框架”,而真正在手机和嵌入式板子上跑推理的往往是更轻量的专用引擎:
- MNN(阿里巴巴):轻量高性能推理引擎,对移动端 CPU/GPU 优化很深,国内 App 端侧推理的常见选择。
- NCNN(腾讯):为手机端极致优化,无第三方依赖、纯 C++ 实现,体积小,跨平台;在嵌入式 Linux 板子上也很容易编译。
- TVM(Apache):编译器栈而非框架。它把来自 TensorFlow/PyTorch/MXNet 的模型编译成针对特定硬件后端(ARM CPU、Mali GPU、NPU)优化过的代码,核心思路是用机器学习自动搜索最优的算子实现(自动调优,auto-tuning)。
- ONNX Runtime(微软):ONNX 是跨框架的模型交换格式,ONNX Runtime 是它的执行引擎,常作为”万能中间层”。
把它们和前文放在一起看,端侧软件栈其实是三层:上层训练框架(PyTorch / TensorFlow / PaddlePaddle)→ 中间表示与编译(ONNX / TVM)→ 底层推理引擎(TFLite / MNN / NCNN / CoreML)。
2.4 一张图总结取舍
软件框架的取舍本质上绕不开四个维度,而且这四个维度互相拉扯:
部署广度 ←————→ 极致性能
上手容易 ←————→ 可控可调
生态丰富 ←————→ 体积轻小
通用灵活 ←————→ 专用高效
没有哪个框架在八个端点全占。选型的正确顺序是:先定硬件平台 → 硬件平台倒逼可用的推理引擎 → 推理引擎决定模型格式 → 模型格式回溯到训练框架。反过来”我 PyTorch 用得熟所以一定要上 PyTorch Mobile”是新手最常见的踩坑姿势。
三、硬件框架全景:11 款平台的横评与选型逻辑
综述 Table 4 给出了 11 款嵌入式 AI 硬件平台的完整参数。这是本篇信息密度最高的一张表,我们完整保留:
| 硬件平台 | 内存 | 存储 | 功耗 | 算力 | 首发价 | 支持的软件框架 |
|---|---|---|---|---|---|---|
| NVIDIA Jetson TX2 | 8 GB LPDDR4 | 32 GB eMMC 5.1 | 7.5–15 W | 1.33 TFLOPS | $399 | TensorFlow、PyTorch、Caffe、Keras、MXNet |
| NVIDIA Jetson Nano | 4 GB LPDDR4 | 16 GB eMMC 5.1 | 5–10 W | 0.472 TFLOPS | $99 | 同上 |
| NVIDIA Jetson AGX Xavier | 32 GB LPDDR4x | 32 GB eMMC 5.1 | 10–30 W | 32 TOPS | $1,099 | 同上 |
| NVIDIA Jetson Xavier NX | 8 GB LPDDR4x | 16 GB eMMC 5.1 | 10–20 W | 21 TOPS | $399 | 同上 |
| NVIDIA Jetson AGX Orin | 32 GB LPDDR5 | 64 GB eMMC 5.1 | 15–40 W | 275 TOPS | $1,999 | 同上 |
| NVIDIA Jetson Orin NX | 16 GB LPDDR5 | 32 GB eMMC 5.1 | 10–25 W | 100 TOPS | $599 | 同上 |
| Intel Neural Compute Stick | N/A | N/A | 0.5–1.5 W | 0.1 TFLOPS | $79 | TensorFlow、Caffe、MXNet |
| Google Edge TPU | N/A | N/A | 2 W | 4 TOPS | $75 | TensorFlow / TensorFlow Lite |
| Google Coral Dev Board | 1 GB LPDDR4 | 8 GB eMMC 5.1 | 1–6 W | 4 TOPS | $149 | TensorFlow / TensorFlow Lite |
| Huawei HiKey 970 | 6 GB LPDDR4 | 64 GB UFS 2.1 | 6–12 W | 1.88 TOPS | $299 | TensorFlow、PyTorch、Caffe |
| Orange Pi AI Stick Lite | N/A | N/A | 1–2 W | 4 TOPS | $69 | TensorFlow、PyTorch、Caffe |
读表前必看的三条免责声明
- 价格是首发价,原文明确说明会随时间波动,不要拿它做今天的采购依据。
- TOPS 和 TFLOPS 不能直接比大小。TOPS(Tera Operations Per Second)通常指 INT8 整数运算,TFLOPS(Tera FLoating-point Operations Per Second)指浮点运算;而且不同厂商对”TOPS”的口径(稠密/稀疏、是否含 NPU 之外的部分)并不统一。
- “N/A”的 USB 加速棒自身不带内存/存储,它必须插在宿主设备上才能工作,选型时要把宿主的算力和功耗一起算进去。
3.1 三个家族,三种哲学
表里的 11 款硬件其实可以分成三类,理解这个分类比记住参数重要得多。
第一类:独立计算模块 / 单板计算机(SoM & SBC) —— Jetson 全家、Coral Dev Board、HiKey 970。
它们自带 CPU、内存、存储、各种高速接口(以太网、USB、HDMI、CSI/DSI、PCIe),本身就能当一台小电脑用。NVIDIA Jetson 系列建立在 CUDA 并行计算架构之上,片上是”CPU + NVIDIA GPU”的 SoC,因此兼容性最好——TensorFlow、PyTorch、Caffe、Keras、MXNet 通吃。代价是功耗和价格:AGX Orin 15–40 W、$1,999。
华为 HiKey 970 与之类似但走 NPU 路线,6 GB LPDDR4 + 64 GB UFS 2.1,支持以太网、USB 3.0 和 PCIe 3.0,适合机器人、自动驾驶、智能家居这类既要算力又要丰富接口的场景。
第二类:USB 加速棒(Accelerator Stick) —— Intel Neural Compute Stick、Google Edge TPU、Orange Pi AI Stick Lite。
它们的共同点是自己干不了活,必须插在树莓派 4、Coral 开发板之类的宿主上。Intel NCS 的核心是 Myriad 2 VPU,专为神经网络推理优化,功耗只有 0.5–1.5 W,售价 69,4 TOPS,1–2 W),主打中小规模负载。
第三类:混合形态 —— Coral Dev Board 既是单板计算机,又板载一颗 Edge TPU,预装了 TensorFlow Lite、Edge TPU API 和示例程序,属于”开箱即用”的折中方案。
3.2 自己算一遍:能效比与性价比
看表选型时,光看”算力”一列会被误导。更靠谱的做法是把它换算成两个比值。下面这两个指标是本文为了便于横向比较自行定义的,不是综述原文给出的:
按峰值功耗和首发价算下来(注意 TOPS 与 TFLOPS 口径不同,只能在同一列内部横比):
| 平台 | 算力 | 能效比 | 每单位算力价格 |
|---|---|---|---|
| Jetson AGX Orin | 275 TOPS | ≈ 6.9 TOPS/W | ≈ $7.3 / TOPS |
| Jetson Orin NX | 100 TOPS | ≈ 4.0 TOPS/W | ≈ $6.0 / TOPS |
| Google Edge TPU | 4 TOPS | = 2.0 TOPS/W | ≈ $18.8 / TOPS |
| Orange Pi AI Stick Lite | 4 TOPS | ≈ 2.0 TOPS/W | ≈ $17.3 / TOPS |
| Jetson AGX Xavier | 32 TOPS | ≈ 1.07 TOPS/W | ≈ $34.3 / TOPS |
| Jetson Xavier NX | 21 TOPS | ≈ 1.05 TOPS/W | ≈ $19.0 / TOPS |
| Google Coral Dev Board | 4 TOPS | 0.67–4.0 TOPS/W | ≈ $37.3 / TOPS |
| Huawei HiKey 970 | 1.88 TOPS | ≈ 0.16 TOPS/W | ≈ $159 / TOPS |
| Jetson TX2 | 1.33 TFLOPS | ≈ 0.09 TFLOPS/W | ≈ $300 / TFLOPS |
| Jetson Nano | 0.472 TFLOPS | ≈ 0.047 TFLOPS/W | ≈ $210 / TFLOPS |
| Intel NCS | 0.1 TFLOPS | ≈ 0.067 TFLOPS/W | ≈ $790 / TFLOPS |
这张表能读出几个反直觉但重要的结论:
- 越贵的绝对算力平台,单位算力反而越便宜——AGX Orin 的每 TOPS 价格是 Edge TPU 的三分之一。但前提是你能供得起 40 W 电、付得起 $1,999。
- 绝对功耗才是嵌入式系统的硬约束。一个靠电池供电的野外传感器节点,40 W 完全不可想象,这时 2 W 的 Edge TPU 就是唯一选项,哪怕单位算力贵三倍。
- 新一代架构的能效比提升是碾压式的:AGX Orin(6.9 TOPS/W)比同门师兄 AGX Xavier(1.07 TOPS/W)高了 6 倍多。这说明”等等党”在硬件选型上经常是对的,但也说明针对旧硬件做的优化经验不能简单平移到新硬件。
3.3 选型的四步法
把上面的分析整理成可执行的步骤:
- 先锁功耗预算:电池供电/无风扇 → 5 W 以内,只能看 USB 加速棒或 Nano 级;插电且有散热 → 可以上 10–40 W 的模块。
- 再看软件栈约束:你的模型是用 PyTorch 写的、用了很多自定义算子?那 Edge TPU 基本不适合(它主要吃 TensorFlow Lite 且只支持有限算子集)。反过来,如果是标准 CNN 且愿意用 TFLite,Edge TPU 的能效比非常香。
- 然后算内存:模型权重 + 中间激活值必须放得下。AGX Orin 的 32 GB 和 Coral Dev Board 的 1 GB 是完全两个世界。
- 最后才是算力与价格:按上一节的能效比/性价比表收尾。
四、应用之一:计算机视觉落地形态
综述第 8.1 节把端侧视觉应用分成三块讲,我们顺着它的脉络走。
4.1 图像分类:一切视觉任务的起点
图像分类(image classification,也叫图像识别)是最基础的视觉任务——给定一张图,判断它属于哪个类别。它之所以是”基础”,是因为检测、分割、跟踪这些下游任务几乎都以它为主干网络(backbone)。
在嵌入式设备上,图像分类已经无处不在:
- 人脸识别(face recognition):手机解锁、ATM 身份认证;
- 行人重识别(person re-identification):跨摄像头的同一个人检索;
- 手势识别(hand gesture recognition):智能相机、人机交互。
这三个例子有个共同点——全都是身份认证或交互入口,对延迟极其敏感(你不会接受手机解锁等三秒),但对 top-1 准确率的要求反而不如 ImageNet 竞赛那么苛刻。
实践中的图像分类基本离不开深度卷积网络:VGGNet、ResNet、DenseNet,因为它们在 ImageNet 这种大规模数据集上捕捉视觉信息的能力最强。为什么是卷积网络而不是 MLP(多层感知机)?关键区别在于卷积层是”参数共享 + 局部连接”的:同一个卷积核在整张图上滑动复用,参数量不随图片尺寸爆炸,而且天然具备平移等变性。MLP 把每个像素当独立特征,参数量会大到没法训练,也学不到”同一个物体挪个位置还是同一个物体”这件事。
图 30:早期卷积网络的里程碑。AlexNet 首次证明卷积层可以从视觉输入中学到判别性特征,在 ImageNet 上显著超越此前基于 MLP 等非卷积方法;ResNet 通过残差学习解决了深层网络的训练退化问题,把网络深度推到前所未有的量级,并首次在 ImageNet 上取得超越人类的识别性能。
这张图想讲的故事是两件事:
- AlexNet(第一个真正意义上的现代卷积网络)证明了”用卷积层学特征”这条路走得通,在 ImageNet 上的识别性能显著超过此前所有基于 MLP 和其他学习方法的方案。
- ResNet 解决的是”网络堆深了反而训不动”的训练坍缩(training collapse)问题。它引入的深度残差学习(deep residual learning)范式极其简单——让每一层去学”输入到输出的残差”而不是完整映射——却让网络深度可以大幅提升,也直接开启了深度学习时代的爆发。凭借这个深度,ResNet 第一次在 ImageNet 上取得了超越人类的识别性能。
对嵌入式工程师来说,这条脉络的现实意义是:今天你在端侧用的绝大多数主干网络,都是 ResNet 的后代。所以第①篇讲的手工轻量网络(MobileNet 系列等)本质上是在 ResNet 这条线上继续做减法和改造。
4.2 下游视觉任务:从”这是什么”到”在哪、要去哪”
下游视觉应用(downstream vision applications)指的是把基础任务的输出结果拿去解决实际问题。综述列出的清单包括:目标检测(object detection)、目标跟踪(object tracking)、目标分割(object segmentation)、图像超分辨率(image super-resolution)、图像复原(image restoration)、姿态估计(pose estimation)、图像描述(image captioning)、增强现实与虚拟现实(AR/VR)、以及各类视频分析。
这些任务在端侧的典型落点:
- 自动驾驶:目标检测与跟踪用来发现其他车辆;
- 监控系统:检测可疑人员或行为;
- 智慧城市、智慧医疗:作为基础设施组件嵌入。
这里有一个非常值得嵌入式初学者注意的案例:文献 [630] 在做端侧图像复原时,采用了面向内存的结构化剪枝(memory-oriented structured pruning)来优化运行时的内存占用。为什么是”面向内存”而不是”面向算力”?因为在嵌入式设备上,峰值内存往往是比算力更硬的约束——算力不够顶多是慢一点,内存不够是直接崩。这一点在第③篇讲剪枝时我们已经强调过,这里从应用侧又得到了印证。
还有一个工程侧的实用工具:Precog 提出了一套高效的目标检测基础设施,让树莓派这种资源极度受限的设备也能做实时目标检测,它内置了 YOLOv3 来获得更好的端侧检测精度。这类工作的价值在于——它把”选模型、量化、调度、内存管理”这些脏活打包了,让应用开发者不用重造轮子。
4.3 从 CNN 到 Vision Transformer:端侧的新麻烦
近几年,视觉 Transformer(ViT, Vision Transformer) 及其变体在图像分类、目标检测、语义分割、视频分析上全面超过了卷积网络同行,不断刷新 SOTA。
它的基本做法(对应原文 Figure 5,不在本篇切片内)是:
- 把输入图像切成一系列较小的图像块(image patch),常见的是切成 8、16 或 32 份;
- 每个图像块被当作一个”词”,送入基于 Transformer 的编码器去学判别性特征;
- 学到的特征被聚合后送入分类层做预测。
问题来了:ViT 在端侧的效率往往不如卷积网络。综述引用 [139] 和 [127] 指出,原因在于 Transformer 结构在资源受限的嵌入式系统上更难并行化,不可避免地造成显著的资源利用率不足(resource underutilization)。
直觉上的解释是:卷积是”局部、规整、访存模式固定”的运算,硬件喜欢;而自注意力(self-attention)引入了全局依赖和大量动态形状的矩阵乘法,数据搬运和中间缓存的开销很大。在算力、带宽、内存都紧张的嵌入式设备上,这个差距被放大。
所以第②篇提到的”资源高效的视觉 Transformer”(resource-efficient vision transformers)才会成为一个独立的研究方向。综述在这里的措辞是很明确的:要真正释放 ViT 的潜力,还需要大量工作去缓解端侧效率瓶颈——这是一个开放的、尚未解决的问题。
五、应用之二:自然语言处理落地形态
如果说视觉让嵌入式设备”看得见”,NLP(自然语言处理,Natural Language Processing)则让它”听得懂”。综述 8.2 节的核心论点是:嵌入式系统正在从简单的响应式系统(你说一句我答一句)转向主动交互式系统(能理解上下文、能预判你的需求)。
这个转变在硬件上体现得很直接——从传统 IoT 系统、可穿戴设备到自动驾驶系统,都在从”采集+上报”变成”理解+决策”,而这要求音频和文本的处理必须在本地完成。
综述列举了五类代表性应用:
(1)情感分析(Sentiment Analysis) 可穿戴设备和智慧医疗基础设施用它通过语言交互捕捉用户的生理/心理状态。这让系统能更全面地理解用户的情绪健康,为”整体健康生态”铺路。注意这里的关键词是生理状态——情感分析在嵌入式场景下往往不是做舆情监控,而是做健康监测。
(2)自动语音识别(ASR, Automatic Speech Recognition) 在自动驾驶和智能家居里,语音命令可以大幅简化复杂操作。它的收益不只是”方便”,更是安全——开车时手不用离开方向盘,这就是原文说的”减少手动交互、提升安全性与便利性”。
(3)对话智能体(Conversational Agents) 家庭自动化系统、交互式助手系统里的核心。它们要能理解和解释用户的命令、偏好和行为模式,并在后续交互中提供更好的服务。这里的技术难点在于多轮上下文——不是一句话的事。
(4)语音合成与识别转换(TTS / STT) TTS(text-to-speech)把文本合成语音给用户听觉反馈,STT(speech-to-text)反过来。这两者的结合是人机交互的重要里程碑,在手机、智能翻译设备上尤其关键,而且在免手操作(hands-free)环境中几乎是唯一可行的交互方式。
(5)实时翻译(Real-Time Translation) 消除跨语言障碍,被广泛集成进可穿戴通信设备。
综述在这一节结尾给出了一个很好的判断:NLP 与嵌入式系统的结合不只是技术增强,而是朝向”泛在嵌入式智能”的一次范式转变。它让设备不仅能理解短命令,还能处理更长的上下文和对话。
对嵌入式工程师而言,这一节隐藏着一个重要推论:NLP 任务的内存墙比视觉任务更严重。Transformer 的 KV Cache(键值缓存)随上下文长度线性增长,而端侧设备的内存是固定的。这正是第④篇讲端侧大模型时要处理的核心矛盾之一。
六、全文结论与未来方向
6.1 这篇综述到底覆盖了什么
第 9 章用一组”从……到……”概括了全文的跨度:
- 从训练到推理(from training to inference)
- 从手工到自动(from manual to automated)
- 从卷积神经网络到 Transformer(from CNNs to transformers)
- 从 Transformer 到视觉 Transformer(from transformers to vision transformers)
- 从视觉模型到大语言模型(from vision models to LLMs)
- 从软件到硬件(from software to hardware)
- 从算法到应用(from algorithms to applications)
具体展开是七条主线:高效手工网络设计、高效自动化网络设计、高效网络压缩、高效端侧学习、高效大语言模型、高效软硬件基础设施、高效智能应用。这七条正好对应我们这个五篇系列的内容。
6.2 基础设施层的五个未来方向(第 7.3 节)
- 与新兴技术融合:例如量子计算(quantum computing)有潜力带来显著加速,需要探索深度学习软硬件与它的结合方式。
- 深度学习民主化(Democratization):目标是让软硬件对更广大的开发者/研究者可得,持续降低构建高效嵌入式深度学习方案的技术门槛。
- 发展专用硬件:现有嵌入式系统大多只优化传统卷积网络,忽视了 ViT 这类新架构。原文明确点名 ViT 已经在分类、检测、分割、视频分析上挑战卷积网络的主导地位,因此需要为 ViT 家族(而不只是卷积网络)开发专用加速硬件。
- 发展更强的硬件:网络复杂度持续爆炸,加上以 ChatGPT 为代表的 LLM 把复杂度推到前所未有的量级,算力鸿沟(computational gap)持续扩大,必须从硬件侧创新去弥合。
- 发展端侧训练基础设施:传统范式是”云端/服务器 GPU 上训练 → 部署到端侧推理”。端侧训练(on-device training)的新范式让预训练模型能适配本地传感器或用户新采集的数据,用户无需把数据传到云上,从而显著保护数据隐私与安全。但现有嵌入式系统通常只为推理优化,不支持高效训练,因为训练过程存在内存瓶颈。
第 5 点尤其值得注意:它把”隐私”和”内存瓶颈”两件事绑在了一起——端侧训练的价值是隐私,障碍是内存。这跟第④篇讲的端侧学习是完全呼应的。
6.3 应用层的两个未来方向(第 8.3 节)
(1)LLM 驱动的嵌入式应用 从 GPT-3 开始,LLM 在各种语言任务上表现惊人,ChatGPT 在多个知识领域超过了人类水平。但现代 LLM 的训练和推理都需要海量算力,很难直接部署在资源受限的嵌入式设备上,目前只能跑在远程 GPU 服务器上通过网络提供服务——这既不方便,又带来数据安全与隐私顾虑。
破局的方向就是压缩:原文点名了两个代表性工作——SmoothQuant 和 AWQ,它们开创了把 LLM 权重从高位宽量化到低位宽的做法,从而降低其高得吓人的计算复杂度,让强大的 LLM 有可能跑在资源受限的嵌入式系统上。
(2)多模态嵌入式应用 现有嵌入式应用大多只处理单一模态(要么视觉,要么语言)。但现代嵌入式系统往往配备多种先进传感器,可以同时采集视觉、听觉、触觉等多模态数据。多模态的最大收益是能对真实动态环境形成更全面的理解,从而显著提升目标准确率和在真实环境中的可靠性。
典型例子是自动驾驶:视觉信息可以很容易地与雷达(radar)、激光雷达(lidar)融合,联合使用以提供更安全更好的驾驶体验。
但多模态也有两个明确的代价:
- 多模态数据的实时同步可能需要大量算力;
- 数据对齐(alignment)、标定(calibration)与融合(fusion)引入了额外复杂度,需要更先进的软件算法来保证实时性。
6.4 把五篇串成一句话
如果用一句话总结整个系列:让深度学习在资源受限的设备上跑起来,需要在”网络结构、压缩算法、训练范式、软件框架、硬件平台”五个层次上同时做减法,而减法的难度随着 ViT 和 LLM 的兴起正在急剧上升。 前四篇讲的是”怎么把模型变小”,本篇讲的是”变小之后跑在什么上、用来干什么”,而未来方向告诉我们:模型还在继续变大,所以这场军备竞赛远没有结束。
七、常见坑与通关标准
常见坑
- 只看算力数字选型。TOPS 是 INT8、TFLOPS 是浮点,口径不同不能横比;而且峰值算力在实际模型上往往只能跑到 30%~60%。先锁功耗预算,再看软件栈兼容性,最后才看算力。
- 忽略 USB 加速棒的宿主成本。Intel NCS / Edge TPU / Orange Pi AI Stick 都不能独立工作,它们的内存、存储栏是 N/A,选型时必须把宿主设备的功耗和成本一起算。
- 用训练框架直接上设备。完整 PyTorch/TensorFlow 的体积、依赖和运行时开销在嵌入式设备上都是不可接受的,必须走 TFLite / MNN / NCNN 这类推理引擎。
- 以为峰值内存够就行。图像复原这类任务的瓶颈是运行时峰值内存而非算力,所以才有”面向内存”的结构化剪枝。内存不够是崩溃,算力不够只是慢。
- 以为端侧部署不需要考虑训练侧。端侧训练(on-device training)因为隐私诉求正在成为刚需,而它的瓶颈是训练期的内存,不是推理期的算力——硬件选型时如果完全不考虑训练,将来会被卡住。
- 把框架当竞品。TensorFlow 和 PyTorch 是两种哲学(静态图 vs 动态图),CoreML / PaddlePaddle / BigDL 各有明确的生态归属。选型的正确顺序是”硬件 → 推理引擎 → 模型格式 → 训练框架”。
- 把 ViT 当卷积网络的直接替代品。ViT 在精度上更强,但在端侧因为更难并行化而效率更差,需要专门的高效变体和专用硬件。
通关标准
- 能说清端侧为什么不能直接用训练框架(体积、依赖、运行时三层原因)。
- 能说出至少 6 个软件框架的出身年份与最初想解决的问题,并知道 Keras 已经是 TensorFlow 2.0 的默认 API。
- 能复述 Table 4 中至少 5 款硬件的功耗/算力/价格,并解释为什么 TOPS 与 TFLOPS 不能横比。
- 会自己算能效比(算力/功耗)和性价比(价格/算力),并解释”越贵的平台单位算力越便宜但功耗越高”这个悖论。
- 能讲清 AlexNet 和 ResNet 各自的里程碑意义,以及为什么今天端侧主干网络大多是 ResNet 的后代。
- 能解释 ViT 在端侧效率低的原因(更难并行化 → 资源利用率不足)。
- 能列出端侧 NLP 的五类应用,并说明端侧训练的价值(隐私)与障碍(训练内存瓶颈)。
- 能说出应用层两个未来方向及其各自代价(LLM 需要量化压缩;多模态需要同步与对齐融合)。
自测 1:为什么 PyTorch 的动态计算图在研究时是优势,在端侧部署时却成了需要额外处理的东西?
答案要点:动态图允许网络结构随数据改变(比如 RNN 变长序列、依赖数据的分支),改结构不用重写代码,所以研究迭代快。但端侧部署需要静态做算子融合、内存复用、定点化这些优化,动态图无法提前确定计算流程。因此 PyTorch 的端侧路线是先用 TorchScript 把动态图 trace 或 script 成静态中间表示,再做优化和量化(PyTorch Mobile)。
自测 2:Google Edge TPU 只有 4 TOPS,远不如 AGX Orin 的 275 TOPS,为什么它仍然是很多嵌入式视觉项目的首选?
答案要点:三个理由。① 功耗:Edge TPU 只要 2 W,AGX Orin 要 15–40 W,电池供电或无风扇场景根本用不了后者。② 价格:1,999。③ 易用性:它与 TensorFlow Lite 无缝配合,Coral Dev Board 还预装了 TFLite、Edge TPU API 和示例程序,开箱即用。代价是算子支持有限、只吃 TFLite、不能独立工作需插宿主。
自测 3:Table 4 里 Intel Neural Compute Stick 的算力是 0.1 TFLOPS,Jetson Nano 是 0.472 TFLOPS,看起来 NCS 差了近 5 倍。但为什么不能据此说"Nano 一定比 NCS 强"?
答案要点:① 算力口径需要统一比较(两者都是 TFLOPS,这部分可比),但 NCS 的功耗只有 0.5–1.5 W,Nano 要 5–10 W,按能效比算 NCS ≈ 0.067 TFLOPS/W vs Nano ≈ 0.047 TFLOPS/W,NCS 反而更高。② NCS 是 USB 加速棒,需要宿主设备;Nano 是独立单板机,自带 CPU/内存/存储。系统级功耗和成本必须包含宿主。③ 支持的软件框架不同(NCS 不支持 PyTorch/Keras)。
自测 4:综述为什么强调要为 ViT 而不是只为卷积网络开发专用硬件?请说出完整的因果链。
答案要点:ViT 及其变体在图像分类、目标检测、语义分割、视频分析上持续超越卷积网络、刷新 SOTA → 但它在资源受限的嵌入式系统上更难并行化,导致显著的资源利用率不足,端侧效率反而不如卷积网络 → 现有嵌入式系统大多只针对传统卷积网络的训练/推理做优化,忽视了这一新进展 → 因此需要为 ViT 家族开发专用嵌入式计算系统,否则 ViT 的潜力无法在能力较弱的设备上释放。
自测 5:端侧训练(on-device training)的价值和障碍分别是什么?它和第④篇讲的端侧大模型有什么关系?
答案要点:价值——预训练模型可以适配本地传感器或用户新采集的数据,用户无需把数据上传到云端,从而显著保护数据隐私与安全;同时也省掉了云端往返的延迟。障碍——传统嵌入式系统通常只为推理优化,训练过程存在内存瓶颈(需要保存反向传播的激活值、优化器状态等),因此无法高效支持端侧训练,需要新的软硬件基础设施。与第④篇的关系:端侧大模型同样受内存墙约束(例如 Transformer 的 KV Cache 随上下文长度线性增长),两者的破解思路高度重合——量化(SmoothQuant、AWQ 这类把权重从高位宽压到低位宽的方法)、内存优化的训练算法、以及为训练而非推理设计的硬件。