Привет, 👋

The Fundamentals of MLOps — это серия из четырех статей, посвященных следующим темам:

В первой части я объясню фундаментальные концепции и эволюционный путь MLOps. Чтобы познакомить вас с целью и применением MLOps, я намерен предоставить обзор общей цели. Затем я объясню различные компоненты этой концепции, чтобы помочь вам лучше понять ее.

Что такое MLOps? 🤔

Прежде чем предоставить свое определение и понимание этой структуры, позвольте мне представить два определения, предоставленные Microsoft и Google:

  • Определение MLOps, данное Microsoft [1]: процесс MLOps обеспечивает основу для масштабируемой системы, охватывающей полный жизненный цикл моделей машинного обучения. Эта структура включает в себя разработку, тестирование, развертывание, эксплуатацию и мониторинг. Он удовлетворяет потребности классического процесса CI/CD. Однако из-за его относительной незрелости по сравнению с DevOps стало очевидно, что в существующих руководствах по MLOps есть пробелы. Команда проекта работала над устранением некоторых из этих пробелов, стремясь предоставить функциональную модель процесса, обеспечивающую жизнеспособность расширенного решения машинного обучения.
  • Определение MLOps, данное Google [2]:применение принципов DevOps к системам машинного обучения (MLOps). MLOps — это культура и практика машинного обучения, направленная на унификацию разработки системы машинного обучения (разработка) и эксплуатации системы машинного обучения (эксплуатация). Практика MLOps означает поддержку автоматизации и мониторинга на всех этапах построения системы ML, включая интеграцию, тестирование, выпуск, развертывание и управление инфраструктурой.

На основе этих двух определений MLOps можно определить следующим образом: 📚

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

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

Эволюция инфраструктуры и разработки программного обеспечения🚀

Модель водопада: пошаговый подход к разработке программного обеспечения [3–4]🌊

Модель водопада, проверенная временем последовательная модель, разбивает процесс разработки программного обеспечения на отдельные упорядоченные этапы. Эта модель, представленная Уинстоном Ройсом в 1970 году, была популярна с начала эры Интернета в середине 1990-х годов. В отличие от циклических методов, модель водопада следует одностороннему пути, где каждый этап тщательно спланирован и выполняется в установленном порядке, от сбора требований до проектирования, разработки и тестирования программного обеспечения.

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

Водопадная модель обычно включает следующие этапы:

  • Требования
  • Анализ
  • Дизайн
  • Кодирование и реализация
  • Тестирование
  • Эксплуатация и развертывание
  • Обслуживание

Однако у модели водопада есть свои недостатки:

  • Жёсткость в соответствии с меняющимися требованиями:Все требования должны быть определены заранее, и изменения во время или после разработки невозможны.
  • Ограниченные возможности для создания повторно используемых компонентов.Модели не хватает гибкости в реализации повторно используемых элементов, что может затруднить будущие усилия по разработке.
  • Негибкость при тестировании.Тестирование проводится только после этапа разработки, что затрудняет устранение проблем, обнаруженных во время тестирования.
  • Возможные задержки и увеличение затрат.Приемочные испытания заказчиков часто вносят изменения, что приводит к задержкам доставки и увеличению стоимости проекта.
  • Негативное влияние на сроки проекта. Линейный характер каскадной модели может нарушить сроки проекта и вызвать задержки.
  • Недостаточная ориентация на пользователя.Система может не полностью удовлетворять потребности конечных пользователей, поскольку модель в первую очередь зависит от понимания разработчика.

Модель Agile: гибкий и ориентированный на пользователя подход к разработке программного обеспечения🏃‍♂️

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

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

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

По сравнению с водопадным методом Agile предлагает несколько преимуществ:

  • Гибкость требований. Хотя требования определяются до начала разработки, их можно изменить в любое время, что позволяет адаптироваться к изменяющимся потребностям.
  • Компоненты многократного использования.Методология Agile предоставляет возможности для создания и реализации компонентов многократного использования, что способствует повышению эффективности и дальнейшему развитию.
  • Модульная реализация проекта.Подход Agile позволяет разделять проекты на разные модули, обеспечивая периодическую доставку этих компонентов. Эта модульная структура улучшает управление проектами и облегчает поэтапную разработку.
  • Совместное создание, ориентированное на пользователя. Гибкие методологии подчеркивают участие пользователей на протяжении всего процесса, при этом пользователи или клиенты периодически тестируют и оценивают модули решения. Этот подход, ориентированный на пользователя, гарантирует, что разработанное программное обеспечение соответствует потребностям бизнеса и ожиданиям в отношении качества.

Метод DevOps: ускорение разработки программного обеспечения для повышения качества и скорости [5]⚙️

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

Эта методология произвела революцию в индустрии программного обеспечения, позволив поставлять программное обеспечение в производство за считанные минуты и обеспечив надежную работу.

Внедрение DevOps дает несколько ключевых преимуществ:

  • Скорость: DevOps позволяет организациям увеличить скорость выпуска высококачественного программного обеспечения за счет оптимизации процессов разработки и поставки.
  • Надежность. Благодаря непрерывной интеграции (CI) и непрерывной доставке (CD) DevOps обеспечивает постоянное тестирование, улучшение и автоматическое развертывание кода в новых средах без вмешательства человека.
  • Масштаб. Методы DevOps, такие как микросервисы, позволяют создавать модульные программные компоненты с минимальными зависимостями, обеспечивая масштабируемость и гибкость при проектировании и разработке системы.
  • Безопасность. Внедряя методы обеспечения безопасности на протяжении всего конвейера разработки, DevOps гарантирует, что меры безопасности являются неотъемлемой частью процесса разработки программного обеспечения, снижая уязвимости и риски.

Чтобы достичь этих преимуществ, DevOps придерживается нескольких лучших практик [5]:

  • Непрерывная интеграция (CI). CI включает в себя постоянное тестирование программных проектов и повышение качества на основе результатов тестирования. Инструменты автоматизации, такие как GitHub Actions, Jenkins, Gitlab, CircleCI и AWS CodeBuild, упрощают этот процесс.
  • Непрерывная доставка (CD): CD позволяет автоматически развертывать код в новых средах, часто используя принципы инфраструктуры как кода (IaC). Такой подход устраняет необходимость ручного вмешательства, оптимизируя процесс доставки.
  • Микросервисы. Микросервисы — это независимые программные сервисы с минимальными зависимостями, обеспечивающие модульную и масштабируемую разработку. Фреймворки, такие как Flask, и бессерверные технологии, такие как AWS Lambda, упрощают внедрение микросервисов.
  • Инфраструктура как код (IaC): IaC предполагает рассмотрение инфраструктуры как программного обеспечения и проверку ее в репозитории исходного кода. Облачные инструменты, такие как AWS CloudFormation, AWS SAM, Pulumi и Terraform, помогают управлять и автоматизировать развертывание инфраструктуры.
  • Мониторинг и инструментирование.Методы мониторинга и инструментирования собирают данные о производительности и поведении программных систем в производственной среде. Инструменты ведения журналов и мониторинга производительности приложений, такие как New Relic, DataDog и Stackdriver, позволяют принимать решения на основе данных и постоянно совершенствоваться.
  • Эффективная техническая коммуникация и управление проектами. Эффективные методы коммуникации и эффективное управление проектами с использованием таких инструментов, как системы заявок и электронные таблицы, необходимы для успешного внедрения DevOps. Разбивка проблем на более мелкие управляемые задачи способствует постепенному прогрессу и масштабируемости.

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

MLOps против DevOps🧠🏢

Теперь давайте рассмотрим определение MLOps и выделим различия между разработкой ML и традиционной разработкой программного обеспечения.

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

Итак, что отличает MLOps от DevOps?

MLOps основывается на DevOps, добавляя дополнительные методы управления моделями машинного обучения. Ключевые различия между MLOps и DevOps:

  1. Управление данными: MLOps фокусируется на управлении данными, топливом для моделей машинного обучения. Это включает в себя сбор данных, очистку, маркировку и управление версиями, чтобы обеспечить использование высококачественных и согласованных данных для обучения и повторного обучения моделей.
  2. Управление моделями: MLOps устанавливает рабочие процессы для управления всем жизненным циклом модели машинного обучения, включая отслеживание экспериментов, управление версиями модели и ее развертывание. Это гарантирует воспроизводимость моделей, возможность аудита и возможность повторного развертывания по мере необходимости.
  3. Непрерывное обучение (CT): MLOps использует методы непрерывного обучения для учета дрейфа данных и модели. Модели часто переобучаются с использованием свежих данных для поддержания высокого уровня производительности. Это не проблема в традиционном программном обеспечении и DevOps.
  4. Мониторинг и управление: MLOps применяет методы мониторинга, адаптированные для моделей машинного обучения, для обнаружения отклонений данных или моделей. Он также устанавливает методы управления для обеспечения справедливости, непредвзятости и соответствия моделей. Эти дополнительные элементы управления обычно не являются частью процессов DevOps.
  5. Совместная работа: MLOps способствует сотрудничеству между учеными, инженерами по данным и ИТ-операторами. Для создания, развертывания и управления моделями машинного обучения требуется тесное сотрудничество. DevOps в первую очередь касается разработчиков и ИТ-операторов.

Краткое содержание:

DevOps: CI/CD

MLOps: CI/CD/CT

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

В следующей части мы углубимся в рабочий процесс MLOps, чтобы получить более глубокое понимание.

Продолжить…→Концепции и рабочий процесс MLOps

🙏 Присоединяйтесь к моей группе MLOps в LinkedIn, чтобы погрузиться в мир MLOps.

🔗 LinkedIn: группа MLOps

Ссылки:

[1] https://learn.microsoft.com/en-us/azure/architecture/example-scenario/mlops/mlops-technical-paper

[2] https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning

[3] https://www.techtarget.com/searchsoftwarequality/definition/waterfall-model

[4] Raj, E., 2021. Разработка MLOps: быстрое создание, тестирование и управление готовыми к эксплуатации жизненными циклами машинного обучения в любом масштабе. ООО "Пэкт Паблишинг"

[5] Гифт, Н. и Деза, А., 2021 г. Практические MLOps. «О’Рейли Медиа, Инк.».

[6] https://teki.tistory.com/9

[7] https://www.wondriumdaily.com/a-fundamental-building-block-and-force/

[8] https://www.analyticsvidhya.com/blog/2023/02/mlops-end-to-end-mlops-architecture-and-workflow/