image


Если вы каким-либо образом связаны с Machine Learning в production-среде, вам важно понимать, что представляет из себя практика MLOps. Для людей с опытом разработки ПО самый простой способ понять, что такое MLOps — провести параллель между ним и DevOps. Данное руководство поможет вам понять суть обоих терминов, а также их сходства и различия.


Что такое DevOps?


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


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


Непрерывная доставка и автоматизация


Давайте немного подробнее рассмотрим требования DevOps к непрерывной доставке и автоматизации.


Непрерывная доставка подразумевает объединение процессов разработки, тестирования и развертывания в одну оптимизированную операцию. CD сильно зависит от автоматизации, а ее основная цель — ускорить развертывание продуктов.


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


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


Гибкое планирование


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


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


Улучшение корпоративной культуры


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


Что такое MLOps?


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


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


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


Больше времени на разработку моделей


Без использования методов и инструментов MLOps есть два варианта, по которым модели машинного обучения выводятся в продакшн:


  1. Data-scientist должен быть специалистом широкого профиля, и заниматься всем, от очистки данных и выбора модели до настройки кластера Kubernetes и управления инфраструктурой.
  2. Data-scientist передает готовую модель инженеру по машинному обучению, выводящему модель в продакшн.

Ни один из подходов не идеален, поскольку оба требуют времени data-​​scientist’ов, чья основная работа — обработка данных и разработка моделей. Надежный инструментарий MLOps (ML-пайплайны) позволяет продолжить разработку модели без каких-либо затыков, и без необходимости в том, чтобы data-scientist’ы были экспертами в облачной инфраструктуре.


Сокращение времени выхода на рынок


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


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


Более высокая уверенность в прогнозах


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


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


В чем DevOps и MLOps похожи?


Итак, вы, возможно, заметили, что между DevOps и MLOps есть некоторые сходства. Это всё потому, что MLOps заимствует многие принципы из DevOps, который был разработан первым.


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


Ключевые отличия DevOps и MLOps


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


Контроль версий для машинного обучения


image


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


Требуемое железо


image


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


Непрерывный мониторинг


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


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


Дальнейшее движение


В 2020 году просто нет успешной компании-разработчика программного обеспечения, которая могла бы работать без использования каких-либо принципов и инструментов DevOps. Точно так же в будущем просто не будет возможности управлять разработкой и производством моделей машинного обучения без некоторых общих принципов и инструментов MLOps. Как и в случае с DevOps сегодня, практики MLOps будут разными, но систематический подход просто необходим.

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


  1. pinogri
    02.09.2021 03:47
    +1

    Часто MLOps является частью общего DevOps( например где ML модель является частью SDK, а уж SDK является составляющей конечного приложения для пользователя) . Думаю можно добавить какие либо реальные кейсы,чтобы было легче понять на практике.