优化方向一:计算优化

>>模型结构优化

针对业务特点,设计精度高、鲁棒性强深度学习模型,比如一些精度网络的设计:ResNet, MobileNet, GoogleNetYOLOSSD

>>深度模型剪枝

模型剪枝分:结构化剪枝和非结构化剪枝

结构化剪枝

  1. 滤波器剪枝:对卷积核进行纵向修剪
  2. 通道剪枝:对卷积核进行横向修剪
  3. 层剪枝:直接删除整个卷积层

非结构化剪枝

  1. 细粒度剪枝:对连接或神经元进行剪枝,类型dropout操作
  2. 向量剪枝:比细粒度剪枝粒度更大,对卷积核内部剪枝,类似dropconnect操作
  3. 卷积核剪枝:去除某个卷积核,类似droplayer

优缺点: 受底层计算平台限制较多,精度损失明显失效,适用于精度不敏感的模型推理应用场景

>>深度模型量化

模型量化方法:将float-32映射到int类型,分为:线性量化和非线性量化

  1. 线性量化:float-32映射到int的间隔相同,对称量化
  2. 非线性量化:float-32映射到int类型间隔不同,非对称量化
  3. 随机量化:与非对称量化类型,在量化中引入噪音

量化类型:

  1. 动态量化:网络训练后量化。根据不同的输入,计算出不同的缩放因子,性能差、用于非常大的模型
  2. 静态量化:网络训练后量化。将缩放因子固定住,性能比动态量化好,适用中大型模型
  3. 量化感知:网络训练中量化。将量化插入到网络中,边训练边量化,训练速度低,精度高

优缺点: 技术适用较广,加速明显。

>>深度模型蒸馏

teacher模型指导student模型,以期待提高student模型精度,一般来说,teacher模型精度高,不过计算复杂度也大

不适用在终端设备部署,而student模型计算复杂度虽符合终端设备部署,但精度不够,为此可采用蒸馏处理

蒸馏更适合于分类任务,对于teacherstudent模型的选择,对蒸馏也起到一定的作用

一般说,teacherstudents的结构越是类似,蒸馏后的两者精度差异就越小


优化方向二:系统优化

通信机制优化:利用分布式集群等技术,提高模型训练速度和推理速度

可参见:https://www.usenix.org/conference/


优化方向三:硬件推理优化

>>深度模型推理硬件

GPU/TPU/NPU

>>深度模型推理加速库/部署工具:

NCNN:腾讯公司开发的移动端平台部署工具

TensorRT:NVIDIA公司针对自家GPU开发的部署工具

MediaPipe: 谷歌针对自家硬件设备和深度学习框架开发的部署工具

ONNX:微软、亚马逊等公司开发的神经网络交换格式

除此之外还有一些深度学习框架有自己的专用部署工具如:

TFLITE:tensorflow为自己提供的部署服务

LibTorch:pytorch为自己提供的部署服务

11-11 10:16