Как эффективно управлять ML-проектами в облаке

Лишь 13% проектов в области Data Science доходят до продакшена. Рассказываем о возможных причинах этой проблемы и подходах к её решению на примере ML-разработки в Yandex DataSphere.

Как эффективно управлять ML-проектами в облаке
Артем Макеенок
Ведущий менеджер по развитию Yandex DataSphere

Сегодня у многих руководителей как крупных корпораций, так и небольших компаний есть понимание конкурентных преимуществ внедрения ML-проектов. Несмотря на это, по статистике старшего вице-президента по данным и аналитике SKIMS Криса Чапо, лишь 13% проектов в области Data Science доходят до продакшена.

ML — экспериментальная отрасль, поэтому достаточно большую часть моделей нельзя ввести в эксплуатацию. Но другой весомой причиной таких результатов Крис Чапо считает представление о том, что компания должна лишь вложить деньги в проблему или внедрить технологию, а успех придёт сам собой. Бывший CTO компании IBM по Data Science и ИИ Дебора Лефф также отмечает, что проблему представляет разобщённость организаций и плохая коммуникация. Из-за этого дата-сайентистам сложно получить необходимые данные от бизнеса. Третья сложность — недостаток сотрудничества внутри команды. Раньше дата-сайентисты были одиночками, но сегодня это «командный вид спорта» и их работа встроена в саму ткань компании. Поэтому нужно, чтобы все могли тесно взаимодействовать.

Команды, работающие над ML-проектами, растут, и в них постепенно появляется разделение труда. В рамках одного проекта дата-инженеры занимаются подготовкой датасетов, дата-сайентисты — обучением моделей, DevOps-специалисты настраивают рабочие среды, аналитики следят за стабильной работой полученного сервиса, администраторы со стороны бизнеса контролируют затраты. Всем этим специалистам необходимо общаться и сотрудничать: ставить цели и отслеживать текущее состояние сервиса, делиться результатами работы.

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

Лид проекта не видит результат работы команды целиком в режиме реального времени, а руководство не может адекватно оценивать затраты и результат. Вся команда тратит много усилий, чтобы передать артефакты одного этапа ML-разработки на другой или просто поделиться моделями. При этом чем больше команда и чем разнообразнее в ней роли, тем сложнее справляться с этими проблемами. В сервисе Yandex DataSphere мы создали несколько инструментов для командной работы.

Мы недавно перешли в новую версию DataSphere. Теперь каждый сотрудник занимается собственным проектом, а данные и модели мы сохраняем в общих S3-бакетах. С появлением сообществ и проектов стало удобнее управлять ресурсами, например секретами и подключениями к S3-бакетам. Ускорилось погружение новичков в работу, потому что внутри сообщества уже есть все необходимые ресурсы.

Андрей Кулагин, руководитель ML-направления KazanExpress
Рассмотрим подробнее кому нужны новые функции и какие проблемы они помогают решить.
Рассмотрим подробнее кому нужны новые функции и какие проблемы они помогают решить.

Как собрать всё для ML-разработки внутри одного проекта

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

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

Как эффективно управлять ML-проектами в облаке

Мы изменили контрольные точки: теперь можно вернуться к вычислениям, когда удобно. Внутри контрольной точки можно посмотреть подробности о текущем состоянии модели, например сохранённые переменные.

Как эффективно управлять ML-проектами в облаке

Как масштабировать ресурсы и обмениваться артефактами

В привычном воркфлоу дата-сайентиста, работающего в команде вне облачной платформы, существует как минимум две повседневных проблемы.

Первая — сложности масштабирования ресурсов. Зачастую специалистов в команде больше, чем доступных мощностей физической инфраструктуры. Это приводит к конкуренции за ресурсы. Для обучения моделей приходится либо договариваться, либо выстраивать сложные очереди. При этом утилизация физических серверов довольно низкая из-за продолжительных периодов простоя. Облачные платформы решают эту проблему: всегда можно масштабировать вычислительные мощности под текущие задачи, и при этом не приходится тратиться на простаивающие серверы.

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

Для решения этих проблем мы предусмотрели отслеживание и управление всеми этапами работы, что помогает облегчить жизнь лиду и ML-разработчикам. Например, можно управлять объёмом объектного хранилища и обмениваться артефактами внутри проекта. Все внешние источники данных интегрированы в интерфейс с помощью виджетов.

Как эффективно управлять ML-проектами в облаке

Кроме того, мы добавили интеграцию с сервисом Yandex Data Proc, который может быть полезен дата-инженерам и аналитикам. Он помогает разворачивать кластеры Apache Hadoop® и Apache Spark™. Это позволяет обрабатывать потоковые данные, в том числе в режиме реального времени, строить на их основе витрины данных и бизнес-метрики, а также анализировать события.

Как эффективно управлять ML-проектами в облаке

Как легко выводить проекты в продакшн и отслеживать их состояние

Одна из проблем быстрого перехода в инференс — сложности на этапе вывода в продакшен уже обученных моделей. Обычно для того, чтобы встроить модель в основной продукт компании, нужно обернуть её в специальный сервис. Для его создания дата-сайентисту приходится привлекать программистов основного продукта или приобретать навыки фулстек-разработчика. И тот, и другой вариант тормозят вывод модели в продакшен.

Для решения этой проблемы мы добавили возможность публиковать модели нажатием нескольких кнопок в интерфейсе DataSphere. Кроме того, можно создавать сервисы на основе моделей, сохранённых в контрольных точках, а также из Docker-образов. Ещё одним улучшением стали алиасы к сервисам. Они помогают заменять версии моделей на лету, без остановки работающего в продакшене сервиса.

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

Как эффективно управлять ML-проектами в облаке

Как настроить работу над проектом для всей команды

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

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

Как эффективно управлять ML-проектами в облаке

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

Дальше мы планируем создать готовые no-code-блоки для вычислений. Кроме того, в планах реализация инструментов автоматизации, таких как запуск вычислений по расписанию или событиям. Это позволит автоматизировать сбор данных, формирование датасетов и обучение моделей, а значит — быстрее создавать работающие модели и выводить их в продакшен за короткое время.

Подписывайтесь на блог Yandex Cloud, чтобы узнавать еще больше новостей и историй об IT и бизнесе.

Другие истории наших партнеров и клиентов, которые активно читают наши подписчики:

1111
Начать дискуссию