Решительный ИИ рад объявить об еще одной ключевой функции, упрощающей перенос моделей машинного обучения из исследовательской в производственную, — реестре детерминированных моделей. 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 г.