Демо-стенд для ML моделей
Как часто проекты, связанные с ML/AI попадают в стол? На моей практике, такое происходит в компаниях регулярно, независимо от профиля и размеров. Сначала мучительно долго собираются данные, дальше следует итерационный процесс моделирования, который завершается замером качества модели (чтобы это ни значило), а в конце выясняется, что модель в таком виде просто невозможно использовать🤷♀️. Звучит знакомо?
У подобного много причин, поэтому обобщу: для многих участников проекта ML-модель - не очень понятная сущность, представления о которой могут быть довольно далеки от реальности. И дело здесь не в том, что не все могут строить модели. В зависимости от конкретной задачи, имеющихся данных, сценария применения, свойства и качество модели могут быть весьма своеобразными.
Поэтому хорошо скорректировать представление о том, какая модель может получиться в рамках имеющихся ограничений. И демо-стенд - прекрасное решение. Демо-стенд - минималистичный сервис с ML-моделью, поднятый независимо от остальной архитектуры. Такой сервис смогут потестировать все, кому это требуется в рамках проекта: это может быть html-страничка, мобильное приложение, чат-бот, ещё что-то очень простое.
Реализация 👩💻: в качестве backend выступает ML-модель, причем baseline версии вполне достаточно. Не нужно оптимизировать модель до финального состояния, можно остановиться на самой простой работающей версии. Для демо чаще всего нужен frontend. Здесь всё зависит от того, какую задачу вы решаете, и как вы видите сценарий взаимодействия пользователей с демо. Повторюсь, легковесной html-странички или телеграм-бота чаще всего достаточно - главное наличие готовых, простых шаблонов и минимальная разработка. На сегодняшний день, у нас есть огромное количество инструментов, позволяющих легко публиковать модели. Среди моих студентов этого года любимым инструментом стал Streamlit, и, конечно, ребята откопали ещё очень много всего, некоторые библиотеки меня приятно удивили :)
Ресурсы💰: минимальны, если знать правильные инструменты. Это не задача для разработчиков, это задача data scientist (DS), причем того, кто занимается разработкой модели. Без учета времени на сбор и предобработку данных (что справедливо, ведь это придется сделать независимо от того, захотите ли вы реализовать демо-стенд) разработка у middle DS займет в среднем не больше 1-2 рабочих дней. Junior DS в первые пару раз может провозиться неделю.
Плюсы 💪: возможность взаимодействия с сервисом на самых ранних стадиях проекта. Можно проводить тестирование, анализировать сценарии взаимодействия, прикидывать варианты интеграции, менять содержание и формат прогнозов/рекомендаций модели, играть с горизонтом прогнозирования и массой других свойств. Другими словами - получится содержательно собрать и скорректировать требования к модели для того, чтобы в дальнейшем использовать её в production. Или понять, что задача не летит, до того, как в неё были вложены месяц-другой работы.
Минусы 😓: на мой взгляд, основной минус всего один - не все кейсы можно продемонстрировать, не имея финальную модель. Например, если модель для сервиса определения возраста человека по фото пока с трудом определяет, где лицо - это почти гарантированный провал демонстрации. Получается, сначала надо добить модель по качеству, а значит, к моменту, когда вы сможете построить демо, довольно много ресурсов уже будет вложено в проект. Обидно будет отправить модель в стол в случае, если она не подойдет. Эту ситуацию решить тоже можно, но это уже другая история, так что просто имейте в виду.