物联网设备智能推理技术解析
立即解锁
发布时间: 2025-08-29 09:58:26 阅读量: 16 订阅数: 22 AIGC 


物联网学习技术精要
### 物联网设备智能推理技术解析
#### 1. KD训练及其拓展
KD训练在手写识别和语音识别两个数据集中展现出有效性。不过,直接模仿大模型输出对小模型而言存在挑战,且随着模型深度增加,小模型模拟大模型会更困难,因为最终层的监督信号需传播到早期层。
为应对该挑战,研究者提出了Fitnets方法,即在中间层加入监督信号。具体操作步骤如下:
- 对比并最小化大、小模型中间层输出的差异,让小模型在预测的中间步骤向大模型学习。这里的“小”指的是层的宽度而非深度。
- 采用提示训练(hint training)预训练小模型前半部分的参数。
- 再运用KD训练来训练所有参数,使小模型更好地模仿大模型各层的知识。但由于大、小模型的能力差距显著,这种更积极的学习方法并非普遍适用。
基于前人工作,研究者拓展了KD的概念和应用。不再让小模型直接拟合大模型的输出,而是聚焦于对齐两个模型层之间的关系,这种关系由层间的内积定义,构建一个M×N的矩阵来表示。具体步骤为:
- 依据大模型的特征相似性保留(FSP)矩阵调整小模型的参数,以对齐层关系。
- 继续使用原始损失函数(如交叉熵)微调小模型的参数,旨在保留两个模型的特征相似性,同时维持原始学习目标。
#### 2. 物联网设备推理库
设备端模型的推理性能受硬件、模型和软件(如深度学习执行引擎或库)等多种因素影响。各大厂商开发了自己的深度学习库,如下表所示:
| Library | Developer | CPU FP32 | CPU INT8 | GPU FP32 | GPU INT8 | DSP INT8 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| TFlite | Google | ✓ | ✓ | ✓ | ✓ | ✓ |
| Pytorch Mobile | Facebook | ✓ | ✓ | | | |
| NCNN | Tencent | ✓ | ✓ | ✓ | ✓ | |
| MNN | Alibaba | ✓ | ✓ | ✓ | ✓ | |
| MACE | Xiaomi | ✓ | ✓ | ✓ | ✓ | |
| SNPE | Qualcomm | ✓ | ✓ | ✓ | ✓ | ✓ |
当前的深度学习库常未充分利用不同硬件平台的能力。每个库通常至少支持一种硬件平台,如CPU,但PyTorchMobile缺乏GPU加速支持。不同硬件上,同一模型使用不同库的推理性能可能不同,主要原因有:
- 硬件生态因架构差异(如大小核、缓存大小、GPU容量等)高度碎片化。
- 模型结构的异质性也有影响,例如深度卷积算子和传统卷积算子的缓存访问模式不同。
即使使用相同的GPU,深度学习库也会提供不同的后端选项。以MNN为例,它提供Vulkan、OpenGL和OpenCL三种后端。不同后端适用于不同模型和设备,这既与后端的底层设计有关,也和开发者在其上实现深度学习算子的方式有关。
TFLite和SNPE可为运行在DSP上的INT8模型提供加速能力。例如,高通DSP具备AI能力,集成了Hexagon向量扩展(HVX)加速,还使用Winograd算法加速卷积计算,且DSP在节能方面比推理速度优势更显著。
为在设备上执行模型时达到最佳性能,开发者常需集成多个深度学习库,并根据当前模型和硬件平台动态选择合适的库。但由于软件复杂度和开发工作量大,这种方法在实践中很少实施,因此需要更轻量级的系统来高效利用不同库的最佳性能。
#### 3. 物联网设备推理系统
##### 3.1 基于边缘缓存的推理
深度学习应用依赖物联网设备提供的实时数据,这些数据有时间和空间相似性特点。时间上,相机捕获的视频流中连续帧常有相似背景或场景元素;空间上,人们日常活动模式有较高重复性。不过,重复使用相同数据会降低模型准确性,所以有效利用缓存策略对平衡准确性和效率至关重要。
以下是几种代表性的缓存策略及操作步骤:
- **Starfish**:
- 识别在现有可穿戴设备上并行多个视觉应用以进行同步识别和预测任务的需求。
- 因不同应用对同一输入图像执行算法时存在冗余操作和内存消耗,将CV库从应用中解耦,作为独立进程(Core)运行。
- 将API调用转换为跨进程调用,让Core进程处理所有视觉应用的CV库调用。
- 采用缓存机制减少冗余计算和存储,以CV库调用的API为关键缓存元素。Starfish基于安卓系统,针对OpenCV库进行优化,有效减少冗余操作,提高资源利用率。
- **DeepMon**:
- 相机捕获视频流,处理每帧将其转换为信息流输出给用户。
- 利用物联网设备(如智能手机和智能眼镜)捕获的视频流中连续帧的像素相似性作为缓存,减少CNN的计算量。
- 重新设计每个CNN层的前向算法,使前一帧的(部分)计算结果能在中间计算过程中复用。
- **Potluck**:
- 当多个应用使用相同CNN模型进行图像识别时,缓存CNN模型的输出。
- 开发者指定可变长度的特征向量(如SIFT、SURF等)作为缓存查找键。
- 为每个缓存项分配重要性值,根据存储容量优先缓存更重要的项。
- 使用最近邻算法找到最合适的缓存条目。Potluck作为安卓系统的后台服务实现,可将应用的计算延迟降低2.5 - 10倍。
##### 3.2 基于计算卸载的推理
已有大量研究探索本地和云资源的协同推理。与传统将任务完全卸载到服务器不同,这些研究利用CNN的固有特性优化卸载过程。
以下是几种基于计算卸载的推理系统比较:
| Work | Model | Network | Offloading granularity | Communication optimization | Scheduler | Decision variable(s) | Objectives |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| Neurosurgeon | AlexNet, VGG, Deepcace | WiFi, LTE, 3G | Layer | × | Dynamic, SO, Exhaustive | Sp
0
0
复制全文
相关推荐










