Если вы каким-либо образом связаны с Machine Learning в production-среде, вам важно понимать, что представляет из себя практика MLOps. Для людей с опытом разработки ПО самый простой способ понять, что такое MLOps — провести параллель между ним и DevOps. Данное руководство поможет вам понять суть обоих терминов, а также их сходства и различия. DevOps объединяет в себе процессы разработки, тестирования и эксплуатации программного обеспечения. Цель практик DevOps — превратить эти отдельные процессы в непрерывный набор связанных между собой шагов. Основные принципы DevOps — автоматизация процессов, непрерывная доставка и цикл обратной связи. Эти принципы основаны на коммуникациях между отделами и наборе инструментов, помогающих наглядно облегчить и улучшить автоматизируемые процессы (пример такого инструмента — системы CI/CD). Давайте немного подробнее рассмотрим требования DevOps к непрерывной доставке и автоматизации. Непрерывная доставка подразумевает объединение процессов разработки, тестирования и развертывания в одну оптимизированную операцию. CD сильно зависит от автоматизации, а ее основная цель — ускорить развертывание продуктов. Если ваши команды разработчиков практикуют методики DevOps, они могут быстро выкатить небольшие правки или фичи, что снижает риск выкатить что-то, глобально ломающее функционал, и дает возможность применять более итеративный подход к разработке ПО. Всем ясно, что скорость и качество разработки имеют решающее значение не только для разработчиков, но и для бизнеса в целом. Поскольку команды разработчиков могут тратить меньше времени на ручной билд, выкатку изменений и подобные рутинные задачи, это дает им возможность быть более восприимчивыми к запросам на обновление функционала приложения и создание новых фич, которые, к тому же, можно будет выкатывать чаще. Пользователям не придется ждать какого-то большого релиза для того, чтобы получить требуемый функционал. Как уже говорилось выше, еще одна важная часть DevOps — это гибкое планирование. В то время как традиционные подходы к управлению проектами сосредоточены на длительных сроках и графиках, DevOps поощряет разработчиков организовывать работу в короткие итерации и чаще выпускать релизы. DevOps указывает общие цели, но элементы реализации не заданы жестко, чтобы разработчики могли тестировать свои идеи на ранней стадии проекта. Такая стратегия также предотвращает риск того, что в процессе разработки, когда уже проделано много работы, внезапно обнаружится, что проект с самого начала не подходил для данного бизнеса. DevOps также позволяет организациям улучшать внутреннюю коммуникацию и корпоративную культуру, поскольку поощряет сотрудничество между командами. Например, одна из частых практик — создание staging-среды для тестирования новых функций, которые можно обсуждать, проверять и тестировать прямо в процессе разработки. Поскольку команды вместе работают в этой среде, общение, скорее всего, будет гораздо более эффективным и конкретным, чем просто обсуждение деталей реализации фичи только с помощью документации, без наглядного примера. Теперь, когда у нас есть понимание, что есть DevOps, и что происходит, когда мы его применяем, давайте определим, что же такое MLOps. MLOps или Machine Learning Operations — это набор методов, используемых для оптимизации всего жизненного цикла машинного обучения. MLOps направлен на устранение разрыва между процессами проектирования, разработки модели и ее эксплуатации. Часто при разработке продукта в сфере машинного обучения разработка модели и операции полностью разделены, а выкатка в прод производится вручную, что приводит к длительным срокам выполнения работ. MLOps объединяет сбор данных, предварительную обработку, обучение моделей, оценку, развертывание и переобучение моделей в единый процесс, над поддержанием которого работают все команды. Такое сотрудничество и коммуникация между сисадминами, командами по обработке и анализу данных и другими отделами в организации обеспечивают общее понимание того, как разрабатываются и поддерживаются модели для ML-продуктов, аналогично тому, что DevOps делает для ПО. Без использования методов и инструментов MLOps есть два варианта, по которым модели машинного обучения выводятся в продакшн: Ни один из подходов не идеален, поскольку оба требуют времени data-​​scientist’ов, чья основная работа — обработка данных и разработка моделей. Надежный инструментарий MLOps (ML-пайплайны) позволяет продолжить разработку модели без каких-либо затыков, и без необходимости в том, чтобы data-scientist’ы были экспертами в облачной инфраструктуре. MLOps делает ставку на автоматизацию процесса обучения и переобучения моделей. Это сокращает время вывода алгоритмов машинного обучения на рынок, а методы непрерывной интеграции и доставки позволяют намного быстрее выкатывать результат в продакшн. В результате модели в проде должны всегда давать точные прогнозы. Автоматизация поможет вам изменять продукт в соответствии с меняющимися требованиями, и реагировать на изменения в базовых данных. Большинство незначительных проблем (таких, как дрейф данных) можно решить, просто автоматически запустив конвейер машинного обучения, в то время как более серьезные проблемы могут потребовать внесения некоторых изменений в сам конвейер, но тем не менее, вам не придется начинать весь процесс с самого сначала. Как упоминалось выше, MLOps может делать более точные прогнозы, потому что вы можете быстрее справиться с проблемой изменения данных. Важной частью инструментария MLOps является не только автоматизация действий, которые происходят при обнаружении проблемы, но и обнаружение этих проблем. Система MLOps должна иметь возможность измерять дрейф модели, чтобы гарантировать высокое качество прогнозов. Это сведет к минимуму риск ложных выводов, и вы сможете более уверенно применять системы, использующие ML в критически важных для бизнеса случаях. Итак, вы, возможно, заметили, что между DevOps и MLOps есть некоторые сходства. Это всё потому, что MLOps заимствует многие принципы из DevOps, который был разработан первым. И DevOps, и MLOps поощряют и облегчают сотрудничество между людьми, которые занимаются разработкой (программистами и специалистами по данным), людьми, которые управляют инфраструктурой, и другими заинтересованными сторонами. Оба делают упор на автоматизацию процессов в непрерывной разработке, чтобы обеспечить максимальную скорость и эффективность разработки. Хотя DevOps и MLOps и имеют некоторое сходство, невозможно взять инструменты DevOps и использовать их для реализации машинного обучения. Некоторые требования относятся только к машинному обучению.  При использовании DevOps контроль версий кода используется для обеспечения четкой документации относительно любых изменений или корректировок, внесенных в разрабатываемое программное обеспечение. Однако с машинным обучением код — не единственный изменяющийся ввод. Данные — это еще одна важная часть входных данных, которой нужно будет управлять, такая же, как и параметры, метаданные, журналы и, наконец, модель.  Обучение моделей, а особенно глубокое обучение, обычно требует больших вычислительных ресурсов. Для большинства программных проектов время сборки совершенно не имеет значения, и, следовательно, оборудование, на котором это делается, также не имеет значения. Однако для обучения более крупных моделей может потребоваться очень много времени, от часов до недель, даже на большинстве машин с GPU, предлагаемых поставщиками облачных вычислений, а это означает, что для железа в MLOps предъявляются более строгие требования. Мониторинг также является частью хорошей практики DevOps. Последние несколько лет в моде инженерия надежности сайта (SRE), что подчеркивает важность мониторинга при разработке программного обеспечения. Разница между мониторингом в DevOps и MLOps заключается в том, что характеристики программного обеспечения, в отличие от характеристик моделей машинного обучения, не меняются. После развертывания модели в продакшн-среде она начинает генерировать прогнозы на основе новых данных, которые она получает из реального мира. Эти данные будут продолжать меняться и адаптироваться по мере изменения бизнес-среды, что приведет к ухудшению качества модели. MLOps предусматривает процедуры, которые облегчают непрерывный мониторинг и переподготовку модели, чтобы алгоритмы можно было продолжать использовать в продакшн-среде без ухудшения результатов. В 2020 году просто нет успешной компании-разработчика программного обеспечения, которая могла бы работать без использования каких-либо принципов и инструментов DevOps. Точно так же в будущем просто не будет возможности управлять разработкой и производством моделей машинного обучения без некоторых общих принципов и инструментов MLOps. Как и в случае с DevOps сегодня, практики MLOps будут разными, но систематический подход просто необходим. Управляющий партнер / CVO @ Nixys