Решительный ИИ рад объявить об еще одной ключевой функции, упрощающей перенос моделей машинного обучения из исследовательской в ​​производственную, — реестре детерминированных моделей. Defined позволяет инженерам по глубокому обучению быстрее обучать лучшие модели с помощью таких функций, как простое в использовании распределенное обучение, современная настройка гиперпараметров и встроенное отслеживание и визуализация экспериментов. Новый реестр моделей позволяет вам извлечь реальную пользу из этих новых моделей, упрощая как никогда ранее переход моделей от исследований к производству. Никогда еще отслеживание кода, контрольных точек и артефактов, необходимых для запуска моделей в производственной среде, не было таким простым.

Преодоление разрыва между исследованиями и производством

По мере того как все больше и больше команд интегрируют модели глубокого обучения в производственные приложения, общей темой, которую мы видели, является сложность перевода исследований, проведенных при разработке модели, в программное обеспечение, готовое к интеграции в приложение. Эти трудности создали целые сообщества, посвященные решению «MLOPs», поскольку организации повсюду пытаются найти решения проблем, возникающих при внедрении машинного обучения в производство. Реестр моделей решает первую важнейшую проблему: координация передачи обученной модели для использования в производстве.

Физическое перемещение модели в производство — удивительно сложная задача. Чтобы успешно запустить модель в производство, вам потребуется:

  • Код, создающий модель и загружающий веса
  • Вес модели (и, возможно, другие артефакты)
  • Полная среда для использования модели
  • Код предварительной обработки данных

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

Готовые к производству модели с реестром моделей

Реестр моделей предоставляет стандартизированный инструмент для передачи моделей от разработки к производству. По своей сути реестр моделей прост: он предоставляет механизм для создания именованных «моделей» и поддержки версий этих моделей.

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

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

Пример кода

Давайте рассмотрим реальный пример того, как использовать Model Registry на практике. Сначала вы обучаете новую модель в Determined, например, в простом эксперименте с фиксированными гиперпараметрами. Вот как выглядит получившаяся обученная модель в веб-интерфейсе Definated:

Чтобы добавить эту модель в реестр моделей:

from determined.experimental import Determined

d = Determined()
model = d.create_model("object-detection")
checkpoint = d.get_experiment(6).top_checkpoint()
model_version = model.register_version(checkpoint.uuid)

Defined предоставляет простые API-интерфейсы для извлечения результатов ваших экспериментов и добавления их в реестр моделей. Здесь мы назовем нашу модель «обнаружение объекта» и создадим нашу первую версию этой модели из лучшей контрольной точки эксперимента 6.

Затем вы можете интегрировать эту модель в свою производственную систему с помощью простого фрагмента кода:

model = Determined().get_model("object-detection")
inference_model = model.get_version().load()

predictions = inference_model.predict(data)

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

По мере того, как вы продолжаете обновлять свою модель, вам понадобится способ поддерживать вашу производственную систему в актуальном состоянии. Скажем, вы переобучаете свою модель с помощью поиска гиперпараметров в Определенном и получите большой скачок в производительности:

Вы можете пометить новую версию модели в реестре моделей:

model = d.get_model("object-detection")
checkpoint = d.get_experiment(17).top_checkpoint()
model_version = model.register_version(checkpoint.uuid)

И ваш производственный код выше все еще будет работать! Производственный код свяжется с Defined и получит последнюю версию модели «обнаружения объектов», и вы сразу же сможете воспользоваться улучшениями в производственной среде.

Проверьте это

Чтобы начать работу с Решительным, начните с нашего краткого руководства! Для примера Model Registry в реальном рабочем процессе ознакомьтесь с нашим примером Kubeflow Pipelines.

Если у вас возникнут какие-либо вопросы, зайдите в Slack нашего сообщества или посетите наш репозиторий GitHub; мы рады помочь!

Первоначально написано Дэвидом Херши и опубликовано на https://determined.ai 13 октября 2020 г.