首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >移动GPU上的Mxnet

移动GPU上的Mxnet
EN

Stack Overflow用户
提问于 2016-11-18 13:37:28
回答 1查看 2K关注 0票数 1

我想在手机上运行一个神经网络。目前,我正在探索Mxnet (http://mxnet.io)框架来部署它(仅用于推断)。由于我担心手机的执行时间性能,我想知道它是否运行在移动电话的GPU (Android/iOS)上。文档中提到,它可以使用多个CPU和GPU进行培训,但还不清楚是否可以在移动电话上使用GPU进行推理。它提到了对BLAS的依赖,因为它似乎在移动上使用CPU。有人能告诉我是否可以使用移动GPU和mxnet进行推理吗?如果没有,我的其他选择是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-18 17:43:56

更新:神经网络API现在可以从API27(Oreo8.1)开始在安卓设备上使用。API提供了一个较低级别的工具,高级机器学习框架(例如Tensorflow,Caffe)可以用来构建模型。它是一个C语言API,可以通过(NDK)访问。

NNAPI为硬件供应商提供了一个服务提供者接口(,SPI),用于为图形处理单元(GPU)和数字信号处理器(DSP)等计算硬件提供驱动程序。因此,NNAPI为高性能计算提供了一个抽象。在没有硬件加速驱动程序的情况下,会出现CPU回退。

对于那些想要在Android上实现机器学习模型的人来说,现在选择的框架是Tensorflow Lite。Tensorflow Lite for Android是在NNAPI之上实现的,因此Tensorflow模型在可用时将获得硬件加速。Tensorflow Lite还有其他优化,可以从移动平台中挤出更多的性能。

这一过程如下:

  • 在Keras上开发和培训您的模型(使用Tensorflow后端)
  • 或者使用预先训练过的模型
  • 将“冻结”模型保存为Tensorflow protobuf格式
  • 使用Tensorflow优化转换器将原型转换为“预解析”tflite模型格式。

Tensorflow Lite开发人员指南

我使用Deeplearning4j为安卓系统创建了一个神经网络应用程序。因为Deeplearning4j是基于Java的,所以我认为这将是与Android很好的匹配。根据我在这方面的经验,我可以回答你的一些问题。

要回答你最基本的问题:

有人能告诉我是否可以使用移动GPU和mxnet进行推理吗?

答案是:不。对此的解释如下。

它提到了对BLAS的依赖,因为它似乎在移动上使用CPU。

基本线性代数子程序是人工智能计算的核心。由于这些复杂模型所涉及的数字运算量很大,所以必须尽可能地优化数学例程。GPU的计算能力使它们成为AI模型的理想处理器。

看来MXNet可以使用Atlas (libblas)、OpenBLAS和MKL。这些是基于CPU的库。

目前,在GPU上运行BLAS的主要选项(而且--据我所知)是CuBLAS,专门为NVIDIA (CUDA) GPU开发。显然,除了CPU库之外,MXNet还可以使用CuBLAS。

许多移动设备中的GPU是一种低功耗芯片,它与ARM架构一起工作,目前还没有专用的BLAS库。

我还有别的选择吗?

  • 就用CPU吧。因为这是高度的计算机密集的训练,所以使用CPU进行推理并不是你所认为的停止显示。在OpenBLAS中,例程是用程序集编写的,并针对它可以运行的每个CPU进行手工优化。这包括手臂。
  • 在服务器上进行识别。在开发了另一个演示应用程序,该应用程序将图像发送给执行识别的服务器并将结果返回给设备后,我认为这种方法对用户有一些好处,例如更好的总体响应时间和不必为安装100 as (!)找到空间。应用程序。

由于您也标记了iOS,如果您试图跨平台的话,使用MXNet这样的基于C++的框架可能是最好的选择。但是,他们创建一个巨大的.cpp文件和提供一个简单的原生界面的方法可能无法为安卓提供足够的灵活性。Deeplearning4j通过使用JavaCPP来很好地解决了这个问题,它将复杂性从JNI中去掉。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40678514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档