2016-11-18 8 views
1

Я хочу запустить нейронную сеть на мобильном телефоне. В настоящее время я изучаю структуру Mxnet (http://mxnet.io) для ее развертывания (только для вывода). Поскольку меня беспокоит производительность исполнения на мобильном устройстве, я хочу знать, работает ли он на графическом процессоре мобильных телефонов (Android/iOS). В документации упоминается, что он может использовать несколько процессоров, а также графические процессоры для обучения, но до сих пор неясно, может ли он использовать графический процессор мобильного телефона для вывода на мобильный. В нем упоминается зависимость от BLAS, из-за чего, по-видимому, он использует процессор на мобильных устройствах. Может кто-нибудь скажет мне, могу ли я использовать мобильный GPU с mxnet для вывода? Если нет, то каковы мои другие варианты?Mxnet на мобильном GPU

ответ

2

Я прошел упражнение по созданию приложения для нейронной сети для Android, используя Deeplearning4j. Поскольку Deeplearning4j основан на Java, я думал, что это будет хорошим подходом для Android. Основываясь на моем опыте, я могу ответить на некоторые из ваших вопросов.

Чтобы ответить на самый главный вопрос:

Может кто-нибудь пожалуйста, скажите мне, если я могу использовать мобильный GPU с mxnet для вывода?

Ответ: Нет. Объяснение этого следует.

В нем упоминается зависимость от BLAS, из-за которой, по-видимому, он использует процессор на мобильных устройствах.

BLAS (Basic Linear Algebraic Subprograms) находится в основе расчета ИИ. Из-за огромного количества хрустов числа, участвующих в этих сложных моделях, математические процедуры должны быть оптимизированы как можно больше. Вычислительная огневая мощь графических процессоров делает их идеальными процессорами для моделей ИИ.

Похоже, что MXNet может использовать Atlas (libblas), OpenBLAS и MKL. Это библиотеки на базе процессоров.

В настоящее время основной (и —), насколько я знаю —) опция для запуска BLAS на GPU - CuBLAS, разработанная специально для графических процессоров NVIDIA (CUDA). По-видимому, MXNet может использовать CuBLAS в дополнение к библиотекам CPU.

Графический процессор на многих мобильных устройствах - это микросхема с более низким энергопотреблением, которая работает с архитектурой ARM, у которой еще нет выделенной библиотеки BLAS.

какие у меня другие варианты?

  • Просто идти с CPU. Поскольку это очень интенсивный процесс обучения, использование процессора для вывода - это не шоу-стоппер, о котором вы думаете. В OpenBLAS подпрограммы написаны в сборке и оптимизированы вручную для каждого процессора, на котором он может работать. Это включает ARM.

  • Распознавание на сервере. После работы над другим демо-приложением, которое отправило изображение на сервер, который выполнил распознавание и вернул результаты на устройство, я думаю, что этот подход имеет некоторые преимущества для пользователя, такие как лучшее время отклика и отсутствие места для установки 100 МБ (!) заявление.

Поскольку вы также помечены IOS, используя C++ - на основе рамки, как MXNet, вероятно, лучший выбор, если вы пытаетесь идти кросс-платформенный. Но их метод создания одного гиганта.cpp-файл и предоставление простого родного интерфейса могут не дать вам достаточно гибкости для Android. Deeplearning4j решила эту проблему довольно элегантно, используя JavaCPP, которая усложняет JNI.

Смежные вопросы