Организация проектов мобильного машинного обучения с помощью Fritz CLI

Когда пыль осела на недавнем проекте мобильного машинного обучения, у нас было накоплено 392 различных модельных контрольных точки. Из-за множества архитектур для тестирования, десятков гиперпараметров для анализа и поддержки множества форматов на устройстве модели быстро накапливались. Сохранение организованности и создание эффективных рабочих процессов были ключами к успеху. Мы знали, что нам нужно упростить этот процесс, поэтому мы разработали набор инструментов командной строки, чтобы помочь.

Fritz CLI - это набор утилит, предназначенных для улучшения рабочих процессов мобильного машинного обучения с любого терминала или Jupyter Notebook. Вот несколько конкретных возможностей, которые предлагает CLI:

  • Легко конвертируйте и отправляйте модели из ваших обучающих сценариев прямо на мобильные устройства для тестирования.
  • Мгновенно развертывайте новые версии модели в своем мобильном приложении, не покидая рабочего процесса Python.
  • Выполните интеграцию с популярной платформой обучения, такой как Keras, чтобы последняя версия вашей модели всегда была доступна в вашем приложении для немедленного тестирования.
  • Храните метаданные с каждой моделью, чтобы не упустить из виду гиперпараметры или эксперименты.

Чтобы показать вам, как это работает, давайте обучим несколько моделей для использования в мобильном приложении и воспользуемся Fritz AI, чтобы отслеживать все в процессе. Мы рассмотрим:

  1. Установка и настройка Fritz CLI и библиотеки Python.
  2. Обучение простой модели Keras распознаванию цифр MNIST и преобразование этой модели в мобильные форматы, такие как Core ML и TensorFlow Lite.
  3. Загрузка отдельных контрольных точек модели в Fritz AI с помощью интерфейса командной строки.
  4. Автоматическое создание и загрузка новых версий моделей с помощью обратного вызова Fritz Keras.
  5. Использование Fritz CLI для просмотра новых версий нашей модели и развертывания новой версии для пользователей по беспроводной сети.

Если вы хотите следовать интерактивной версии этого руководства, ознакомьтесь с нашей работающей записной книжкой Colab.

Давайте нырнем!

Чтобы максимально использовать возможности мобильных моделей машинного обучения, вам нужно будет отслеживать и улучшать их в процессе эксплуатации. Это может быть сложная работа, но наша сквозная платформа позволяет легко управлять моделями и улучшать их с течением времени.

Установка и настройка

Fritz CLI устанавливается через pip:

$ pip install fritz>=2.0.0

Обратите внимание, что для Fritz CLI требуется Python 3.

После установки вам нужно будет настроить интерфейс командной строки для подключения к вашей учетной записи. Если вы еще этого не сделали, вам нужно будет зарегистрировать бесплатную учетную запись Fritz AI.

Чтобы настроить интерфейс командной строки, войдите в свою учетную запись и выберите Обучение в меню слева. В разделе Конфигурация библиотеки Python вы найдете команду, в которой предварительно указаны ваш API и идентификатор проекта. Скопируйте эту команду и запустите ее в своем терминале.

$ fritz config update \
    --api-key <Your API Key will be here> \
    --project-id <Your Project ID will be here>

Теперь интерфейс командной строки Fritz будет настроен для этой учетной записи и проекта.

Просмотр всех проектов

Чтобы убедиться, что все работает, перечислим все доступные проекты Fritz AI. В Fritz AI вы можете организовывать свои приложения и модели с помощью проектов. Проект может содержать несколько приложений и моделей. Все модели в рамках проекта доступны для развертывания в приложениях одного проекта. По умолчанию Fritz AI создает проект при создании учетной записи, но вы можете создавать другие позже. Вы можете просмотреть все свои проекты, запустив

$ fritz projects
Project Name | Created | Project ID
— — — — — — — — — — — — — — — — — — — — — — — — — 
My Project   | 2019–06–11 14:50 | <your project id>

Обучение модели

Пришло время обучить модель. Чтобы упростить этот урок, мы будем использовать Keras для обучения очень маленькой нейронной сети на наборе данных MNIST. Мы также конвертируем эту модель Keras в форматы Core ML и TensorFlow Lite для вывода на устройстве.

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

Нам также необходимо преобразовать нашу модель Keras в форматы, удобные для мобильных устройств, что показано во фрагменте кода ниже.

Сохранение модели контрольной точки и загрузка в Fritz AI

Теперь, когда мы обучили модель, давайте перенесем ее во Fritz AI на хранение. Один из способов сделать это - сохранить контрольные точки на нашем локальном диске, а затем загрузить их через интерфейс командной строки Fritz с помощью команды fritz model upload <path>. Мы добавим несколько гиперпараметров к имени файла, чтобы помочь нам отслеживать события.

* Обратите внимание на идентификаторы модели, которые генерируются при загрузке новой модели.

В терминале запускаем:

$ fritz model upload mnist_cnn_lr001_batchsize128.h5
$ fritz model upload mnist_cnn_lr001_batchsize128.mlmodel
$ fritz model upload mnist_cnn_lr001_batchsize128.tflite

Model: mnist_cnn_lr001_batchsize128
ID: 3ad7fcc365994d4797edf43e6d9db9a0
— — — — — — — — — — — — — — — — — — — -
Created At : 2019–07–06 13:53
Description : None
Model Format : keras
Project ID : 09fgy8vsbibg87qe730ytjvhgsa0
Active Version : 1
Is Global : False
ModelVersion: mnist_cnn_lr001_batchsize128.h5
ID: od9fug0w3d4797edf43e6d9db9a0
— — — — — — — — — — — — — — — — — — — — — — —
Model Size : 221.15 KB
Filename : mnist_cnn_lr001_batchsize128.h5
Version : 1
Metadata : {}
Loss : None

После успешной загрузки интерфейс командной строки Fritz отобразит информацию о модели, такую ​​как имя, формат и размер, а также идентификатор модели и идентификатор версии, которые вы можете использовать для ссылки на модель в будущем.

Список всех моделей, загруженных в Fritz AI

Мы можем увидеть все модели, которые мы загрузили во Fritz AI, запустив:

$ fritz models

Model Name | Framework | Active Version | Created | Updated | Model ID
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
mnist_cnn_lr001_batchsize128 | coreml | 1 | 2019–07–05 18:15 | 2019–07–05 18:15 | a1e036fcab38438f82f8ccdc24515618
mnist_cnn_lr001_batchsize128 | tflite | 1 | 2019–07–05 18:15 | 2019–07–05 18:15 | fe678bb8e20f4f4ebcc57c1282fb25a9
mnist_cnn_lr001_batchsize128 | keras | 1 | 2019–07–05 16:36 | 2019–07–05 16:36 | 3ad7fcc365994d4797edf43e6d9db9a0

Все три наши модели теперь надежно хранятся в Fritz AI, где мы можем поделиться ими с остальной командой и развернуть их в приложениях для Android или iOS.

Заинтересованы в мобильной разработке на основе машинного обучения? Подпишитесь на рассылку Heartbeat Newsletter и присоединитесь к крупнейшему сообществу, посвященному мобильному машинному обучению.

Подпишитесь на рассылку Fritz AI Newsletter, чтобы изнутри взглянуть на все, что связано с мобильным машинным обучением: решать общие задачи, исследовать его ценность и узнавать, как оно может помочь в масштабировании вашего бизнеса.

Автоматическая загрузка новых версий моделей в Fritz AI во время обучения

Большинство проектов машинного обучения не завершаются всего за одну итерацию модели. Давайте продолжим обучать нашу модель и экспериментировать с разными гиперпараметрами. Например, давайте попробуем увеличить размер пакета до 256, чтобы улучшить сходимость.

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

Здесь мы воспользуемся библиотекой Fritz Python для создания специального обратного вызова Keras, который не только загрузит наши контрольные точки Keras, но также преобразует модели в Core ML и TensorFlow lite для мобильного использования. Недавно обученные контрольные точки будут загружены в Fritz AI как новые версии моделей, которые мы загрузили вручную, так что все наши эксперименты будут хорошо сгруппированы вместе.

Обратите внимание, что все версии модели должны иметь одинаковый формат, входные и выходные данные. Если вы измените входные или выходные данные модели, вам потребуется создать совершенно новую модель. Fritz AI позволяет менять версии моделей на устройствах в режиме реального времени, и при изменении входов или выходов код вашего приложения необходимо будет соответствующим образом обновить.

При создании обратного вызова Fritz Keras мы:

  1. Сказал Fritz AI загрузить контрольные точки как новые версии ранее загруженных моделей.
  2. Предусмотрена функция преобразования для каждого мобильного формата, который мы хотим поддерживать.
  3. К каждой модели прикреплены метаданные, относящиеся к конфигурации обучения.

Теперь давайте обучим новую модель.

Проверка версий модели с помощью Fritz CLI

Обратный вызов Keras автоматически загрузил в Fritz AI три новые модели: контрольные точки Keras, Core ML и TensorFlow Lite. Давайте воспользуемся интерфейсом командной строки, чтобы убедиться, что все оказалось в нужном месте.

Мы используем тот же идентификатор модели из функции обратного вызова, чтобы перечислить все версии модели:

$ fritz model <YOUR MODEL ID> versions
Provided Filename                    | Version | Created          | Model Size | Version ID                       | Loss
----------------------------------------------------------------------------------------------------------------------------------------mnist.mlmodel | 2 | 2019–07–05 19:02 | 64.37 KB | f6d7d9fe6d75456b938dccaffa3e6040 | 0.05641
mnist_cnn_lr001_batchsize128.mlmodel | 1 | 2019–07–05 18:15 | 64.37 KB | 1209f5c62d7042a6ba9f91d3353e19fa |

Мы видим, что в настоящее время во Fritz AI есть две версии модели. Оригинал мы загрузили вручную, а тот, который был загружен нашим обратным вызовом. Если мы получим подробную информацию о самом последнем Version ID, мы увидим, что были добавлены дополнительные метаданные.

Fritz AI автоматически фиксировал значения потерь и точности наших моделей во время их контрольных точек, а также метаданные в нашей конфигурации обучения.

$ fritz model <YOUR MODEL ID> version <YOUR VERSION ID> details
ModelVersion: mnist.mlmodel
ID: f6d7d9fe6d75456b938dccaffa3e6040
— — — — — — — — — — — — — — — — — — — — — — —
Model Size : 64.37 KB
Filename : mnist.mlmodel
Version : 2
Metadata : {
  “epoch”: 4,
  “job_arguments”: {
    “batch_size”: 256,
    “learning_rate”: 0.001
  },
  “keras_model_path”: “mnist.h5”,
  “loss”: 0.056408329899373805,
  “sparse_categorical_accuracy”: 0.9829122807268511,
  “val_loss”: 0.0632634837826093,
  “val_sparse_categorical_accuracy”: 0.9823333315849304
}
Loss : 0.056408329899373805

Развертывание новой модели с помощью Fritz CLI

Теперь, когда мы подготовили новую версию, давайте представим ее всем нашим пользователям. Как указано в приведенной выше команде, наша новая модель - это версия номер 2. Мы можем установить для нее активную версию, поставляемую пользователям, запустив:

$ fritz model <YOUR MODEL ID> update --active-version 2

Резюме

Подведем итоги того, что мы сделали:

  1. Установил и настроил Fritz CLI и библиотеку Python.
  2. Обучил первую версию модели Keras по MNIST.
  3. Конвертировал обученную модель Keras в модели Core ML и TensorFlow Lite.
  4. Загрузили отдельные контрольные точки в Fritz AI с помощью интерфейса командной строки.
  5. Использовал обратный вызов Fritz Keras для автоматической загрузки недавно обученных версий моделей в Fritz AI.
  6. Использовал интерфейс командной строки Fritz для просмотра новых версий нашей модели и развертывания новой версии для пользователей по беспроводной сети.

Как вы видели, Fritz CLI можно использовать как в терминале, так и в записной книжке Jupyter, поэтому вы можете организовывать, искать и управлять моделями без необходимости переключаться между приложениями и инструментами. Действуйте быстрее и никогда не упустите возможность снова проиграть эксперимент с Fritz AI.

Если вы хотите использовать интерактивную версию этого руководства, ознакомьтесь с нашей работающей записной книжкой Colab.

Другие возможности Fritz CLI

# Download model checkpoints
$ fritz model <YOUR MODEL ID> download
# Benchmark models for use on mobile devices
$ fritz model benchmark — version-id <YOUR VERSION ID>

Что дальше?

Что еще можно сделать с Fritz AI

Если вы готовы начать добавлять функции машинного обучения в свое мобильное приложение, существует множество других способов, которыми может помочь Fritz AI. Вот некоторые ресурсы, которые вам стоит изучить:

Узнайте больше о Fritz AI по адресу: https://www.fritz.ai

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

Независимая редакция, Heartbeat спонсируется и публикуется Fritz AI, платформой машинного обучения, которая помогает разработчикам учить устройства видеть, слышать, ощущать и думать. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, переходите к нашему призыву участников. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Fritz AI Newsletter), присоединяйтесь к нам на » «Slack и подписывайтесь на Fritz AI в Twitter , чтобы узнавать обо всех последних новостях в области мобильного машинного обучения.