Что такое MLOps? Объяснение операций машинного обучения
В этой статье мы расскажем вам об операциях машинного обучения, которые похожи на DevOps для машинного обучения.
До недавнего времени все мы изучали стандартный жизненный цикл разработки программного обеспечения (SDLC). Он начинается от постановки требований, затем идет проектирование и разработка, тестирование и развертывание, и затем дальнейшее обслуживания.
Мы изучали (и до сих пор изучаем) модель «водопад», итеративную модель и гибкие модели разработки программного обеспечения.
Сейчас мы находимся на стадии, когда почти каждая компания пытается включить в свой продукт машинное обучение (ML), часто называемое искусственным интеллектом.
Это новое требование построения систем машинного обучения дополняет и реформирует некоторые принципы SDLC, давая жизнь новой инженерной дисциплине, называемой операциями машинного обучения или MLOps. И этот новый термин вызвал настоящий ажиотаж и привел к появлению новых должностей.
Здесь мы поговорим о следующем:
- Что такое MLOps?
- Какие проблемы решает MLOps?
- Какие навыки вам нужны для MLOps?
Продолжайте читать, и мы подробно объясним каждый пункт.
Что такое MLOps?
Если вы посмотрите на MLOps в Google-трендах, то увидите, что это относительно новая дисциплина. Опять же, это произошло потому, что все больше организаций пытаются интегрировать системы машинного обучения в свои продукты и платформы.
Вот как я бы определил MLOps:
MLOps – это инженерная дисциплина, которая направлена на объединение разработки систем машинного обучения (dev) и развертывания систем машинного обучения (ops) для стандартизации и оптимизации непрерывной поставки высокопроизводительных моделей в производство.
Почему MLOps?
До недавнего времени мы имели дело с управляемыми объемами данных и очень небольшим количеством моделей в небольшом масштабе.
Сейчас ситуация меняется, и мы встраиваем автоматизацию принятия решений в широкий спектр приложений. Это порождает множество технических проблем, возникающих при создании и развертывании систем на основе машинного обучения.
Чтобы понять MLOps, мы должны сначала понять жизненный цикл систем ML. В жизненном цикле задействованы несколько разных команд организации, основанной на данных.
С самого начала и до конца участвуют следующие команды:
- Группа по развитию бизнеса или продукта – определение бизнес-целей с помощью KPI.
- Инженерия данных – сбор и подготовка данных.
- Наука о данных – проектирование решений машинного обучения и разработка моделей.
- ИТ или 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. Мониторинг, оптимизация и обслуживание моделей.
Вам нужно не только следить за эффективностью работы моделей в производстве, но необходимо также обеспечивать хорошее и справедливое управление.
Управление здесь означает добавление мер контроля, чтобы обеспечить выполнение моделями своих обязанностей перед всеми заинтересованными сторонами, сотрудниками и пользователями, которых они затрагивают.
В рамках этого этапа нам нужны специалисты по данным и инженеры DevOps, чтобы поддерживать всю систему в рабочем состоянии, выполняя следующие задачи:
- Отслеживание снижения производительности и бизнес-качества прогнозов модели.
- Настройка стратегий ведения журналов и установление показателей непрерывной оценки.
- Устранение сбоев системы и системных ошибок.
- Настройка производительности модели как в обучающих, так и в обслуживающих конвейерах, развернутых в производственной среде.
Кроме того, мы предлагаем вам почитать следующее:
Эта статья посвящена MLOps, и представляет собой не профиль специальности, а экосистему из нескольких заинтересованных сторон.
Если вы работаете на стыке машинного обучения и разработки программного обеспечения (DevOps), то вы хорошо подходите для стартапов и средних организаций, которые ищут людей, которые могут управлять такими системами от начала до конца.
Инженер ML – это позиция, которая обслуживает такую вот золотую середину, и это то, на что должны ориентироваться начинающие кандидаты. Ниже представлены несколько ресурсов, которые вы можете просмотреть:
- [Книга]: книга Андрея Буркова по Инженерия машинного обучения.
- [Книга]: Введение в MLOps от O’Reilly media.