DevOps vs MLOps: хто це такі і чим відрізняються їхні задачі

💡 Усі статті, обговорення, новини про DevOps — в одному місці. Приєднуйтесь до DevOps спільноти!

Вітаю! Я Влад Мельник, Senior MLOps Engineer в компанії AUTOMAT-IT. У динамічному світі розробки програмного забезпечення з’явилися два потужні підходи, спрямовані на оптимізацію процесів і покращення співпраці: DevOps і MLOps. Хоча вони мають спільні цілі, кожен з них має свою унікальну спрямованість і застосування.

У своєму блозі я хочу більше розповісти про роботу MLOps-спеціаліста та показати головні відмінності між DevOps і MLOps.

Історія та еволюція

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

Приблизно у 2016-2017 роках, з ростом популярності машинного навчання, MLOps (Machine Learning Operations) опинився в центрі уваги. MLOps застосовує принципи DevOps до завдань машинного навчання: відтворюваність моделей, масштабованість і управління. Він враховує динамічний і інтенсивний характер машинного навчання та спрямований на оптимізацію наскрізного життєвого циклу моделей машинного навчання.

Розуміння DevOps і життєвого циклу розробки програмного забезпечення

Основою DevOps є життєвий цикл розробки програмного забезпечення (SDLC), який включає кілька етапів, що вимагають тісної співпраці між командами розробників і фахівців з операцій.

  • Планування та вимоги. На цьому етапі відбувається збір вимог, планування функціональних можливостей програмного забезпечення та проєктування загальної архітектури. DevOps забезпечує здійсненність і плавний процес розгортання завдяки залученню операційних команд на ранніх стадіях.
  • Розробка. Розробники пишуть код, використовуючи методи, такі як контроль версій, безперервна інтеграція та автоматичне тестування. Мета полягає в тому, щоб виявляти помилки на ранніх стадіях, покращувати якість коду та забезпечувати стабільне і надійне програмне забезпечення.
  • Тестування. DevOps надає пріоритет ретельному тестуванню на різних рівнях: тестування модулів, інтеграційне тестування та тестування прийнятності користувачем. Автоматизоване тестування та безперервні цикли зворотного зв’язку допомагають швидко виявляти та виправляти проблеми, скорочуючи час і зусилля, необхідні для ручного тестування.
  • Розгортання. DevOps впроваджує автоматизацію процесу розгортання. Такі методи, як контейнеризація та інфраструктура як код (IaC), забезпечують узгоджене, надійне та відтворюване розгортання в різних середовищах.
  • Моніторинг і операції. Безперервний моніторинг після розгортання допомагає виявляти проблеми з продуктивністю, помилки та виключні ситуації. Операційні команди тісно співпрацюють з розробниками для розв’язання проблем, а зворотний зв’язок використовується для покращення на етапі планування, забезпечуючи безперервне вдосконалення.

Застосування практики DevOps приносить значні переваги, зокрема скорочення часу виходу на ринок, покращення якості програмного забезпечення та зниження витрат.

Долаючи бар’єри та покращуючи співпрацю, організації можуть швидше реагувати на зміни ринку та потреби клієнтів. DevOps забезпечує ефективну доставку програмного забезпечення, гарантуючи швидке та надійне постачання високоякісного програмного забезпечення користувачам.

Технологічний стек DevOps

  • Контроль версій: Git (наприклад, GitHub, GitLab) для відстеження змін коду та сприяння співпраці.
  • Безперервна інтеграція/безперервне постачання (CI/CD): Jenkins, Travis CI або AWS CodePipeline для автоматизації процесу створення, тестування та розгортання змін коду.
  • Контейнеризація: Docker для упаковки застосунків і їхніх залежностей в ізольовані контейнери, що забезпечує узгоджене та відтворюване середовище.
  • Інфраструктура як код (IaC): Terraform або AWS CloudFormation для визначення та керування інфраструктурою як кодом, що забезпечує повторюване та масштабоване розгортання.
  • Моніторинг: інструменти, такі як Amazon CloudWatch, Splunk або Prometheus, для відстеження продуктивності застосунків, виявлення проблем і отримання цінних даних.
  • Співпраця: Slack або Microsoft Teams для спілкування, обміну знаннями та покращення командної співпраці.

Розглянемо приклади використання цього технологічного стека компанією з розробки програмного забезпечення та як наша співпраця допомогла покращити їхні процеси.

Git, зокрема GitHub, став незамінним інструментом для ефективного управління змінами коду та співпраці над проєктами. Наша команда допомогла їм мігрувати весь свій код і робочий процес з GitLab у GitHub, забезпечивши плавний перехід і скориставшись додатковими перевагами та функціями, які пропонує GitHub.

Jenkins відіграє ключову роль в автоматизації їхніх процесів побудови та розгортання. Тепер їхня команда може зосередитися на розробці, знаючи, що процеси безперервної інтеграції та безперервного розгортання працюють ефективно.

Docker-контейнери забезпечили послідовне розгортання їхнього застосунку в різних середовищах. Це спрощує процес налаштування та забезпечує портативність і ізоляцію їхнього застосунку. Крім того, вони використовують Kubernetes для оркестрації та управління контейнерами, що дозволяє їм ефективно масштабувати та керувати роботою своїх застосунків у хмарних середовищах.

Terraform допоміг їм автоматизувати управління хмарною інфраструктурою. Amazon CloudWatch надає всебічні дані моніторингу, що допомагає швидко виявляти та розв’язувати проблеми з продуктивністю.

MLOps: зосередження на життєвому циклі машинного навчання

MLOps представляє спеціалізований життєвий цикл, адаптований до унікальних вимог моделей машинного навчання.

  • Збір і підготовка даних. На цьому етапі акцент робиться на управлінні даними та можливості відстеження. Він передбачає визначення джерел даних, попередню обробку даних і забезпечення їх якості. MLOps зосереджується на створенні надійних конвеєрів даних і розв’язанні проблем, пов’язаних з даними, таких як упередженість і відсутність даних.
  • Розробка та навчання моделей. Дослідники даних експериментують з різними алгоритмами та техніками для створення та навчання моделей. MLOps заохочує використання реєстрів моделей і систем контролю версій, таких як MLflow або Amazon SageMaker, для ефективного відстеження та керування моделями, що забезпечує відтворюваність і полегшує співпрацю.
  • Розгортання моделі. MLOps автоматизує процес розгортання, забезпечуючи послідовність і масштабованість. Контейнеризація, мікросервіси та інструменти, такі як Amazon SageMaker або Kubernetes, допомагають упаковувати та розгортати моделі як багаторазові компоненти, що спрощує керування та оновлення розгортань.
  • Моніторинг і перенавчання моделі. Безперервний моніторинг виявляє проблеми з продуктивністю, дрейф моделі та проблеми з якістю даних. MLOps використовує рішення для моніторингу, такі як Amazon SageMaker Model Monitor, для виявлення аномалій та ініціювання повторного навчання, коли це необхідно, забезпечуючи точність і надійність моделей.
  • Управління моделлю та виведення з експлуатації. MLOps включає практики документування ефективності моделі, забезпечення відповідності нормативним вимогам, таким як GDPR або HIPAA, і керування ризиками моделі. Коли модель застаріває, MLOps забезпечує безпечну структуру для виведення її з експлуатації та заміни.

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

Спрощуючи життєвий цикл машинного навчання, MLOps допомагає організаціям розгортати надійні та масштабовані моделі, підвищуючи загальну ефективність і скорочуючи час виходу на ринок ініціатив ML.

Технологічний стек MLOps

  • Управління даними: інструменти, такі як Amazon SageMaker Data Wrangler або Apache Spark для обробки великих даних, і Pandas для обробки та аналізу даних.
  • Розробка моделей: бібліотеки Python, такі як TensorFlow, PyTorch або Scikit-learn, для створення та навчання моделей, часто інтегровані з Amazon SageMaker для масштабованого навчання.
  • Реєстр моделей і керування версіями: реєстр моделей MLflow або Amazon SageMaker для відстеження та керування моделями, забезпечення відтворюваності та сприяння співпраці.
  • Контейнеризація: Docker для упаковки моделей та їх залежностей, що забезпечує послідовне розгортання в різних середовищах.
  • Розгортання: кінцеві точки Kubernetes або Amazon SageMaker для оркестрації та масштабування розгортання моделі, що спрощує керування трафіком і оновленнями.
  • Моніторинг: Amazon SageMaker Model Monitor, Prometheus і Grafana для відстеження продуктивності моделі, виявлення аномалій і ініціювання сповіщень.
  • Обслуговування моделей: хостинг Amazon SageMaker або обслуговування TensorFlow для розгортання моделей у виробництві, що забезпечує високу доступність і масштабованість.

Джерело: Marvelous MLOps

Розглянемо елементи цього технологічного стека, і як один із наших клієнтів, що розробляє модель виявлення шахрайства, користується ними для покращення їхніх процесів.

Amazon SageMaker, потужна платформа машинного навчання, надає різні інструменти для розробки та розгортання моделі. Зокрема, вони використовують SageMaker Data Wrangler для ефективної підготовки даних, спрощуючи процес обробки та підготовки даних для навчання моделі. PyTorch, відомий фреймворк машинного навчання, використовується для розробки самої моделі виявлення шахрайства.

Amazon SageMaker Model Registry дозволяє їм ефективно керувати версіями моделі. Вони можуть зберігати, відстежувати та розгортати різні ітерації своєї моделі, забезпечуючи контроль та відтворюваність.

SageMaker Pipelines спрощує процес оркестрації та автоматизації всього робочого процесу машинного навчання. Вони можуть визначити послідовність кроків, від підготовки даних до навчання моделі та розгортання, створюючи безперервний і автоматизований процес.

Amazon SageMaker Model Monitor, інтегрований з популярними інструментами моніторингу, такими як Prometheus, забезпечує потужні можливості моніторингу. Вони можуть відстежувати продуктивність моделі в режимі реального часу, отримувати сповіщення про аномалії та гарантувати відповідність моделі очікуванням.

Використання Grafana, візуального інструменту для створення панелей моніторингу, дозволяє команді візуалізувати дані про продуктивність моделі, зібрані Prometheus. Завдяки цьому вони можуть швидко виявляти відхилення, відстежувати ключові метрики та приймати обґрунтовані рішення.

Подібності та ключові відмінності

Джерело: NVIDIA Blog

Подібності

MLOps і DevOps зосереджені на людях, процесах і технологіях, пропагуючи співпрацю та автоматизацію. Обидва підходи охоплюють постійні практики, включаючи безперервну інтеграцію, доставку/розгортання та моніторинг продуктивності коду/моделі. Вони сприяють покращенню співпраці та комунікації, усуваючи бар’єри для більш оперативної та ефективної організації.

Ключова відмінність

Основна відмінність полягає в їхній спрямованості. DevOps займається постачанням і підтримкою традиційного програмного забезпечення, зосереджуючись на випусках коду та управлінні інфраструктурою. З іншого боку, MLOps конкретно розв’язує унікальні проблеми та життєвий цикл моделей машинного навчання, наголошуючи на управлінні даними, версіюванні моделей та адаптації до динамічних змін у даних і алгоритмах.

Як я прийшов до MLOps

Я хочу поділитися своїм особистим досвідом у світі MLOps і тим, як я прийшов до цієї ролі.

Моя кар’єра почалася з позиції анотатора даних, або Data Labeler, де я допомагав готувати дані для моделей машинного навчання. Завдяки цій ролі я розвинув розуміння важливості якісних даних і того, як вони впливають на продуктивність моделей. Коли я перейшов на позицію інженера машинного навчання, то занурився у світ розробки моделей і алгоритмів.

Це була захоплива подорож, але справжнє відкриття чекало на мене, коли прийшов час впроваджувати наші моделі у виробництво. В той час наша команда стикнулася з проблемою нестачі інженерів DevOps, і мені довелося взяти на себе деякі з цих обов’язків. Саме тоді я і відкрив для себе MLOps.

MLOps мене зацікавив, оскільки він поєднував мою пристрасть до машинного навчання з можливістю працювати з різними інструментами та технологіями. Я люблю «бруднити руки» і експериментувати з новими рішеннями, і MLOps дав мені саме таку можливість.

Я знаю, що деякі люди вважають, що інженери DevOps можуть легко перейти до ролі MLOps, і це правда — багато навичок перекриваються. Однак я також бачив випадки, коли інженери програмного забезпечення, дослідники даних і інженери з обробки даних успішно переходили до MLOps після проходження практичних курсів і менторства. Це показує, що MLOps — це роль, відкрита для людей з різними технічними фонами, і це чудово!

Якщо ви зацікавлені у вивченні MLOps, я рекомендую два хороших ресурси.

Перший — це відкритий курс з MLOps, який називається Made with ML. Цей курс багатий практичними вправами та якісним матеріалом, який допоможе вам опанувати основи MLOps.

Другий ресурс — це онлайн-бюлетень Marvelous MLOps, де ви знайдете останні новини, рекомендації та навіть меми про MLOps. Цей бюлетень — чудове джерело інформації та натхнення для тих, хто цікавиться цією сферою.

Висновок

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

Використовуючи MLOps, організації можуть оптимізувати операції машинного навчання, забезпечуючи швидші експерименти, надійні моделі та покращену масштабованість. І MLOps, і DevOps надають компаніям можливість впроваджувати інновації, реагувати на вимоги ринку та ефективно надавати високоякісні рішення.

👍ПодобаєтьсяСподобалось20
До обраногоВ обраному8
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

А можете будь ласка розкрити детальніше — які переваги надав GitHub у порівнянні зі GitLab?

Наскільки я розумію шо то, шо то — це VCS. Теоретично MLOps мав би бути незалежним від VCS, а так у нас якийсь «tight coupling » та «vendor lock»

Це рішення не повязане із MLOps. На великому масштабі GitLab Ultimate обійдеться вам у 99$ за користувача/місяць проти 21$ для GitHub Enterprise надаючи майже ідентичні функціонали. Тому це тільки питання вартості, а MLOps, як ви й кажете, незалежний від VCS будь то GitHub, GitLab, Bitbucket, Azure DevOps чи інші.

Підписатись на коментарі