Привет, 👋
The Fundamentals of MLOps — это серия из четырех статей, посвященных следующим темам:
- Фундаментальные концепции и эволюционный путь MLOps
- Концепции и рабочий процесс MLOps
- Уровни зрелости MLOps
- Команда 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:
- Управление данными: MLOps фокусируется на управлении данными, топливом для моделей машинного обучения. Это включает в себя сбор данных, очистку, маркировку и управление версиями, чтобы обеспечить использование высококачественных и согласованных данных для обучения и повторного обучения моделей.
- Управление моделями: MLOps устанавливает рабочие процессы для управления всем жизненным циклом модели машинного обучения, включая отслеживание экспериментов, управление версиями модели и ее развертывание. Это гарантирует воспроизводимость моделей, возможность аудита и возможность повторного развертывания по мере необходимости.
- Непрерывное обучение (CT): MLOps использует методы непрерывного обучения для учета дрейфа данных и модели. Модели часто переобучаются с использованием свежих данных для поддержания высокого уровня производительности. Это не проблема в традиционном программном обеспечении и DevOps.
- Мониторинг и управление: MLOps применяет методы мониторинга, адаптированные для моделей машинного обучения, для обнаружения отклонений данных или моделей. Он также устанавливает методы управления для обеспечения справедливости, непредвзятости и соответствия моделей. Эти дополнительные элементы управления обычно не являются частью процессов DevOps.
- Совместная работа: MLOps способствует сотрудничеству между учеными, инженерами по данным и ИТ-операторами. Для создания, развертывания и управления моделями машинного обучения требуется тесное сотрудничество. DevOps в первую очередь касается разработчиков и ИТ-операторов.
Краткое содержание:
DevOps: CI/CD
MLOps: CI/CD/CT
Таким образом, MLOps основывается на принципах DevOps, но также включает дополнительные методы для решения уникальных задач разработки и развертывания моделей машинного обучения. В то время как DevOps оптимизирует жизненный цикл разработки программного обеспечения, MLOps направлен на оптимизацию жизненного цикла модели машинного обучения, что требует управления не только кодом, но и самими данными и моделями. Внедряя MLOps, организации могут ускорить разработку и развертывание приложений машинного обучения, обеспечив при этом высокое качество, управляемость и непрерывную производительность.
В следующей части мы углубимся в рабочий процесс MLOps, чтобы получить более глубокое понимание.
Продолжить…→Концепции и рабочий процесс MLOps
🙏 Присоединяйтесь к моей группе MLOps в LinkedIn, чтобы погрузиться в мир MLOps.
Ссылки:
[1] https://learn.microsoft.com/en-us/azure/architecture/example-scenario/mlops/mlops-technical-paper
[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/