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

Машинное обучение и наука о данных — базовые дисциплины, изучение которых позволяет программистам и специалистам по данным овладеть теорией правильного применения передовых статистических и математических методов в контексте программирования. Однако на практике специалистам не просто подобрать качественные модели машинного обучения, которые бы не вступали в противоречие с принятыми на предприятиях схемами управления проектами, срывая сроки их выполнения или выходя за выделенные объемы финансирования. Чтобы не выбиваться из графиков разработки (особенно это касается ранних стадий), прибегая к действительно эффективным решениям на основе моделей, многие разработчики отдают предпочтение таким практикам разработки ПО, как непрерывная интеграция и непрерывное развертывание (continuous integration/continuous deployment, CI/CD).

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

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

Ценность CI/CD связана с тем, что сегодня бизнес-стратегии зависят от того, как характер управления ПО влияет на разработку продуктов и услуг. Для предоставления функционального софта требуется соответствующая гибкость, что не в последнюю очередь привело к появлению микросервисных архитектур. Микросервисы — это набор методов разработки, которые преобразовывают приложение в набор связанных сервисов. Их применение позволяет выпускать новые версии ПО по несколько раз в день, не требуя приостановки других сегментов программной инфраструктуры. Именно возможность беспрепятственного обновления — основное преимущество бизнес-модели, основанной на CI/CD.

Учитывая, что процесс обновления микросервисов, как правило, проходит бесшовно, их также задействуют при разработке ПО, которое должно обеспечивать безопасность данных (в том числе сквозных данных) на уровне, установленном законодательством, позволяя избежать юридической ответственности за нарушение конфиденциальности без ущерба для производительности ИТ. Гибкость и обновляемость микросервисов позволяет интегрировать процессы обработки данных и машинного обучения в фазы CI/CD в нужные моменты времени.

Как следствие, предприятия, которые выстраивают свои проекты с привлечением CI/CD, обладают возможностью минимизировать технический долг (также известный как долг кодинга) и перефокусироваться на синтаксис кода без учета долгосрочных последствий для схемы программирования и ее влияния на бизнес-модель. Например, команда может разработать приложение без обновления программной среды, в которой оно будет работать. Технический долг — бич для организаций, которые имеют несколько сред развертывания (например, разработка, тестирование, производство). Он также препятствует инициативам в области данных, поскольку среды развертывания данных демонстрируют те же проблемы, которые возникают при разработке ПО, с той только разницей, что если для написания софта требуется разобраться с API-документацией, то в случае с данными придется разбираться с различными их типами. В итоге на каждом этапе обработки данных теряется прозрачность операций с ними, что приводит к дальнейшим сложностям с их преобразованием.

Так как же менеджерам проектов найти точку соприкосновения с CI/CD, чтобы снизить сложность разработки? Одной из таких возможностей может быть участие в процедурах эксплуатационных испытаний (Operational Test and Evaluation, OT&E), таких как приемочное пользовательское тестирование (User Acceptance Testing, UAT) — этап тестирования, на котором оцениваются потребности пользователей, бизнес-требования и функциональность программных средств. Роль менеджеров на этом этапе может заключаться в установке параметров оценки для бизнес-требований, что в итоге сведется к выработке надежной методологии для постоянного улучшения этих параметров. UAT помогает сократить временные и финансовые затраты на разработку, тогда как CI/CD дает группе специалистов по управлению данными представление о том, как то, что получится на выходе модели, отразится на финальном продукте или услуге и, соответственно, на качестве обслуживания клиентов.

Эксперты отмечают, что у менеджеров появляются новые перспективы для применения практики CI/CD. Ведущий специалист по данным в O’Reilly Media Бен Лорика считает, что в будущем фреймворки машинного обучения будут «наслаиваться» на существующее ПО для решения аналитических задач. Эта тенденция позволит командам расширять свои возможности и экспериментировать с другими архитектурами. Например, в недавних анонсах Microsoft Azure, AWS и Google был сделан акцент на более быстром обучении моделей, лучшем управлении рабочими процессами и повышенной безопасности при развертывании проекта.

Помимо этого в ходе реализации проекта менеджерам придется провести оценку программ (program evaluation), что поможет с выбором дополнительных интегрированных сред разработки (IDE) и выявлением постоянных потребностей команд. К примеру, если для разработки моделей команда применяет язык программирования R, то для обновления пакетов и зависимостей ей наверняка потребуется система контроля версий и документированная история изменений. Руководствуясь этими соображениями, можно значительно ускорить обучаемость алгоритмов машинного обучения при помощи данных и наладить рабочий процесс CI/CD на быстрейший возврат результатов для проверки.

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