田海立@CSDN 2020-11-07

PyTorch 1.3中发布Pytorch Mobile,其支持情况如何,能否与TensorFlow Lite一较高下呢?本文试分析之。PyTorch Mobile的宣传显得要么诚意不足要么对行业领悟不够。目前只能说是有Mobile这个路在而已,与TFLite比不可同日而语至少目前的实现是。相对于Google移动端的即有Android生态布局,Facebook有其苦衷,要坚守其生态底线又要放弃次要考量去适配NNAPI才是其捷径。

一、历史

Facebook历史上,在Caffe2中号称设计之初就为移动部署考虑的,笔者也跟踪了几年,发现Caffe2对NNAPI的支持就是3年前提交过代码,也只是对几个最常用算子做了适配,几乎是无所作为,当然显然Caffe2目前也基本是被废弃的状态。现在PyTorch实现Mobile支持,特别是PyTorch作为训练(模型)框架,已占主导地位,当然也应关注其在移动领域的表现。

关注AI移动领域的读者应该有所了解,其实TensorFlow最初对移动的支持是通过TensotFlow Mobile,之后才是重新实现了TensorFlow Lite,而TensorFlow Mobile也终究是被放弃的。

二、PyTorch Mobile

据PyTorch Mobile网站介绍,处在Beta阶段,待API稳定之后,很快会推出稳定版。Feature包括:

  • 为ios,Android,Linux提供支持;
  • 提供API,涵盖将 ML 集成到移动应用中所需的常见预处理和集成任务;
  • 通过TorchScript IR支持tracing与scripting;
  • 支持 XNNPACK为ARM CPU上执行浮点运算;
  • 集成QNNPACK 支持INT8量化内核库,可支持per-channel量化、动态量化以及其他方式;
  • 根据用户的应用需求进行构建级别的优化和选择性编译,也就是根据应用如用的模型里的算子可定制选择算子从而改变最终编译出目标程序的尺寸;
  • GPU/DSP/NPU等backends会在后续支持

典型工作流程:

与别的推理框架其实并没大的差别:

  1. 把训练出的模型进行量化(可选)
  2. 模型转换:pt(TorchScript)
  3. 优化(可选)
  4. 保存
  5. 部署到终端上执行

只是,上述1~4步骤中在Host上完成;步骤5在手机或别的端侧设备上部署。别的方案把这些都明白的交代清楚了而已。

三、PyTorch Mobile前景分析

PyTorch Mobile目前发布的信息可以说是没什么特别的新意,本来就在移动端落后了TensorFlow Lite很多,第一次发布这种情况也可以理解。

不过,有些说法就让人觉得要么真的跟产业离的太远,不知道端侧设备的痛点在哪,要么诚意不足!

看Facebook所宣传的PyTorch Mobile的“卖点”:

  • No new framework
  • No model conversion
  • No operator porting

No new framework:都已经转换了模型了,在端侧设备上执行pt模型了还说是没有新的Framework,应该是有一个端侧Runtime的东西在运行,什么量级的才叫Framework呢?刻意隐藏不告诉普通开发者而已。

No model conversion:变成pt TorchScript模型了不是模型转换吗?而且将来有NPU/GPU/DSP支持没有模型转换或编译的存在才怪。也还是偷换概念。

No operator porting:这点还没有深入看实现,不好说做没做。不过知道TensorFlow Mobile到TensorFlow Lite发展变化历程的读者应该都知道,这可能不是卖点,而是还没get到痛点。之前TensorFlow Mobile是挑选了一些TF的算子做了个c++的推理,但是尺寸和运行速度都是端上设备最关注的,所以后来才全部重写算子,重新实现而成的TFLite,TensorFlow Mobile也被放弃了,后来者可能连TF Mobile的名字都没听说过。当然,可能PyTorch Mobile也是重写了的,只是不宣传,隐藏起来而号称的算子一样而已。

目前PyTorch Mobile只能说是有Mobile这个路在而已,与TFLite的现状不可同日而语,至少目前的现状是

端侧设备更关注的是Latency、功耗、隐私等,所以对加速器的支持更重要

  • TFLite里对GPU通过Delegate机制(OpenCL/OpenGL ES)支持;
  • TFLite对Qualcomm Hexagon提供Delegate机制支持;
  • TFLite对通过NNAPI Delegate对所有NN Device(GPU/DSP/NPU)提供支持

当然对Arm CPU浮点计算今年7月也提供了XNNPACK delegate方式,加上之前Neon/dotproduct的INT计算支持等,基本上对CPU和加速器(NPU/GPU/DSP)的支持是完备的。

PyTorch Mobile到目前还没看到这部分的实现,公开场合也没看到具体计划。

四、总结

显然与Google不会加入ONNX一样,Facebook的PyTorch也不会提供模型转换或适配的方式转换到Google的TensorFlow生态。而是守住自己生态内的这条底线的情况下,尽量支持端侧设备。

Google手里有Android,并耕耘了这么多年,对移动设备的理解和生态布局不是Facebook所能比拟的。PyTorch Mobile如果把竞争对手瞄准TensorFlow Lite,不要针对AndroidNN(NNAPI),积极拥抱去适配NNAPI,倒是推动AI设备支持的捷径。AndroidNN诞生之初的定位本就是与上层ML Framework配合,不假定上层ML Framework一定是TFLite,这也刚好契合。

PyTorch Mobile在端侧可堪大用?能否与TensorFlow Lite一较高下相关推荐

  1. Paddle Lite端侧部署

    Paddle Lite端侧部署 端侧推理引擎的由来 随着深度学习的快速发展.特别是小型网络模型的不断成熟,原本应用到云端的深度学习推理,就可以放到终端上来做,比如手机.手表.摄像头.传感器.音响,也就 ...

  2. 搜狐新闻客户端Android端侧双擎Hybrid AI框架探索

    本文字数:2917字 预计阅读时间:24分钟 前言 人工智能,深度学习,机器学习,当今已经很广泛的应用到了手机端APP.无论是各类修图软件上的各种抠图美化,实时变装.还是社交软件的图片自动匹配文案.抑 ...

  3. 基于TensorFlow Lite的人声识别在端上的实现

    通过TensorFlow Lite,移动终端.IoT设备可以在端上实现声音识别,这可以应用在安防.医疗监护等领域.来自阿里巴巴闲鱼技术互动组仝辉和上叶通过TensorFlow Lite实现了一套完整的 ...

  4. 移动端目标识别(1)——使用TensorFlow Lite将tensorflow模型部署到移动端(ssd)之TensorFlow Lite简介...

    平时工作就是做深度学习,但是深度学习没有落地就是比较虚,目前在移动端或嵌入式端应用的比较实际,也了解到目前主要有 caffe2,腾讯ncnn,tensorflow,因为工作用tensorflow比较多 ...

  5. 大数据计算系统 Blink 在端侧的应用实践

    本文主要介绍了端侧通过Blink任务对埋点数据进行实时聚合和清洗,解决端侧日志时效性问题,并基于实时日志搭建线上监控运维体系,从而提升端侧整体的稳定性. Blink简介 介绍 Blink 前需要先认识 ...

  6. 开源背后 | 面对端侧推理引擎的挑战,阿里工程师如何应对?

    阿里妹导读:MNN(Mobile Neural Network)已于今年5月7日在 Github 上正式开源.淘宝无线开发专家--陈以鎏(离青)在 GMTC 全球大前端技术大会为大家分享了 MNN 开 ...

  7. MNN - 端侧推理引擎面临的挑战与应对

    MNN(Mobile Neural Network)已于今年5月7日在 Github 上正式开源.淘宝无线开发专家--陈以鎏(离青)在 GMTC 全球大前端技术大会为大家分享了 MNN 开发.开源中的 ...

  8. MNN通用端侧深度学习预测框架介绍

    最近端侧的AI模型应用越来越广泛,在端侧的模型应用会面对很多的问题,比如模型适配性和机型适配性,还有计算性能方面的问题.是否有某种框架可以解决这些端侧AI模型遇到的问题,Google.苹果等公司都有相 ...

  9. 直击行业痛点!端侧模型部署的成熟解决方案有了!

    深度学习经过多年发展,AI已经深入人心,事实上,在图像.文本领域,AI在多个产业已经落地了诸多应用,我们熟知的自动驾驶.语音助手,背后就大量运用了AI技术. 当下,飞桨PaddlePaddle.Ten ...

最新文章

  1. SAP QM创建一个包含Multiple Specification的检验计划
  2. Java数据库连接池知识汇总(C3P0+DBCP+Druid)
  3. 学习JS的心路历程-函式(一)
  4. 最优化课程(part1)
  5. OCP China Day 2021:开放计算十年,以全球协作打破创新边界
  6. 怎样把连续的多个commit整理成1个?
  7. 手机网站按住放大图片_如何用PPT制作放大镜效果?ppt怎样实现放大镜效果?PPT放大镜效果教学?...
  8. List集合中数据用set集合去重复,用set集合去重复数据重写了equals还是没成功!
  9. 网速慢?网线选对了吗?!网线类型对应带宽等详细参数
  10. 板翅式换热器(锯齿形)matlab的
  11. t/p命令的区别 cs和ds
  12. 为什么有些蓝牙耳机有底噪?高音质便宜实惠的蓝牙耳机分享
  13. 数据结构与算法必知基础知识
  14. 排错-通过LLDP信息查找环路(以H3C S5100为例)
  15. 砸蛋程序php,基于JQuery+PHP编写砸金蛋中奖程序
  16. python 行列转换_行列转换的Mysql,Excel,Python解法
  17. 2563: 阿狸和桃子的游戏
  18. libuv之msys2环境下编译
  19. 精华帖:最全的编程自学网站介绍,白嫖
  20. PMP可以自学报考吗

热门文章

  1. 开源中国源码学习(一)——简介
  2. 横空出世。复盘B站面试坑我最深的Java并发:JDK源码剖析。B站五面面经(附过程、答案)
  3. OBD-II协议对比介绍
  4. python写七夕超硬核礼物!
  5. 叮! Q币派送中,快来看看你中奖了吗?
  6. 第1章 KRKR游戏系统汉化说明
  7. c语言输出姓名JACK,C语言讲义——变量的输出
  8. nginx公网IP无法访问浏览器
  9. IOS-UIWebView字体控制
  10. 用计算机求锐角三角形的度数,三角函数超入门(2)锐角三角形的三角比