Вестник цифровой трансформации

DevOps в науке о данных и машинном обучении
DevOps в науке о данных и машинном обучении




16:29 16.11.2019  |  Айзек Саколик | 3674 просмотров



Сотрудничество исследователей данных с разработчиками и ИТ-администраторами способствует улучшению результатов бизнеса, но ключевым условием здесь является понимание различия требований, предъявляемых разными группами.

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

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

Крупные организации с многочисленными командами исследователей инвестируют в платформы исследования данных (Alteryx Analytics, Databricks и Dataiku), представляющие собой набор инструментов для разработки, тестирования и развертывания аналитических моделей. Эти инструменты конкурируют друг с другом с точки зрения операций с данными, аналитических возможностей, средств интеграции, управления, инструментов для бизнес-пользователей и функций развертывания.

Отличия потребностей в DevOps у исследователей данных и разработчиков приложений

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

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

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

В моделях разработки и тестирования единый вычислительный стек может и не использоваться. Некоторые модели создаются простыми скриптами Python, тогда как в других используются Apache Spark и другие крупные платформы управления данными. Характер вычислений существенно отличается даже в ходе разработки моделей. Исследователю данных, желающему протестировать на крупном наборе данных шесть вариантов модели, придется выполнить гораздо больше вычислительных операций и операций хранения по сравнению с исследователем, тестирующим только одну модель на небольшом наборе данных.

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

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

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

Поддержка исследователей данных требует понимания имеющихся отличий. Только после этого можно переходить к внедрению практик DevOps. Начать же следует вот с чего.

Формирование у исследователей данных необходимого опыта

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

Начать имеет смысл с инфраструктуры для исследователей данных. На каких языках они пишут программный код: на Python, R или чем-то еще? Какие инструменты (Jupyter, Tableau, Apache Kafka или NLTK) используются для анализа и моделирования? Какие базы данных и облака выступают в роли источников данных и служат для хранения данных, используемых в обучении, и для развертывания моделей?

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

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

Следует учитывать, что в некоторых сервисах SaaS и платформах корпоративных данных нет встроенной системы контроля версий и отсутствуют интерфейсы со средствами управления версиями, применяемыми при написании программного кода. У многих из этих платформ имеются API для проведения интеграции и развертывания или какие-то другие средства, позволяющие имитировать процесс непрерывной интеграции и развертывания (CI/CD).

Формирование конвейеров развертывания и настройка инфраструктуры

При стандартизации среды развертывания и непрерывной интеграции DevOps-консультантам следует обратить внимание и на другие аспекты тестирования автоматизации и построения производственных сред. Это можно сделать путем внедрения конвейеров развертывания с инструментами наподобие Jenkins и настройки инфраструктуры с использованием Chef, Puppet, Ansible или каких-то других инструментов.

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

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

Союз разработчиков, ИТ-администраторов и исследователей данных

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

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

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

 

 

Теги: Data Science DevOps Машинное обучение CI/CD

На ту же тему: