В этой статье я расскажу вам об операциях машинного обучения (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), вы сможете легко влиться в стартапы и организации среднего размера, которые ищут людей, способных справиться с такими системами.
Инженер машинного обучения — это именно та позиция, на которую должны ориентироваться начинающие кандидаты. Ниже приведены несколько ресурсов, на которые вам следует обратить внимание:
[Книга]: книга Андрея Буркова по Machine Learning Engineering.
[Книга]: Introduction to MLOps от O'Reilly media.
-
Вы также можете попробовать пройти программы сертификации, подобные приведенным ниже:
Видеоверсию этой статьи можно посмотреть здесь:
Если эта статья была для вас полезной, вы также можете ознакомиться с моими курсами по дата-сайнс и машинному обучению в Wiplane Academy. Они всеобъемлющие, но достаточно компактные и помогут вам создать прочный фундамент из работ, которые можно будет потом демонстрировать.
Всех заинтересованных приглашаем на открытое занятие «End-to-end решение для аналитики на примере источника MaestroQA». На занятии разберем:
Extract-Load через API-вызовы и автоматизация в Airflow;
Трансформация данных с dbt: обогащение, дедупликация, суррогатные ключи, приведение типов;
Моделирование метрик в Looker BI: слой доступа, визуализация, drill-down.
Регистрация по ссылке.
astramax57
с переобучением моделей справляюсь на раз-два. я - MLOps?