Спецпроекты

Самое время решиться на внедрение машинного обучения

Интеграция

Некоторое время назад в топе проектов по информационным технологиям были проекты, связанные с данными. Их собирали по всем доступным источникам, организовывали озера и разного типа хранилища, делали попытки монетизировать — зарабатывать на продаже данных или совместном использовании несколькими организациями. Сложилась интересная ситуация, когда сбор и накопление данных налажены, а их использование пока не дает ощутимого бизнес-результата и не приближает организацию к бонусам и выгодам, обещанным ИТ-консультантами. В статье для CNews в ситуации разобралась Светлана Маркова, главный консультант департамента развития бизнеса компании «Неофлекс».

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

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

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

Наличием в штате организации «моделистов», аналитиков данных и дата саентистов уже никого не удивить. Специалистам требуются данные для анализа, желательно в формате систем-источников, как это реализовано в хранилищах Data Lake. Создать такое хранилище можно различными способами, используя, например, Cloudera CDH, коммерческий дистрибутив Hadoop, в составе программно-аппаратного комплекса Oracle Big Data Appliance, или полностью бесплатные дистрибутивы, такие как Apache Bigtop, для кластера из имеющегося аппаратного обеспечения.

Светлана Маркова: Специалистам требуются данные для анализа, желательно в формате систем-источников, как это реализовано в хранилищах Data Lake

Для комфортного доступа к данным мы предлагаем нашим заказчикам создать аналитические песочницы, в которых специально настроенные инструменты помогают выбирать, преобразовывать, сохранять в data set необходимые для разработки моделей данные. При этом можно использовать унифицированный SQL-доступ к данным из различных источников, хранящихся в разных форматах — CSV, JSON, XML, Avro и Parquet. Для доступа к этим данным предлагаем такие инструменты, как Hive, Impala и, конечно, Apache Spark. Для тех аналитиков и экспертов по Data Science, которые не привыкли к работе с этими инструментами, есть библиотека Koalas — расширение Apache Spark, позволяющее использовать знакомое API Pandas Dataframe для работы с данными Hadoop.

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

Если в организации дата саентист не один, а несколько, или в каждом подразделении есть свои команды аналитиков данных, возникает отдельная задача по обеспечению контролируемого доступа к данным, выделения необходимых вычислительных ресурсов для разработки моделей, особенно учитывая, что некоторые методы обучения требовательны к ядрам и CPU. Решением может быть организация работы специалистов по Data Science в JupyterHub. Он реализован и развивается в рамках проекта Jupyter, широко используемого аналитиками данных. JupyterHub позволяет создавать разные окружения на основе docker-образов, которые включают все необходимые ML-библиотеки, и управлять выделяемыми вычислительными ресурсами для сотен пользователей, используя платформу Kubernetes.

Специалист по Data Science при разработке очередной модели работает с данными, проводит множество экспериментов, а в течение жизни модели — не раз производит тюнинг параметров по результатам валидации. Получаем несколько версий данных, кода и артефактов модели, а если над одной моделью работают двое и больше специалистов, задача управления версиями становится первоочередной. Разработчики ПО в организациях широко используют Git для своих процессов работы с кодом. Аналогичные практики мы применяем в процессах разработки и применения моделей машинного обучения, тем более, что плагины для работы с Git уже появились в Jupyter, RStudio.

Если вспомнить все активности по разработке модели в организации — идея или бизнес-потребность, запрос на разработку, подготовка и анализ данных, собственно разработка модели и сдача результата заказчику — все это напоминает знакомый цикл разработки программного обеспечения. Где старт — запрос на разработку новой функциональности, а далее те же этапы — от разработки кода до приемки. В этом случае мы рекомендуем попытаться организовать работу подразделений Data Science по образу и подобию центров разработки ИТ. В этом случае могут возникнуть сложности в попытках «загнать в рамки» математиков-художников, но, несмотря на это, у них будет свобода экспериментов при соблюдении несложного автоматизированного рабочего процесса. К созданию модели машинного обучения нужно относиться как к проекту, в котором будут этапы, задачи, статусы, документация. Чтобы внедрить проектный принцип в жизнь специалиста по Data Science, необходимо настроить цикл в привычных task-трекерах — Jira, Team Foundation Server и другие.

Модель разработана, осталось внедрить. Именно с внедрением, по нашим наблюдениям, возникают основные сложности у специалистов по Data Science. Сервисы, вызывающие модель, или функции, применяющие модель к набору данных — все это часто за пределами экспертизы и интересов разработчиков. Подразделения ИТ также не готовы работать с Jupyter notebook и другими непривычными форматами кода. Решением на стыке интересов ИТ и специалистов по моделированию мы видим во внедрении принципов и инструментов MLOps, обеспечивающих автоматизацию жизненного цикла моделей: от разработки до внедрения, с применением валидации и мониторинга, до вывода модели из эксплуатации.

Автоматизация внедрения и бесшовная интеграция моделей с инструментами их разработки находится в фокусе развития программных продуктов и платформ, в том числе с открытым исходным кодом. В наших проектах мы используем быстро развивающийся open source-проект MLflow. Он позволяет хранить эксперименты, параметры, метрики, ссылки на обучающие выборки и другие артефакты. Кроме этого, MLflow дает возможность создавать на основе обученной модели rest-service для онлайн-работы или функцию Spark UDF для применения в пакетном режиме. MLflow поддерживает элементы жизненного цикла моделей, им можно присваивать статусы: «готово к выводу на продукционную среду», «на продукционной среде», «архивирована» и другие. Удобный API позволяет интегрировать MLflow с CI/CD инструментами и системами управления задачами.

Эксплуатация модели предполагает сопровождение кода, контроль результатов работы, своевременную валидацию и адаптацию. Вновь проводим аналогию с сопровождением программного обеспечения — нужно следить, чтобы скрипты работали, выдавали ожидаемый результат, требуется вносить изменения при появлении новых данных. Для этого мы уже несколько лет применяем инструменты DevOps, для эксплуатации моделей предлагаем применять те же наработки. А именно — разрабатывать pipeline для сборки, упаковки в контейнер, автоматического переноса модели на среду исполнения, а для регулярной валидации модели реализовывать отдельный pipeline, который соберет новые данные, запустит обучение модели, проанализирует метрики, сравнит с нормативными значениями, сообщит о критичных расхождениях пользователю. Также для эксплуатации модели необходимо создать гибкую, надежную и масштабируемую среду исполнения. Kubernetes позволяет легко масштабировать сервисы, обеспечивает отказоустойчивость и мониторинг работы сервисов. То есть обеспечивает все современные сервисы эксплуатации, доступные современным высоконагруженным контейнеризированным приложениям.

Организованная работа специалистов по Data Science, инструменты поддержки подхода к модели как к проекту со всеми необходимыми этапами и документами, поддержка версионности данных, кода и артефактов модели, сборочный конвейер и инструменты сопровождения эксплуатируемого сервиса или функции — весь этот многокомпонентный ландшафт и процессы требуют аккуратной настройки и, что самое главное, адаптации под реалии конкретной организации. За всеми программными платформами и проектами стоят люди, которым должно быть комфортно и удобно исследовать данные, экспериментировать, тестировать, отбрасывать бесперспективные и внедрять удачные модели. Максимальная автоматизация рутинных сборочных процедур, ненавязчивые логирование и контроль доступов, удобные встроенные средства управления версиями — «творчество под контролем ИТ».

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

Инструментов и технологий действительно множество — только в этой статье перечислено с десяток наименований. «Неофлекс» помогает разобраться в многообразии программных компонентов и решить с их помощью задачи любой инженерной сложности. Уже несколько лет компания в проектах разработки ПО широко применяет современные практики DevOps, разворачивает сборочные конвейеры, в том числе для ИТ-команд заказчиков.

Модели машинного обучения для нас также не просто артефакт для внедрения: в «Неофлекс» есть собственная практика Data Science, специалисты которой разрабатывают модели для принятия решений, оценки рисков и маркетинговых кампаний наших заказчиков по всему миру. Поэтому мы на своем опыте знаем о специфике сбора и подготовки данных, сложностях в разработке моделей. Многолетний опыт «Неофлекс» в интеграции систем, разработке бизнес-приложений, автоматизации процессов позволяет встроить разработанные специалистами заказчика модели в ландшафт организации.

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

Опыт «Неофлекс» показывает, что подход и технологии MLOps наиболее востребованы для задач маркетинга, банковских рисков, информационной безопасности и задач IIoT. Направление Fast Data в «Неофлекс» уже реализует проекты на технологиях потоковой обработки данных и по созданию инфраструктуры применения моделей машинного обучения.

1 сентября эксперты «Неофлекс» провели вебинар «ML, который работает «по-взрослому», на котором рассказали, как перейти от PoC и пилотных моделей к промышленному машинному обучению. Как работает MLOps в деле, вы можете посмотреть, пройдя по ссылке.