乐趣区

关于android:超轻量AI推理引擎MindSpore-Lite新版本发布支撑HMS-Core-AI领域全面升级

华为在 20 年 9 月份开源了 MindSpore Lite 1.0.0 版本之后,其接口易用性、算子性能与齐备度、第三方模型的广泛支持等方面,失去了泛滥手机利用开发者的宽泛认可。MindSpore Lite 为 HMS Core AI 畛域提供了全场景 AI 推理框架,撑持华为手机的相机、图库、钱包、浏览器的二维码扫描、物体辨认等 AI 相干模块,为各类华为穿戴、智慧屏等设施提供根底 AI 服务。同时,作为 HMS Core 凋谢给寰球开发者接入的重要能力之一,华为机器学习服务已为寰球 1000+ 利用接入,日均调用量超过 3 亿。

目前,在 21 年新年伊始,华为公布了 MindSpore Lite 1.1.0 版本,在算子性能优化、模型小型化、减速库主动裁剪工具、端侧模型训练、语音类模型反对、Java 接口凋谢、模型可视化等方面进行了全面降级,降级后的版本更轻、更快、更易用,新个性也会体现到 HMS Core 的新版本中。

1. 算子库优化与扩大

推理性能优化是本次版本的重头戏,除了继续的 ARM CPU(FP16/FP32/INT8) 性能优化,ARM GPU 和 X86_64 的优化也是本次的亮点。GPU 方面咱们除了传统的算子优化,还退出了在线交融、AutoTuning 等技术,使得 ARM GPU 推理性能大幅晋升;同时为了更好的反对 PC 侧推理,在 X86_64 算子方面咱们做了大量汇编层面的优化;通过大量模型的实测,MindSpore Lite 1.1.0 版本在推理性能方面在业界各类框架中极具竞争力。

1.1 ARM CPU 优化

咱们从引入缩小计算量的更优算法,到尽可能减少硬件访存从而进步指令吞吐量,MindSpore Lite 的 CPU 算子性能大幅晋升。咱们应用 TF Hub 官网上 100+ 端侧预置模型进行了推理时延比照测试,测试结果显示在 Mate30/P30 等高端机型上 MindSpore Lite 已全面超过官网数据,在 P20 等中低端机型上推理性能优于官网数据的占比也达到 97%。

1.1.1 FP16 推理性能

MindSpore Lite 全面反对 ARMv8.2 的 FP16 推理,推理时延根本达到了 FP32 类型推理的二分之一,在推理时延大幅升高的同时精度满足业务要求;咱们的 FP16 推理计划曾经在华为 HMS MLKit 和华为手机预置的各类 AI 服务中广泛利用。

因为 TF Lite 不反对 FP16 推理,所以在 FP16 推理性能比照测试环节中咱们只抉择了 MNN 最新的 1.1 版本,从测试后果看 MindSpore Lite 在 FP16 推理时延更低,性能体现更好。

华为 Mate30 上网络整体时延比照状况

华为 Mate30 上 FP16 推理时延比照

骁龙 865+ 上 FP16 推理时延比照

1.1.2 Int8 量化模型推理性能

对于量化算子,以后版本 MindSpore Lite 实现了在算法层面退出如 Convolution Kernel 为 3 ×3 的 Winograd 优化算法(目前次要针对非 ARMv8.2 机型),在反对 ARMv8.2 的高端机上应用 SDOT 指令对 MatMul、Fully Connection、Convolution 等算子进行优化,以及进步底层缓存命中率的一系列优化策略,使得 MindSpore Lite 量化推理性能失去大幅晋升,相较于 FP16 推理有 40%+ 的性能晋升。

咱们抉择了 TF Lite 最新 2.4 版本和 MNN 最新的 1.1 版本进行推理性能比照测试,应用的模型为 TF Hub 官网预置的量化模型(测试过程中咱们发现 MNN 存在大量量化模型无奈转换问题,甚至 TF Lite 对自家模型也存在转换问题),从测试后果看 MindSpore Lite 对量化模型无论在反对度还是推理性能方面,时延都是最低,体现最好。

华为 Mate30 上量化网络整体时延比照状况

ARMv8.2 机型测试

骁龙 865+ 上量化模型时延比照

ARMv8 机型测试


华为 P20 上量化模型时延比照

1.1.3 FP32 推理性能

同时为了确保在低端 CPU 上应用 MindSpore Lite 推理时可能同样取得业界最优的推理性能,咱们继续对 FP32 的推理性能进行了优化。咱们在华为 P20 上以 TFLite(2.4 版本)、MNN(1.1 版本) 作为比照对象,进行了 benchmark 性能测试,从测试后果中能够看出 MindSpore Lite FP32 推理时延还是最低,体现最好,但和其余框架的差距不大。

华为 P20 上量化模型时延比照

1.2 ARM GPU 优化

MindSpore Lite 1.1 版本咱们对 GPU 推理性能进行了重点优化,除了在算子层面进行了惯例优化外,还减少了在线交融、AutoTuning、OpenCL kernel 二进制 cache 机制等多种优化形式,使得整体性能较 MindSpore Lite 1.0 有 25%+ 的晋升;

咱们同样在华为 Mate30 上应用 TF Hub 官网 100+ 预置模型与 MNN(1.1 版本) 和 TF(2.4 版本) 进行了 GPU 推理性能比照测试,能够从下图的测试后果看出 MindSpore Lite GPU 推理性能在大部分模型时延上都是最低,MNN 则提早都比拟高。

华为 Mate30 上 GPU FP32 推理时延比照

1.3 X86_64 CPU 优化

本次版本咱们还对 X86_64 平台上的推理性能进行了大量优化工作,咱们在 Intel Core i7-8700 的 CPU 上与 Intel OpenVINO 和 MNN 在几个经典 CV 类网络上进行了 benchmark 测试,从测试后果看 MindSpore Lite 时延同样最低;

Intel Core i7-8700 X86_64 CPU 推理性能比照

1.4 更多的交融

以后 MindSpore Lite 版本曾经根本笼罩了机器视觉畛域通用的卷积相干交融 pattern,同时针对基于 Transformer 构造的语音模型和 LSTM 构造的模型进行了深度交融优化,次要包含将小算子交融成 Layernorm、LSTM 等大算子,多个 MatMul 交融成 BatchMatMul 算子,Slice 算子切分矩阵的前移交融等,使得语音类模型取得 20%+ 的晋升,后续咱们将尝试交融 pattern 的主动 schedule 性能。

2. 算子齐备度扩大

MindSpore Lite 反对包含 ARM CPU、ARM GPU、X86 CPU、Kirin NPU、MTK APU 在内的多种硬件平台。

2.1 ARM CPU

MindSpore Lite 是目前端侧推理框架中 CPU 算子反对最丰盛的框架之一,以后咱们的模型转换工具反对 TF Lite(100 个)、TF(53 个)、ONNX(96 个)以及 Caffe(26 个)等第三方框架算子定义的解析,做到了高兼容性,上文性能测试中咱们也提到过 MNN 对很多模型无奈转换,TF Lite 对自家官网预置模型的反对度也不够欠缺;MindSpore Lite 则实现了 121 个 FP32,55 个 FP16 以及 71 个 INT8 CPU 算子;而此次的 1.1 版本咱们对控制流算子也进行一次大的调整与欠缺,以便更好的反对语音类模型。

2.2 ARM GPU

新增 OpenCL 算子 10+,以后反对 GPU 算子总数为 58,根本实现常见 CV 类网络覆盖;新增在线交融、Auto Tuning 等个性反对,同时反对权重量化,实现 8bit 权重量化网络在 GPU 整网运行。

2.3 Kirin NPU

1.1 版本咱们欠缺了对华为麒麟 NPU 硬件平台的反对,减少了对 Kirin 9000 芯片的反对,同时新增了 50+ NPU 算子反对,从而实现反对大部分 CV 类场景在 NPU 上的减速执行;咱们在华为最新的 Mate 40 手机上进行了几个典型网络的 benchmark 验证,NPU 上推理时延较 CPU 推理有显著晋升;

Mate 40 上 NPU 和 CPU FP32/16 推理时延比照

3. 反对端侧训练

因为应用公共数据集训练的模型与实在用户场景存肯定的偏差,比方人脸识别、语音辨认等场景,咱们往往须要利用本地数据对预训练模型进行微调,从而进步本地模型推理的精度,改善用户体验。

MindSpore Lite 1.1 版本咱们将端侧训练框架进行了开源,首个版本给咱们带来了以下个性:

1) 反对 30+ 反向算子,提供 SGD、ADAM 等常见优化器及 CrossEntropy/SparsCrossEntropy/MSE 等损失函数;既可从零训练模型,也可指定特定网络层微调,达到迁徙学习目标;

2) 已反对 LeNet/AlexNet/ResNet/MobileNetV1/V2/V3 和 EffectiveNet 等网络训练,提供残缺的模型加载,转换和训练脚本,不便用户应用和调测;

3) MindSpore 云侧训练和端侧训练实现无缝对接,云侧模型可间接加载到端侧进行训练;

4) 反对 checkpoint 机制,训练过程异常中断后可疾速复原持续训练;

咱们的端侧训练框架曾经在华为局部设施的 AI 利用比方家庭相册等场景进行了商用,并获得了很好的用户体验。

4. 训练后量化

随着 AI 利用在端侧设施部署越来越广泛,而受制于端侧资源的局限性,对于模型小型化和推理性能晋升的挑战日益倍增。MindSpore Lite 提供了简略实用的训练后量化性能,最大水平压缩模型大小,减小内存占用,晋升推理速度,降低功耗。

训练后量化相较于量化重训具备两个显著劣势,一是无需大量训练数据集,二是无需从新训练,离线疾速转换。MindSpore Lite 训练后量化工具提供权重量化和全量化两种办法,反对 1~16bit 量化,反对分类,检测,NLP 等多种模型。

为保障训练后量化模型精度损失小,咱们采纳 pipeline 组合量化办法,一阶段采纳惯例线性量化伎俩对权重和激活值进行量化,二阶段对量化误差进行剖析,利用统计学办法对量化模型进行校对,弥补因量化带来的精度损失。

Pipeline 组合量化

以 TF 官网 MobileNet_v2 模型为例,MindSpore Lite 训练后量化 A8W8(激活值 8bit 量化、权重 8bit 量化)精度与 FP32 模型相比,经损失校对后,精度损失由 0.82% 降到 0.4%,同样实用 7bit 量化下,精度损失仍不超过 1%。

训练后全量化 mobilenet_v2 模型精度比照

咱们在 HMS Face 场景下模型进行了 INT8 权重量化 (模型 size 范畴 364KB~2.9MB),理论端到端辨认精度齐全满足服务要求。权重量化精度损失改正计划的绝对精度误差比照如下,能够看到损失改正计划下量化精度损失有明显降低。

Face 场景模型权重量化精度损失改正计划绝对精度损失比照

经外部大量测试和理论商用交付反馈,pipeline 组合量化办法效果显著,甚至小至 300KB 的模型,经 INT8 量化压缩后精度仍满足商用要求。

5. 易用性加强

5.1 减速库主动裁剪工具

为了满足局部对公布包大小有极致小型化诉求的场景,咱们提供了一个一键式裁剪工具,该工具能够依据用户指定的模型列表,主动裁剪出足以运行列表中指定模型的最小化 MindSpore Lite 版本。

5.2 离线工具参数精简

咱们对离线转换工具参数进行了精简,最大水平地进步转换工具的易用性,让开发者在转换三方模型时,无需感知三方模型的量化类型、输入输出节点名称和对应的数据类型等。

5.3 反对 Java 接口

1.1 版本正式凋谢了 Java 接口,以不便安卓开发者更简略的应用 MindSpore Lite 进行利用开发。

5.4 模型可视化

为了不便开发者调试,咱们在 Netron 开源社区提交了反对 MindSpore Lite 模型可视化的代码,当初开发者能够应用 Netron 工具可视化 MindSpore Lite 模型。置信能给开发者调试模型,尤其是一些结构复杂的模型,带来极大的不便。

6. 凋谢更多的端侧预置模型

为了不便开发者在端侧疾速部署本人的 AI 业务,MindSpore 凋谢了更多的适宜端侧应用的模型,其中不乏一些 MindSpore 首发的原创模型,这些模型能够不便的在 MindSpore Hub 上获取。

6.1 应用 SCOP 算法在 Oxford-III Pet 数据集对 ResNet50 网络剪枝的模型

SCOP:Scientific Control for Reliable Neural Network Pruning,是华为诺亚方舟实验室和北京大学联结提出了一种迷信管制机制最小化剪枝节点对网络输入的影响。采纳这种剪枝办法,可能实现 ImageNet 数据集上仅损失 ResNet101 网络 0.01% 的 top- 1 准确率,模型参数量和计算量别离缩小 57.8% 和 60.2%,显著优于 SOTA 办法。模型链接:https://www.mindspore.cn/reso…

6.2 基于 SLB 轻量化技术的模型 VGG-Small

该模型应用华为诺亚方舟实验室入选 NeurIPS 2020 模型轻量化技术中的 SLB 量化技术(Searching for Low-Bit Weights in Quantized Neural NetWorks),在 CIFAR10 上基于 2 -bit weight 和 2 -bit activation 量化失去的端侧模型。模型链接:https://www.mindspore.cn/reso…

如果想理解更多对于以上 MindSpore 首发模型中应用的轻量化技术,请参考:https://mp.weixin.qq.com/s/H1zg3ezZDdXQ-IQ7ki0Mtw

测试数据来自于华为外部实验室测试数据,有疑难能够在 MindSpore 论坛上进行反馈:https://bbs.huaweicloud.com/forum/forum-1076-1.html

MindSpore 开源代码仓链接:https://gitee.com/mindspore/mindspore


原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0202453926225910779?fid=18

原作者:胡椒

退出移动版