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

До недавнего времени неотъемлемой частью нашего обучения было знакомство со стандартным жизненным циклом разработки программного обеспечения (SDLC). Он начинается с анализа требований, затем следует планирование, проектирование и дизайн, разработка, тестирование, развертывания и, наконец, техническое обслуживание.

Мы изучали (и до сих пор изучаем) водопадную, итеративную и гибкую (agile) модели разработки программного обеспечения.

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

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

В этой статье мы поговорим о том:

  • Что такое MLOps?

  • Какие задачи решает MLOps?

  • Какие навыки вам необходимы для MLOps?

Я постараюсь подробно ответить на каждый из этих вопросов.

Что такое MLOps?

Если вы посмотрите сводку по MLOps на Google Trends, вы увидите, что это относительно новая дисциплина, и потребность в ней продолжает расти по мере того, как все больше организаций пытаются интегрировать системы машинного обучения в свои продукты и платформы.

Вот как я бы определил MLOps:

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

Почему MLOps?

До недавнего времени мы имели дело с осязаемыми объемами данных и очень небольшим количеством моделей на небольшом масштабе.

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

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

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

  • Команда по развитию бизнеса или команда разработчиков програмного продукта — определение бизнес-целей с помощью ключевых показателей эффективности (KPI).

  • Дата-инженеры — сбор и подготовка данных.

  • Дата-сайентисты — проектирование решений машинного обучения и разработка моделей.

  • IT или DevOps — развертывание и мониторинг вместе с командой дата-сайентистов.

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

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

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

Какие задачи решает MLOps?

Управление такими системами в больших масштабах — задача непростая. Существует множество узких мест, которые необходимо брать во внимание. Ниже перечислены основные проблемы, с которыми сталкиваются команды:

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

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

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

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

Какие навыки вам нужны для MLOps?

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

Ниже перечислены ключевые навыки, на которых вам стоит сосредоточиться:

1. Определение задач машинного обучения исходя из бизнес-целей.

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

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

2. Поиск данных и проектирование решений машинного обучения под задачу.

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

Поиск данных — один из самых напряженных процессов. Он состоит из нескольких частей:

  • Вам нужно найти как можно больше доступных подходящих наборов данных.

  • Проверить достоверность этих данных и их источник.

  • Соответствует ли источник данных таким нормативам, как GDPR?

  • Как сделать набор данных доступным?

  • Каков тип источника данных — статический (файлы) или потоковый в реальном времени (сенсоры)?

  • Сколько источников данных нужно использовать?

  • Как создать конвейер данных, который может управлять как обучением, так и оптимизацией после развертывания модели в производственной среде?

  • Какие облачные сервисы вы будете использовать?

3. Подготовка и обработка данных — дата-инжиниринг.

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

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

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

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

4. Обучение модели и эксперименты — дата-сайнс.

Как только ваши данные будут подготовлены, вы можете переходить к следующему этапу — обучению модели машинного обучения.

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

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

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

Шпаргалка по задачам для (почти) каждого проекта машинного обучения

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

Вы можете реализовать контроль версий для всех компонентов ваших систем машинного обучения (в основном для данных и моделей) вместе с параметрами.

Сегодня это очень легко сделать с помощью опенсорсных инструментов, таких как DVC и CML.

Другие задачи включают в себя:

  • Тестирование модели путем написания модульных тестов обучения модели.

  • Сравнение модели с базовыми конфигурациями, более простыми моделями и в разных измерениях.

  • Масштабирование обучения модели с использованием распределенных систем, аппаратных ускорителей и масштабируемого анализа.

5. Построение и автоматизация конвейеров машинного обучения.

Вы нужно создавать конвейеры машинного обучения с учетом следующих задач:

  • Определение системных требований — параметров, вычислительных требований, триггеров.

  • Выбор подходящей облачной архитектуры — гибридной или мультиоблачной.

  • Построение пайплайнов обучения и тестирования.

  • Отслеживание и проверка работы конвейера.

  • Выполнение проверки данных.

6. Развертывание моделей в производственной системе.

В основном существует два пути развертывания модели машинного обучения:

  • Статическое развертывание или встроенная модель  — когда модель упаковывается в устанавливаемое прикладное программное обеспечение, а затем развертывается. Например, приложение, предлагающее пакетную оценку запросов.

  • Динамическое развертывание — когда модель развертывается с использованием веб-фреймворка наподобии FastAPI или Flask, и предлагается в качестве API эндпоинта, который отвечает на запросы пользователей.

Существуют различные методы динамического развертывания:

  • Развертывание на сервере (виртуальной машине).

  • Развертывание в контейнере.

  • Бессерверное развертывание.

  • Потоковая передача — вместо REST API все модели и код приложения регистрируются в механизме потоковой обработки, таком как Apache Spark, Apache Storm и Apache Flink.

Также следует подумать о следующем:

  • Обеспечение соблюдения надлежащей документации и результатов тестирования.

  • Повторная проверка точности модели.

  • Выполнение проверок объяснимости.

  • Обеспечение выполнения всех требований управления.

  • Проверка качества любых артефактов данных.

  • Нагрузочное тестирование — использование вычислительных ресурсов.

7. Мониторьте, оптимизируйте и обслуживайте модели.

Вам необходимо не только мониторить производительность моделей в производственной среде, но и обеспечивать надлежащее и адекватное управление.

Управление (governance) здесь подразумевает добавление средств контроля, чтобы гарантировать, что модели выполняют свои обязанности перед всеми стейкхолдерами, сотрудниками и пользователями, которых они затрагивают.

На этом этапе нам нужны дата-сайентисты и DevOps-инженеры, которые будут поддерживать всю систему в рабочем состоянии, выполняя следующие задачи:

  • Отслеживание снижения производительности и бизнес-качества прогнозов моделей.

  • Внедрение стратегий логирования и метрик непрерывной оценки.

  • Устранение сбоев в системе и отслеживание смещений.

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

Рекомендуемая литература

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

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

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

Видеоверсию этой статьи можно посмотреть здесь:

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


Всех заинтересованных приглашаем на открытое занятие «End-to-end решение для аналитики на примере источника MaestroQA». На занятии разберем:

  • Extract-Load через API-вызовы и автоматизация в Airflow;

  • Трансформация данных с dbt: обогащение, дедупликация, суррогатные ключи, приведение типов;

  • Моделирование метрик в Looker BI: слой доступа, визуализация, drill-down.
    Регистрация по ссылке.

Комментарии (1)


  1. astramax57
    12.04.2022 09:57

    переобучение модели в связи с изменениями в бизнес-целях - задача непростая

    с переобучением моделей справляюсь на раз-два. я - MLOps?