Сравнение фреймворков машинного обучения для разработки модели и дальнейшего внедрения в мобильные устройства.
В прошлой статье была сформирована задача и обзор существующих датасетов для решения этой задачи. Эту статью я хочу посвятить обзору и сравнению существующих фреймворков машинного обучения для мобильных устройств.
Выбор пал на мобильные устройства так как чаще всего написанные ноты надо оцифровать “здесь и сейчас” и смартфон может предоставить данную возможность.
Наиболее популярными фреймворками являются следующие:
TensorFlow, TensroFlow-Lite
PyTorch, PyTorch Mobile
CoreML
ONNX
1. TensorFlow, TensroFlow-Lite
TensorFlow — открытый Python-фреймворк машинного обучения (Machine Learning), созданный командой Google Brain, объединяет множество моделей и алгоритмов глубокого обучения (Deep Learning). TensorFlow предоставляет API-интерфейс на Python, а сами вычисления происходят на высокопроизводительном C++.
Большой вклад внёс фреймворк глубокого обучения Keras. До некоторого времени TensorFlow был библиотекой тензорных вычислений, в то время как Keras служит для создания архитектур нейронных сетей (Neural Net). Начиная со 2-й версией, Keras стал частью TensorFlow, что дало ему огромное преимущество, так как не нужно настраивать их по отдельности. Процессы построения и обучения моделей глубокого обучения очень просты и удобны. Однако, результирующая модель может быть очень “тяжела” для мобильного устройства, поэтому для использования модели на нем используют облегченную версию TensorFlow Lite, специально разработанную для этих целей. Архитектура выглядит следующим образом.
2. PyTorch, PyTorch Mobile
PyTorch — современная библиотека глубокого обучения, которую развивает компания Facebook. Библиотека считается одной из предпочтительных исследовательских платформ глубокого обучения, так как создана для обеспечения максимальной гибкости и скорости. Она известен тем, что обеспечивает две из наиболее высокоуровневых функций; а именно, тензорные вычисления с сильной поддержкой ускорения GPU и построение глубоких нейронных сетей. На сегодняшний момент является главным конкурентом TensorFlow. PyTorch Mobile упрощает процесс развертывания моделей на мобильных устройствах. На данный момент находится в стадии beta - тестирования. Архитектура для PyTorch Mobile выглядит следующим образом.
3. CoreML
Core ML — это библиотека машинного обучения, выпущенная в свет Apple на WWDC 2017. Она позволяет iOS разработчикам добавлять в свои приложения персонализированный опыт в режиме реального времени с использованием передовых локальных моделей машинного обучения с помощью Neural Engine.
Приложение будет разрабатываться под Android, однако нельзя было не упомянуть данный фреймворк, так как он достаточно популярен и используются для решения задач машинного обучения.
4. ONNX
ONNX — это открытый формат, созданный для представления моделей машинного обучения. ONNX определяет общий набор операторов и общий формат файлов, позволяющий разработчикам использовать модели с различными платформами, инструментами, средами выполнения и компиляторами. По сути через ONNX можно переносить модели на разные фреймворки, а именно обучать модель на одном, а затем переносить на фреймворк для внедрения модели в мобильное приложение.
Стоит упомянуть, что Microsoft выложил исходный код ONNX Runtime - кроссплатформенного ускорителя машинного обучения для вывода и обучения, с помощью которого можно ускорять модели, построенные на других фреймворках.
Есть еще несколько фреймворков, однако я считаю, что упомянутых выше будет достаточно для разработки приложения.
Исходя из написанного выше имеет смысл сравнить между собой два фреймворка.
Преимущества TensorFlow:
Простой встроенный высокоуровневый API.
Многофункциональность.
Имеет свой фреймворк для развертывания в produсtion.
Хорошая поддержка под мобильные устройства, что является весомым аргументом в данном случае
Подробная документация.
Однако, несмотря на свои преимущества есть и несколько минусов:
Использование статических графов из-за чего трудно вносить изменения.
Сложная отладка
Преимущества PyTorch:
Использование динамического графа вычислений, что позволяет быстро вносить изменения в модель
Интуитивно понятный интерфейс
Подробная документация
К минусам, вероятно, можно отнести то, что инструмент для внедрения модели пока находится в тестировании, но на мой взгляд он не критичен.
Таким образом, на мой взгляд, для разработки модели, которая будет распознавать рукописные нотные знаки, больше подходит PyTorch. Что на счёт внедрения, то возможно релевантно будет, используя ONNX, перенести эту модель на TensroFlow-Lite.