Глубокое обучение было неотъемлемой частью науки о данных. После всего, что связано с исследованием, анализом и визуализацией, большая часть остается предсказанием, и в большинстве случаев для этого мы часто склоняемся к нейронным сетям.

TensorFlow был основой глубокого обучения. Но что такое TensorFlowLite? Давайте сначала укажем

Поэкспериментируйте с несколькими уровнями, функциями активации, скрытыми блоками и т. Д.

И когда точность хороша

МЫ СДЕЛАЛИ!!!! ПРАВИЛЬНО?

Но, как стажер по науке о данных @ 1mg, я узнал еще об одном аспекте, а именно о оптимизации с точки зрения как размера, так и задержки. Это потому, что именно в промышленной реализации мы ограничены ресурсами (мир Kaggle довольно далек от реальности !!)

Следовательно, для начала мне была предоставлена ​​существующая модель на 744 МБ (для некоторой бинарной классификации). Поскольку размер огромен, его невозможно развернуть без какой-либо оптимизации.

Настало время, когда на помощь пришел Tensorflow Lite!

Прежде чем двигаться дальше, давайте сначала разберемся с квантованием.

Квантование- Это относится к отображению некоторых значений (непрерывных) в конечный диапазон дискретных значений. В качестве примера можно взять округление, масштабирование, усечение десятичных частей.

Tensorflow lite также выполняет такое квантование модели, преобразуя 32-битное представление в 8-битное.

Возвращаясь, позвольте мне рассказать вам о шагах, которым нужно следовать.

На заметку из приведенного выше фрагмента кода:

  • from_keras_model_file () используется только для моделей Keras. Для других моделей см. здесь
  • Оптимизация имеет 3 варианта: DEFAULT, OPTIMIZE_FOR_SIZE, OPTIMIZE_FOR_LATENCY.
  • После этого запишите модель с расширением .tflite в виде двоичного файла.

Преобразование выполнено, теперь самое сложное, с использованием модели tflite для прогнозирования -

На заметку из приведенного выше фрагмента:

  • Входные данные могут подаваться один за другим (с использованием цикла или генератора) в виде списка, то есть списка с одним элементом (как «[x]» выше в set_tensor)
  • Последняя строка преобразовывает вывод (список массивов), полученный в виде списка элементов (каждый прогноз как один элемент)

И ЭТО СДЕЛАНО !!!!

Вот несколько важных фактов обо всем этом квантовании, которое мы только что сделали:

  • Tensorflow Lite предназначен для устройств Android / IoT. Следовательно, можно будет уменьшить его размер. Но если его нужно развернуть где-нибудь еще (на серверах), это сильно повлияет на задержку.

Размер может уменьшиться примерно в 10 раз (для моей модели около 12, с 744 МБ до 62 МБ).

Задержка уменьшена со 100 изображений в секунду до 5 изображений в секунду.

Точность осталась примерно такой же (примерно 0,5%), но ROC-AUC осталась. сильно поражены (6-7%, от 0,89 до 0,82)

  • Низкая задержка (кроме мобильных устройств) связана с загрузкой модели с помощью интерпретатора (фрагмент 2). Интерпретатор ищет процессор ARM и включает некоторое внутреннее преобразование для использования модели .tflite на серверах, вызывая задержку в Interpreter.invoke (). И поскольку это должно использоваться для каждого прогноза, задержка сравнительно довольно велика.

Я буду больше исследовать эту проблему с задержкой, и если я найду какое-то решение, будьте готовы к следующему !!!