开源一年,阿里轻量级AI推理引擎MNN 1.0.0正式发布
本文插图
本文插图
在经过充分的行业调研后 , 阿里淘系技术部认为当时的推理引擎如TFLite不足以满足手机淘宝这样一个亿级用户与日活的超级App 。
于是 , 他们从零开始自己搭建了属于阿里巴巴的推理引擎MNN 。 1年前 , MNN在Github上开源 , 截止目前获得了3.9k Stars 。
MNN比其他的推理引擎更快更轻量 , 更符合手机淘宝这样庞大、复杂的生产部署环境 。 今年3月份 , 基于MNN的引擎设计与优化理念 , 阿里在MLSys 2020上发表了论文 , 并进行了oral presentation 。
开源1年以来 , 基于阿里内外的用户反馈和业务推动 , 他们称 , MNN在许多方面都取得了长足的进步:
- 在阿里巴巴集团内部得到广泛推广 , 成为了端上推理引擎的事实标准 , 覆盖了如手机淘宝、手机天猫、优酷、钉钉、闲鱼等20多个App 。
- 新添了模型训练的支持 , 从此MNN不再是单纯的推理引擎 , 而是具有推理+训练能力的深度学习引擎 。 基于MNN的训练能力 , 可以进行Quantization Aware Training (QAT) 。 在MobileNet上 , MNN量化训练之后的模型准确率几乎不降 。
- 持续投资于异构硬件后端的优化 , 尤其是利用ARMv8.2指令集 , 获得了两倍的性能提升 。
- 进一步完善Python工具链 , 累计新增超过150个接口 。
- 开源了应用层开箱即用的解决方案MNNKit , 包含了人脸跟踪与检测、人像分割、手势识别场景的解决方案 。
本文插图
模型训练
模型构建
MNN支持使用 Express (表达式)接口来构建模型 , 模型的构建、训练和保存具体可以参考说明文档 。
VARP x = inputs[0];x = conv1->forward(x);x = _MaxPool(x, {2, 2}, {2, 2});x = conv2->forward(x);x = _MaxPool(x, {2, 2}, {2, 2});x = _Convert(x, NCHW);x = _Reshape(x, {0, -1});x = ip1->forward(x);x = _Relu(x);x = dropout->forward(x);x = ip2->forward(x);x = _Softmax(x, 1);return {x};据介绍 , 以MNIST数据集 + Lenet网络为例 , 一个epoch 60000张图片 , 一般可达到97-98%的准确率 。 性能上 , 同款MBP上 , MNN比PyTorch和Caffe都有明显优势;而手机上 , MNN也达到了完全可用的性能水准 。
本文插图
量化训练
模型量化既可以降低模型大小 , 又可以利用硬件特性提升推理性能 , 可谓业务应用必备之选 。 但美中不足之处在于 , 模型量化会带来一定的精度损失 —— 对于精度攸关的项目 , 就难免要做出艰难的选择 。
本文插图
为此 , MNN借助自身模型训练能力 , 实现了模型训练量化 , 具体实现可以参考说明文档 。 精度和压缩率方面 , 以MobileNet V2为例说明:
注1:训练和验证均采用ImageNet数据集 。 训练采用32为batch size , 执行100个迭代 , 即 , 使用了3200张图片进行训练;精度验证则使用了50000张图片 。
注2:原始模型为TensorFlow官方模型 , 官方准确率为71.8% , 但因预处理代码上有细微差别 , 我们测试原始模型的准确率结果稍高于官方;
- 王石头科技阿里和华为终有一场较量!AI芯片自研实力,究竟谁更胜一筹?
- #小学语文#小学语文一年级下册【全册学霸笔记】,给孩子收藏打印!
- 『阿里』万科阿里京东扎堆养猪,养猪成了大厂们的新希望?
- IT之家等于格力网店一年营业额,格力董明珠直播带货30分钟破亿
- 小E搞机母亲节来了!适合给妈妈添置的三款手机,你觉得合适吗?
- 「数学」一道一年级数学题,家长想了两个小时,硬是不知道孩子错在哪
- 阿里巴巴▲适合普通人的投资方法,让你躺着赚钱
- 饿了么饿了么创始人是个大学生,670亿卖给阿里,现在吃穿不愁了吧!
- 马丽■内测一年微信“支付分”正式上线,消费更便利了?
- 「扶贫」湖北提前一年完成易地扶贫迁建安置任务 99%以上搬迁户实现脱贫