其他分享
首页 > 其他分享> > 移动平台模型裁剪与优化的技术

移动平台模型裁剪与优化的技术

作者:互联网

此为初稿,后续将继续完善。

目录

前言

移动平台开发的基础原理与架构设计
基础 AI 与移动平台开发核心学习路径
掌握核心模型裁剪与优化的工程方法
基于优化的TensorFlow Lite的落地案例

一、移动端机器学习

移动平台包含的范围

移动电话
平板电脑
可穿戴设备
智能手环、智能手环、智能眼镜、智能腰带
嵌入式设备:树莓派
边缘计算节点

边缘计算

基本概念

本质

面临的挑战

万物互联,参数了边缘计算。边缘测
在这里插入图片描述

边缘计算应用

Machine learing on the go
在这里插入图片描述

云计算与边缘计算的区别
在这里插入图片描述

移动平台

内存 体系结构

计算问题

模型文件巨大,临时内存空间,计算过程中占据的内存空间。
在这里插入图片描述
tf pytoch
指令集加速
减小模型体积
TF-Lite 前向引擎,在移动平台。

速度越快,加剧负载。普遍性的优化。特定性的场景优化有时无能为力。
移动深度学习框架开发。
国内:
腾讯 NCNN
百度 PaddleLite

不能完全依赖框架
稀疏量化
有时牺牲精度,追求速度,平衡点。

总结:
在移动就是在移动平台运行。
云端: ws

实时本地运行技术, 尤为关键。自动驾驶,
降低功耗,提高性能和效率。

在这里插入图片描述

移动平台化

ARM体系结构、Neon指令集、Neon Intrinsics、线性倒数优化问题、卷积、池化、ARM Linux开发基地、ARM工具链、主流前向引擎和框架、架构、代码结构等、ARM内存模型、指令加速。

数据预处理

缺失值处理、去噪声、平滑、去均值、归一化、标准化、使用和掌握实时处理系统、编程实战等

二、移动端开发核心学习路径

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、ARM体系结构

概述

X86 复杂指令集计算。

执行模式

性能优化模式

v8向下兼容

CPU下的SIMD指令:单指令,多数据。
类似于pc和服务器端采用的:Gpu计算采用的模式

基础数据类型

AArch64向量格式

在AArch64状态下,使用Vn表示SIMD和浮点数寄存器,其中n的取值范围是0~31,也就是一共32个寄存器。引用寄存器的方式为Vn*CM,SIMD和浮点寄存器提供了3种具体的数据格式,分别是:

AArch32向量格式

  1. 32位模式的ARM使用的向量寄存器类型描述方式与64位不同
    • 64位在寄存器引用种说明了向量数据类型
    • 32位模式则选择在指令中说明具体向量数据类型
      比如向量乘法指令是VMUL,数据类型说明符是.F32,那么针对这种数据类型的向量赋值指令就是VMUL.F32。
  2. 数据类型说明符
    在这里插入图片描述
    在这里插入图片描述

Neon指令集

Neon指令集处理模式

ARM内存模式

ARMv8定义了多层次的存储系统

在这里插入图片描述

ARM加速方法

在这里插入图片描述

四、优化以及案例分析

Tensoflow Lite案例

Tensoflow Lite构建

Tensoflow Lite构建基于Bazel

Tensoflow Lite构建

Tensoflow Lite构建

build可以删除不需要的平台支持,得到tf-lite的二进制文件会小的多,删除不需要的操作符。
删除操作符注册信息和源代码,这样可以大幅减小tf-lite编译出来的文件。
直接找到addBuilitin和AddCustom,然后针对某些操作进行改进,用到arm指令集的优化,做针对性的优化。

案例

图像分类
在这里插入图片描述

对象检测
在这里插入图片描述

语言识别
在这里插入图片描述
链接:https://github.com/tensorflow/examples/tree/master/lite/examples

提高预测性能和降低功耗。
其实,研发专有芯片,解决专有问题,软件优化加硬件优化,这才是最好的优化。

标签:Neon,模型,裁剪,数据类型,指令,寄存器,优化,ARM,向量
来源: https://blog.51cto.com/u_11495341/3036165