Обзор

MLOps – это инженерная культура и практика машинного обучения (ML), целью которой является унификация разработки системы ML (Dev) и эксплуатации системы ML (Ops). Это применение практики DevOps в области машинного обучения. Практика MLOps означает, что мы выступаем за автоматизацию и мониторинг на всех этапах создания системы машинного обучения, включая интеграцию, тестирование, выпуск, развертывание и управление инфраструктурой.

Несколько цитат, чтобы лучше понять MLOps:

  1. " Основные проблемы, с которыми люди сталкиваются при разработке возможностей машинного обучения, — это масштабирование, контроль версий, воспроизводимость моделей и согласование заинтересованных сторон".
  2. Термин MLOps определяется как «расширение методологии DevOps, включающее ресурсы машинного обучения и науки о данных в качестве первоклассных элементов в экологии DevOps»
  3. MLOps, как и DevOps, возникает из-за понимания того, что отделение разработки модели машинного обучения от процесса ее реализации — операций машинного обучения — снижает качество, прозрачность и гибкость всего интеллектуального программного обеспечения».

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

Уровень зрелости MLOps

Уровень зрелости MLOps — хороший способ измерить уровень автоматизации в конвейере машинного обучения. Точное определение уровней зрелости может немного отличаться у разных лидеров отрасли MLOps, таких как Google или Microsoft. Согласно Определению уровней MLOps от Microsoft Azure (настоятельно рекомендуем прочитать) и Обзору архитектуры уровней MLOps от Google, их можно резюмировать следующим образом:

  • Уровень 0: без DevOps или MLOps
  • Уровень 1: DevOps, но не MLOps
  • Уровень 2: DevOps и автоматизированное обучение моделям
  • Уровень 3: DevOps и автоматизированное развертывание модели
  • Уровень 4: Полные MLOps

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

Уровень 0 — без DevOps или MLOps

Уровень зрелости 0 в значительной степени ручной. На этом уровне нет DevOps для выпуска модели и MLOps для обучения и развертывания модели. Специалист по данным вручную извлекает и экспериментирует с данными, затем вручную обучает и создает модели машинного обучения, а затем вручную оценивает и проверяет модели. Затем модели ML передаются инженеру-программисту для ручного развертывания в службе ML в рабочей среде. Ниже приведена схема типичного конвейера MLOps уровня зрелости 0:

На этом уровне есть несколько очевидных характеристик, на которые стоит обратить внимание:

  1. Нет MLOps. Весь процесс, от извлечения и анализа данных до обучения и оценки моделей, выполняется вручную. Специалист по данным может иметь несколько локальных сценариев для упрощения рабочего процесса, но не существует единой или управляемой системы для автоматизации процесса. Отсутствие автоматизированной обработки данных, автоматизированного обучения моделей и автоматической оценки моделей часто приводит к длительному циклу выпуска моделей ML и нарушению согласованности производительности моделей ML.
  2. Без DevOps. Это типично, когда проект машинного обучения находится на начальной стадии, когда у разработчиков программного обеспечения не было времени и инвестиций для создания конвейера DevOps для автоматического выпуска моделей машинного обучения. Однако отсутствие автоматизации, особенно отсутствие автоматического развертывания модели машинного обучения и автоматизированного тестирования интеграции службы машинного обучения, часто приводит к длительному циклу развертывания моделей машинного обучения и проблематичному управлению производством, например управлению версиями и аварийному откату.
  3. Нечастые циклы выпуска. При интенсивном ручном рабочем процессе любое изменение функции ML требует длительного цикла для публикации пользователям. Обычная практика частых выпусков в современной гибкой разработке программного обеспечения с треском терпит неудачу на этом уровне зрелости.

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

Уровень 1 — DevOps, но без MLOps

Уровень зрелости 1 по-прежнему ручной, но сделан шаг вперед, чтобы добавить в систему автоматизацию. Рабочий процесс машинного обучения, выполняемый специалистом по данным, по-прежнему выполняется вручную, но как только модель машинного обучения передается инженеру (или самому ученому), выпуск, развертывание и мониторинг службы машинного обучения полностью автоматизированы. Конвейер, который выполняет выпуск и развертывание службы машинного обучения, считается конвейером CI/CD, который обеспечивает надлежащие методы DevOps для службы машинного обучения и управления кодом.

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

На этом уровне есть несколько характеристик, на которые стоит обратить внимание:

  1. Выпуск службы DevOps для машинного обучения. После создания модель машинного обучения развертывается через конвейер DevOps с автоматической сборкой, упаковкой, тестированием и развертыванием. Больше не нужно вручную копировать модель ML в производство. Тот же поток CI/CD применим и к изменению кода службы машинного обучения. Проводится автоматизированное интеграционное тестирование для проверки изменений кода, связанных с услугами машинного обучения. Это обеспечивает стабильную производительность модели и изменение кода в рабочей среде на стороне службы машинного обучения.
  2. Нет MLOps. Рабочий процесс машинного обучения по-прежнему выполняется вручную. Нет автоматизированного обучения модели и автоматического развертывания модели.

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

Уровень 2 — DevOps и автоматизированное обучение моделям

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

Несколько характеристик, на которые стоит обратить внимание на этом уровне:

  1. Частичные MLOps. Рабочий процесс машинного обучения частично автоматизирован вплоть до обучения модели машинного обучения. По мере того, как команда осознает боль длительного цикла выпуска и вкладывает усилия в сокращение времени рабочего процесса машинного обучения, этапы обработки данных и обучения модели часто становятся первыми целями.
  2. Автоматизированное обучение моделей. Обучение модели часто занимает больше всего времени в современном рабочем процессе машинного обучения не только из-за фактического времени обучения, но также из-за инфраструктуры и большого количества необходимых машин. Управление учебной инфраструктурой, если оно не полностью автоматизировано, часто становится бременем для ручного запуска и отключения. Ученый может придумать автоматизированные сценарии, чтобы сократить количество ручных операций, необходимых для управления инфраструктурой обучения, но для дальнейшего сокращения работы необходима более унифицированная и полностью управляемая система.
  3. Отсутствие автоматического развертывания модели. Как упоминалось выше, модель ML, созданная на этапе автоматизированного обучения модели, по-прежнему не выпускается автоматически. Обычно это вызвано либо ручной проверкой модели ученым, либо отсутствием связи между конвейером обучения модели и конвейером развертывания модели, либо и тем, и другим.

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

Уровень 3 — DevOps и автоматизированное развертывание модели

Уровень зрелости 3 относится к последнему этапу рабочего процесса машинного обучения — развертыванию модели. На этом уровне обученная модель автоматически проверяется с использованием предопределенного порога метрики. После прохождения проверки модели модель ML автоматически отправляется в конвейер службы ML и автоматически запускает развертывание конвейера службы ML для развертывания модели ML в рабочей среде. Как вы, наверное, уже догадались, на этом уровне все шаги от сбора данных до развертывания модели в продакшене автоматизированы. Конвейер обучения машинного обучения и сервисный конвейер машинного обучения связаны и работают вместе, чтобы превратить необработанные данные в обслуживаемую модель машинного обучения в рабочей среде.

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

Несколько характеристик, на которые стоит обратить внимание на этом уровне:

  1. Близко к полной MLOps. Рабочий процесс машинного обучения полностью автоматизирован от сбора данных до развертывания модели. Никаких ручных усилий не требуется, если все идет хорошо, как только ученый запускает конвейер обучения машинного обучения с нужными данными. Полный MLOps еще не достигнут, так как у нас не было переобучения модели, чтобы замкнуть цикл.
  2. Автоматическое развертывание модели. Захватывающая часть автоматизации рабочего процесса ML. Поскольку ученые и инженеры работают вместе, чтобы установить связь между конвейером обучения ML и конвейером обслуживания ML, достигается автоматическое развертывание модели. Это часто включает в себя надлежащую автоматическую проверку модели на стороне конвейера обучения машинного обучения и триггер автоматического развертывания на стороне конвейера службы машинного обучения.

Теперь у команды есть работающая и эффективная система для быстрой доставки необработанных данных в обслуживаемую модель в производственной среде. Производительность и скорость значительно улучшены для проекта ML. У команды может возникнуть соблазн порадоваться и назвать работу выполненной. Однако для достижения полных MLOps необходимо пройти окончательный уровень зрелости.

Уровень 4 — Полные MLOps

Уровень зрелости 4 является последним уровнем для полных MLOps. Заметная разница между уровнем 4 и уровнем 3 заключается в возможности переобучения модели. Модель ML сильно зависит от данных. После развертывания модели машинного обучения в рабочей среде и начала выполнения логических выводов на реальных данных, на которых она никогда не обучалась, ее производительность со временем может начать снижаться. Важно настроить метрики мониторинга производительности, чтобы контролировать производительность модели машинного обучения в производственной среде, и, что более важно, автоматически запускать переобучение модели, когда метрики производительности режима снижаются до определенного порога. Ниже приведена схема типичного конвейера MLOps Maturity Level 4:

Конвейер MLOps уровня 4 включает в себя все процессы непрерывной интеграции (CI), непрерывной доставки (CD) и непрерывного обучения (CT). По сравнению с конвейерами предыдущего уровня добавлено несколько новых функций, связанных с непрерывным обучением:

  1. Сбор новых данных из реального мира. После развертывания в рабочей среде модель машинного обучения постоянно получает запрос на вывод данных из реального мира. На этом уровне система MLOps собирает новые данные реального мира, которые она видит в производстве с течением времени, и сохраняет данные для будущего использования.
  2. Мониторинг производительности модели машинного обучения. Запуск модели машинного обучения в производство — это еще не конец. В качестве обычной практики необходимо настроить мониторинг производительности для отслеживания производительности модели машинного обучения и создания соответствующих аварийных сигналов.
  3. Автоматическое переобучение модели. Это огромная разница по сравнению с конвейером предыдущего уровня. Либо когда производительность модели ML падает до определенного предопределенного порога, либо при определенной частоте, система MLOps может запускать автоматическое переобучение. Новые данные реального мира, собранные до сих пор в производстве, можно затем использовать для переобучения модели ML, чтобы лучше обрабатывать больше реальных случаев. Благодаря уже реализованному автоматизированному тестированию модели и автоматизированному развертыванию модели новая обученная модель может быть автоматически протестирована и запущена в производство без какого-либо ручного вмешательства.

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

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

Первоначально опубликовано на https://stephenweixu.com.