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

Согласно Статье VentureBeat за 2019 год, 87% проектов по науке о данных никогда не доходят до производства. Почему так сложно преобразовать эксперименты с машинным обучением в приложения, развернутые в производственных цехах? Причин может быть несколько.

Эксперимент

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

Сотрудничать

Еще одна проблема — сотрудничество. Проекты машинного обучения обычно выполняются смешанной группой специалистов, включая инженеров по данным, специалистов по данным и инженеров по машинному обучению. Чтобы эти проекты давали какие-либо полезные результаты, важно, чтобы все могли сотрудничать друг с другом. К сожалению, работа в бункерах часто является правилом. Эксперименты с машинным обучением часто проводятся на вычислительных ноутбуках, которые находятся в облаке, или на личной рабочей станции специалиста по данным. Чаще всего эволюция кода не (достаточно) доступна команде, что затрудняет воспроизведение экспериментов в других вычислительных средах.

Почему бы не использовать DevOps?

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

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

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

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

Что такое МЛОпс?

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

Контроль версий

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

Трубопроводы

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

Облачная среда

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

Жизненный цикл MLOps

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

Рабочие пакеты для инженеров данных, специалистов по данным и инженеров по машинному обучению четко определены:

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

Каковы преимущества MLOps?

Легко воспроизвести

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

Стимулирование сотрудничества

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

Более быстрое развертывание

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

Как выглядит задача MLOps?

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

Для проведения обучения в удаленной среде вам необходимо четко определить задачи, которые приведут к построению модели. Сюда входит предварительная обработка (преобразование данных, дополнение данных), сам процесс обучения и процесс проверки. Эти задачи, в зависимости от фреймворка/платформы MLOps, определяются на другом уровне абстракции:

  • код: задачи определяются с помощью фрагмента кода или с помощью определенных классов
  • блокнот: ячейки, которые считаются задачами
  • файл: файловые скрипты, которые определяют задачу
  • контейнер докеров: выполнение файлового скрипта внутри образа докера

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

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

Улучшение вашего рабочего процесса MLOps

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

конвейер машинного обучения

Конвейер машинного обучения включает в себя все задачи, необходимые для построения модели:

  • Предварительная обработка входных данных
  • Обучение и тестирование модели
  • Отчетность о качестве моделей (метрики, графики)
  • Регистрация и развертывание модели
  • Конвейер CI/CD кода

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

Обслуживание модели (вывод)

Модель может быть запущена в производство с помощью автоматизированных инструментов (TFServing, TorchServe, MLServer), а также может быть развернута через самодельный API. Это предлагает конечным пользователям больше гибкости и возможностей настройки. В обоих случаях вы получаете API, который предлагает интерфейс между моделью и внешним миром.

Отчетность и мониторинг

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

Отслеживание экспериментов

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

Готовы начать с MLOps?

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

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

Автор

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

https://kapernikov.com/authors/ludovic-santos/

Первоначально опубликовано на https://kapernikov.com 29 сентября 2022 г.