Организация проектов мобильного машинного обучения с помощью Fritz CLI
Когда пыль осела на недавнем проекте мобильного машинного обучения, у нас было накоплено 392 различных модельных контрольных точки. Из-за множества архитектур для тестирования, десятков гиперпараметров для анализа и поддержки множества форматов на устройстве модели быстро накапливались. Сохранение организованности и создание эффективных рабочих процессов были ключами к успеху. Мы знали, что нам нужно упростить этот процесс, поэтому мы разработали набор инструментов командной строки, чтобы помочь.
Fritz CLI - это набор утилит, предназначенных для улучшения рабочих процессов мобильного машинного обучения с любого терминала или Jupyter Notebook. Вот несколько конкретных возможностей, которые предлагает CLI:
- Легко конвертируйте и отправляйте модели из ваших обучающих сценариев прямо на мобильные устройства для тестирования.
- Мгновенно развертывайте новые версии модели в своем мобильном приложении, не покидая рабочего процесса Python.
- Выполните интеграцию с популярной платформой обучения, такой как Keras, чтобы последняя версия вашей модели всегда была доступна в вашем приложении для немедленного тестирования.
- Храните метаданные с каждой моделью, чтобы не упустить из виду гиперпараметры или эксперименты.
Чтобы показать вам, как это работает, давайте обучим несколько моделей для использования в мобильном приложении и воспользуемся Fritz AI, чтобы отслеживать все в процессе. Мы рассмотрим:
- Установка и настройка Fritz CLI и библиотеки Python.
- Обучение простой модели Keras распознаванию цифр MNIST и преобразование этой модели в мобильные форматы, такие как Core ML и TensorFlow Lite.
- Загрузка отдельных контрольных точек модели в Fritz AI с помощью интерфейса командной строки.
- Автоматическое создание и загрузка новых версий моделей с помощью обратного вызова Fritz Keras.
- Использование Fritz CLI для просмотра новых версий нашей модели и развертывания новой версии для пользователей по беспроводной сети.
Давайте нырнем!
Чтобы максимально использовать возможности мобильных моделей машинного обучения, вам нужно будет отслеживать и улучшать их в процессе эксплуатации. Это может быть сложная работа, но наша сквозная платформа позволяет легко управлять моделями и улучшать их с течением времени.
Установка и настройка
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 мы:
- Сказал Fritz AI загрузить контрольные точки как новые версии ранее загруженных моделей.
- Предусмотрена функция преобразования для каждого мобильного формата, который мы хотим поддерживать.
- К каждой модели прикреплены метаданные, относящиеся к конфигурации обучения.
Теперь давайте обучим новую модель.
Проверка версий модели с помощью 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
Резюме
Подведем итоги того, что мы сделали:
- Установил и настроил Fritz CLI и библиотеку Python.
- Обучил первую версию модели Keras по MNIST.
- Конвертировал обученную модель Keras в модели Core ML и TensorFlow Lite.
- Загрузили отдельные контрольные точки в Fritz AI с помощью интерфейса командной строки.
- Использовал обратный вызов Fritz Keras для автоматической загрузки недавно обученных версий моделей в Fritz AI.
- Использовал интерфейс командной строки Fritz для просмотра новых версий нашей модели и развертывания новой версии для пользователей по беспроводной сети.
Как вы видели, Fritz CLI можно использовать как в терминале, так и в записной книжке Jupyter, поэтому вы можете организовывать, искать и управлять моделями без необходимости переключаться между приложениями и инструментами. Действуйте быстрее и никогда не упустите возможность снова проиграть эксперимент с Fritz AI.
Другие возможности 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. Вот некоторые ресурсы, которые вам стоит изучить:
- Учебники по iOS
- Учебники по Android
- Обучающие библиотеки для таких задач, как сегментация изображений и передача стилей
- Замечательные ресурсы для мобильного машинного обучения
Узнайте больше о Fritz AI по адресу: https://www.fritz.ai
Примечание редактора. Heartbeat - это онлайн-публикация и сообщество, созданное авторами и посвященное изучению зарождающегося пересечения разработки мобильных приложений и машинного обучения. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.
Независимая редакция, Heartbeat спонсируется и публикуется Fritz AI, платформой машинного обучения, которая помогает разработчикам учить устройства видеть, слышать, ощущать и думать. Мы платим участникам и не продаем рекламу.
Если вы хотите внести свой вклад, переходите к нашему призыву участников. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Fritz AI Newsletter), присоединяйтесь к нам на » «Slack и подписывайтесь на Fritz AI в Twitter , чтобы узнавать обо всех последних новостях в области мобильного машинного обучения.