2016-11-18 10 views
1

モバイルでニューラルネットワークを実行したい。現在、私はMxnet(http://mxnet.io)を導入するためのフレームワークを検討しています(推論の場合のみ)。モバイルでの実行時間のパフォーマンスが心配なので、携帯電話のGPU(Android/iOS)で動作するかどうかを知りたい。ドキュメントには、GPUだけでなくトレーニング用に複数のCPUを使用できることが記載されていますが、携帯電話のGPUをモバイルで推論できるかどうかはまだ分かりません。 BLASへの依存について言及しています。そのため、モバイル上でCPUを使用しているようです。推測のためにmxnetでモバイルGPUを使用できるかどうか教えてください。そうでない場合、私の他の選択肢は何ですか?Mxnet on mobile GPU

答えて

2

私はDeeplearning4jを使ってAndroid用ニューラルネットアプリケーションを作成しました。 Deeplearning4jはJavaをベースにしているため、Android向けの良いマッチであると思っていました。私の経験に基づいて、あなたの質問のいくつかに答えることができます。

あなたの最も基本的な質問に答えるために:

私は推論にmxnetとモバイルGPUを使用することができるかどうか誰も私に教えてもらえますか?

答えは:いいえ。これは以下の説明です。

BLASへの依存について言及しています。そのため、モバイルでCPUを使用しているようです。

BLAS (Basic Linear Algebraic Subprograms)は、AI計算の中心です。これらの複雑なモデルに含まれる膨大な数値計算のために、数学ルーチンはできるだけ最適化する必要があります。 GPUの計算能力はAIモデルにとって理想的なプロセッサになっています。

MXNetはAtlas(libblas)、OpenBLAS、およびMKLを使用できるようです。これらはCPUベースのライブラリです。

現在、GPUでBLASを実行するためのメイン(および—は、—のみ)のオプションは、NVIDIA(CUDA)GPU専用に開発されたCuBLASです。明らかに、MXNetはCPUライブラリに加えてCuBLASを使用することができます。

多くのモバイルデバイスのGPUは、専用のBLASライブラリをまだ持っていないARMアーキテクチャで動作する低電力チップです。

他のオプションはありますか?

  • ただ、CPUと行きます。非常に計算量が多いトレーニングなので、推論にCPUを使用することは、あなたが思うほどのストップではありません。 OpenBLASでは、ルーチンはアセンブリで記述され、実行可能なCPUごとに手作業で最適化されます。これにはARMが含まれます。

  • サーバーで認識を行います。認識を実行し、結果をデバイスに返す画像をサーバーに送信した別のデモアプリケーションを使用した後、このアプローチは、全体的な応答時間の短縮や100MBをインストールするスペースを見つける必要がないなど、 (!) 応用。

あなたはまた、C++を使用して、iOSのタグ付けするので - あなたは、クロスプラットフォームを行くしようとしている場合MXNetのようなベースのフレームワークは、おそらく最良の選択です。しかし、1つの巨人を作成する方法。cppファイルを作成し、単純なネイティブインタフェースを提供すると、Androidに十分な柔軟性が得られない可能性があります。 Deeplearning4jは、JNIの複雑さを取り除くJavaCPPを使用することで、問題をきれいに解決しました。

関連する問題