Когда был запущен Raspberry Pi 4, я сел, чтобы обновить тесты, которые я собирал для аппаратного ускорителя нового поколения, предназначенного для машинного обучения на периферии. К сожалению, хотя была версия официального колеса TensorFlow, готовая к запуску Raspberry Pi 4, все еще были проблемы со сборкой TensorFlow Lite сообществом.

Это только что изменилось, так вот ...

Заголовок результатов сравнительного анализа

Используя TensorFlow Lite, мы видим значительное увеличение скорости по сравнению с исходными результатами наших предыдущих тестов с использованием полной версии TensorFlow.

Мы видим от 3 до 4 увеличение скорости вывода между нашим исходным тестом TensorFlow и новыми результатами с использованием TensorFlow Lite. Это уменьшение времени вывода делает Raspberry Pi 4 прямым конкурентом NVIDIA Jetson Nano.

Часть I - Бенчмаркинг

Более подробный анализ результатов

Бенчмаркинг проводился с использованием TensorFlow и TensorFlow Lite на Raspberry Pi 3, Model B + и на 4-гигабайтной версии Raspberry Pi 4, Model B. Логический вывод был выполнен с использованием моделей MobileNet v2 SSD и MobileNet v1 0.75 depth SSD, обе модели обучены на наборе данных Общие объекты в контексте (COCO), преобразованном в TensorFlow Lite.

Использовалось одно тестовое изображение размером 3888 × 2916 пикселей, содержащее в кадре два узнаваемых объекта - банан🍌 и яблоко🍎. Размер изображения был уменьшен до 300 × 300 пикселей перед представлением модели, и каждая модель запускалась 10 000 раз, прежде чем было взято среднее время вывода. Первый прогон логического вывода, который занимал больше времени из-за накладных расходов на загрузку, был отброшен.

⚠️ Предупреждение. Согласно нашим предыдущим результатам с Raspberry Pi 4 добавление маленького вентилятора, питаемого от собственных заголовков GPIO Raspberry Pi, было необходимо для сохранения температура процессора стабильна и предотвращает тепловое дросселирование процессора.

Эти результаты теперь можно сравнить с нашими ранее полученными результатами тестов на следующих платформах; Coral Dev Board, NVIDIA Jetson Nano, Coral USB Accelerator с Raspberry Pi, оригинальный Movidus Neural Compute Stick с Raspberry Pi и снова Intel Neural Compute Stick 2 второго поколения с Raspberry Pi. Также было проведено сравнение с платформой Xnor.ai AI2GO с использованием их собственной сети двоичной свертки.

ℹ️ Информация Raspberry Pi 3, модель B + не поддерживает USB 3, поэтому нет результатов для Coral USB Accelerator, использующего USB на Raspberry Pi 3. Хотя результаты для обоих поколений Compute Stick на основе Movidius, Movidus Neural Compute Stick и Intel Neural Compute Stick 2 недоступны в Raspberry Pi 4, Модель B, поскольку платформа Intel OpenVINO пока не работает с Python 3.7. Не стоит ожидать официальной поддержки Intel Neural Compute Stick на Raspberry Pi 4 в ближайшее время.

Наши первоначальные результаты TensorFlow на новом Raspberry Pi 4 показали увеличение производительности в 2 раза. Это примерно соответствует ожиданиям, поскольку, учитывая, что емкость NEON в два раза больше, чем у Raspberry Pi 3, мы ожидаем такого повышения производительности для хорошо написанных ядер NEON.

Однако мы видим значительно большее увеличение скорости с TensorFlow Lite, с увеличением в 3–4 раза скорости вывода между нашим тестом TensorFlow и новыми результатами с использованием TensorFlow Lite. Этот результат намного больше, чем мы видели, когда подобное сравнение было проведено с Raspberry Pi 3, где мы увидели только увеличение производительности в 2 раза между двумя пакетами. Таким образом, мы наблюдаем почти удвоение ожидаемого прироста скорости при использовании TensorFlow Lite по сравнению с TensorFlow на Raspberry Pi 4.

Это уменьшение времени вывода приводит к тому, что Raspberry Pi 4 напрямую конкурирует как с NVIDIA Jetson Nano, так и с аппаратным обеспечением на базе Movidius от Intel.

⚠️ Предупреждение. Вероятно, что Movidius Neural Compute Stick и Intel Neural Compute Stick 2 будут показывать более высокую производительность при подключении к Raspberry Pi 4 через USB 3, а не через USB 2. Однако до тех пор, пока фреймворк OpenVINO не поддерживает Python 3.7, это невозможно знать наверняка. В настоящее время оборудование Intel на базе Movidius не используется с Rapsberry Pi 4.

Если вы хотели приобрести NVIDIA Jetson Nano для машинного обучения, то теперь, кажется, нет причин для этого, поскольку Raspberry Pi 4 работает на том же уровне, но за половину стоимости.

Резюме

Увеличение производительности, наблюдаемое с новым Raspberry Pi 4, делает его очень конкурентоспособной платформой для компьютерного обучения на периферии. Увеличение производительности вывода, которое мы наблюдаем с TensorFlow Lite на Raspberry Pi 4, ставит его прямо в конкуренцию NVIDIA Jetson Nano и Intel Neural Compute Stick 2.

Новый Raspberry Pi 4 по цене 35 долларов за версию с 1 ГБ и 55 долларов за версию с 4 ГБ значительно дешевле, чем NVIDIA Jetson Nano и Intel Neural Compute Stick 2, оба из которых стоят 99 долларов. Особенно с учетом того, что для Compute Stick эта стоимость добавляется к стоимости самого Raspberry Pi, которая, таким образом, составляет в общей сложности 134 доллара.

Хотя Coral Dev Board от Google по-прежнему является лучшей в своем классе платой, добавление USB 3 к Raspberry Pi 4 означает, что теперь она также конкурентоспособна по цене с Dev Board. Версия нового Raspberry Pi 4 с объемом памяти 1 ГБ по цене 35 долларов США значительно дешевле, чем Coral Dev Board за 149 долларов США. Добавление дополнительных 74,99 доллара за USB-ускоритель Coral к цене Raspberry Pi означает, что вы можете превзойти предыдущую лучшую в своем классе плату за 109,99 долларов. Это экономия на 39,01 доллара США по сравнению с Coral Dev Board за счет повышения производительности.

Часть II - Методология

Установка TensorFlow Lite на Raspberry Pi

Раньше установка TensorFlow на Raspberry Pi была непростым процессом, однако к середине прошлого года все стало намного проще. К счастью, благодаря сообществу, установить TensorFlow Lite не намного сложнее. Нам не придется прибегать к созданию его из исходников.

Скачайте последний выпуск Raspbian Lite и настройте свой Raspberry Pi. Если вы не используете проводную сеть или не подключили к Raspberry Pi дисплей и клавиатуру, вам нужно как минимум подключить Raspberry Pi к беспроводной сети и включить SSH.

После того, как вы настроили Raspberry Pi, включите его, а затем откройте окно терминала на своем ноутбуке и подключитесь к Raspberry Pi по SSH.

% ssh [email protected]

К счастью, хотя официальный двоичный дистрибутив TensorFlow не включает сборку TensorFlow Lite, существует неофициальный дистрибутив, который включает, и это означает, что нам не нужно прибегать к сборке и установке из исходного кода.

После того, как вы вошли в свой Raspberry Pi, обновите и установите наши инструменты сборки, а затем установите TensorFlow Lite.

$ sudo apt-get update
$ sudo apt-get install build-essential
$ sudo apt-get install git

ℹ️ Информация Если вы работаете над существующей установкой, и у вас уже установлена ​​официальная версия TensorFlow, убедитесь, что у вас установлена сначала удалил его, выполнив sudo pip3 uninstall tensorflow.

Хотя пока нет сборки TensorFlow Lite специально для Python 3.7, мы можем использовать одну из сборок Python 3.5. Однако перед установкой необходимо внести некоторые изменения.

$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install python3-pip
$ git clone https://github.com/PINTO0309/Tensorflow-bin.git
$ cd Tensorflow-bin
$ mv tensorflow-1.14.0-cp35-cp35m-linux_armv7l.whl tensorflow-1.14.0-cp37-cp37m-linux_armv7l.whl
$ pip3 install --upgrade setuptools
$ pip3 install tensorflow-1.14.0-cp37-cp37m-linux_armv7l.whl

Установка займет некоторое время. Так что вы можете сделать перерыв и выпить кофе. После завершения установки вы можете протестировать установку следующим образом.

$ python3 -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"

⚠️ Предупреждение Когда вы import tensorflow. Это не вызывает беспокойства и просто указывает на то, что колесо было создано под Python 3.5, а вы используете его с Python 3.7. Вы можете спокойно игнорировать предупреждения.

Теперь, когда TensorFlow успешно установлен, нам нужно установить OpenCV, вилку Pillow библиотеки изображений Python (PIL) и библиотеку NumPy.

$ sudo apt-get install python3-opencv
$ pip3 install Pillow
$ pip3 install numpy

Теперь мы должны быть готовы запустить наши сценарии тестирования производительности.

Код сравнительного анализа

Код из наших предыдущих тестов был повторно использован без изменений.



В заключение

По-прежнему сложно сравнивать эти платформы на равных. Но очевидно, что новый Raspberry Pi 4 - это прочная платформа для логических выводов машинного обучения на периферии.

Ссылки на предыдущие контрольные показатели

Если вас интересуют подробности предыдущих тестов.









Ссылки на руководства по началу работы

Если вы хотите начать работу с любым аппаратным ускорителем, который я использовал во время своих тестов, я собрал руководства по началу работы для оборудования Google, Intel и NVIDIA, на которое я смотрел во время анализа.