Справочник по MLOps и как об этом думать
Что такое MLOps?
В MLOps вы найдете противоречивые определения: движение, философия, платформа или должность? Большинство из них либо слишком расплывчато - «философия», либо слишком конкретны, просто относятся к одному конкретному набору инструментов.
Вот наше определение MLOP:
MLOps - это набор общепринятых передовых методов управления кодом, данными и моделями в вашей группе машинного обучения.
Это означает, что MLOps должен помочь вашей команде в следующем:
- Управление кодом: MLOps поощряет стандартные передовые методы разработки программного обеспечения и поддерживает непрерывную разработку и развертывание.
- Передовой опыт. Рекомендации помогут вам плавно перейти от идей к экспериментам и внедрению надежных моделей в производство.
- Управление данными. Платформа и рабочий процесс помогают обрабатывать, сохранять и отслеживать версии ваших наборов данных.
- Эффективное сотрудничество: команды могут обмениваться кодом, данными, моделями и экспериментами; бегать и понимать работу друг друга; и повторить предыдущую работу.
- Управление моделями. Вы можете легко обучать модели, отслеживать результаты экспериментов и развертывать надежные API.
MLOps - это обширная область, поэтому мы рассмотрим общую картину, а затем углубимся в темы, с которыми вы столкнетесь при ее внедрении.
Пейзаж MLOps
Может быть сложно выбрать лучшие инструменты и с чего начать. Наша страница инструментов машинного обучения предлагает обзор и простые объяснения наиболее полезных инструментов.
Эти инструменты MLOps охватывают все: от обработки данных, визуализации и автоматизации задач до обучения и развертывания. Мы сосредоточились на вариантах с открытым исходным кодом, но стоит ли отказываться от такого количества проприетарных платформ?
MLOps: строить против покупки
Многочисленные коммерческие платформы стремятся упростить MLOps, и многие команды задают вопрос «строить против покупки». Люди часто «покупают», потому что не уверены в создании собственных инструментов или использовании возможностей с открытым исходным кодом. Дорогие проприетарные платформы обещают упростить всю сложность.
Но проприетарные инструменты часто не оправдывают своих обещаний и вместо этого обходятся дорого и ограничивают вашу команду. Гарантируемые ими ярлыки часто невозможны; и вашей команде по-прежнему потребуется внутренний опыт MLOps, чтобы использовать их эффективно.
Вот почему мы являемся решительными сторонниками инструментов с открытым исходным кодом для MLOps. Бесплатные инструменты с открытым исходным кодом часто являются правильным выбором: они приводят к снижению затрат, большей гибкости, большему обучению, и упрощению адаптации - несмотря на то, во что вас убеждают проприетарные платформы.
Если вы доверяете своей команде инженеров, мы рекомендуем создать собственное решение из существующих компонентов с открытым исходным кодом, а не пытаться приспособить свои уникальные потребности к чужой проприетарной платформе.
Но если вы хотите создать свой собственный, как начать, не тратя месяцы на изучение всех вариантов? Мы искали проект MLOps с открытым исходным кодом, но не смогли найти его, поэтому создали его.
Теперь вы можете пропустить месяцы исследований и разработок, которые мы делали, и за несколько часов настроить ориентированную на производство среду MLOps с открытым исходным кодом.
Готовая к использованию архитектура MLOps с открытым исходным кодом
Если вам нужна мощность и гибкость вашего собственного решения, но простота и скорость управляемого частного решения, обратите внимание на нашу архитектуру Open MLOps. Это набор скриптов terraform для настройки той же системы, которую мы используем внутри Kubernetes, и вы можете настроить ее менее чем за день.
Вот преимущества Open MLOps:
- Бесплатно, гибко и с открытым исходным кодом. Мы создали Open MLOps полностью с использованием инструментов с открытым исходным кодом. Это означает, что если у вас есть другие потребности, их легко адаптировать: просто замените компоненты другими инструментами или своими собственными решениями.
- Начать легко. Многие инструменты MLOps требуют сложного обучения. Мы написали пошаговые инструкции, чтобы вы могли пройти через примерный проект за несколько часов, а затем приступить к выполнению своего собственного.
- Масштабируемость: Open MLOps работает в Kubernetes, поэтому его легко масштабировать вверх или вниз в зависимости от ваших потребностей. Если вы выполняете огромную рабочую нагрузку, вы можете просто увеличить вычислительную мощность. Если у вас ограниченный бюджет, вы можете запустить его в небольшом кластере.
Open MLOps включает в себя следующие компоненты:
- JupyterHub, общая записная книжка для совместной работы вашей команды.
- MLFlow для отслеживания ваших экспериментов и моделей.
- Префект для управления рабочими процессами и запланированными задачами.
- Селдон для производства ваших моделей и превращения их в API.
Вы можете настроить все в существующем кластере Kubernetes или запустить наш простой сценарий настройки, чтобы создать новый с помощью AWS EKS. Даже если вы используете готовые решения, вам, вероятно, все равно потребуется накопить внутренний опыт в MLOps, поэтому мы перечислили несколько полезных ресурсов, которые помогут вам начать работу.
Ресурсы MLOps
Мы написали много статей о MLOps. Вот наши фавориты, которые помогут вам на разных этапах вашего пути к MLOps.
Начало работы с MLOps и машинным обучением
Если вы хотите внедрить MLOps и хотите узнать больше, прежде чем приступить к созданию, вам следует начать со следующего:
- Четыре способа машинного обучения: понимание различных способов внедрения машинного обучения на высоком уровне.
- MLOps для исследовательских групп: понять, почему MLOps важен не только для промышленности, но и для исследовательских групп.
- Компоненты архитектуры машинного обучения: понимание важных составляющих большинства решений машинного обучения.
- Программное обеспечение с открытым исходным кодом для MLOps: понять, почему открытый исходный код обычно лучше, чем проприетарные решения.
- Разработка программного обеспечения против машинного обучения: понять, почему у машинного обучения есть дополнительные проблемы, которые ставят в тупик даже опытных инженеров-программистов.
- MLOps for Model Decay: поймите, почему нельзя запустить и забыть свои модели, даже если они работают хорошо.
- Почему ценен реестр моделей?: Узнайте, как и почему важно отслеживать свои модели.
- Зачем вам нужен инструмент обслуживания моделей: узнайте, как обслуживать модели в производственной среде.
Выбор инструментов для создания собственной платформы MLOps
После того, как вы решили внедрить MLOps, вам потребуются определенные инструменты и платформы. Учитывая широкий спектр вариантов, это, вероятно, самая сложная часть, поэтому мы сравнили наши фавориты и перебили маркетинговые разговоры, чтобы вам было легче.
- Выбор магазина функций: Зачем вам нужен магазин функций и как его выбрать.
- Почему мы любим Prefect как платформу для обработки данных и рабочего процесса: почему вы должны рассматривать Prefect как свой планировщик задач и инструмент рабочего процесса.
- Kubeflow: не готов к производству?: Проблемы, которые мы обнаружили с Kubeflow до перехода на Prefect.
- Сравнение платформ MLOps: Dataiku vs Alteryx vs SageMaker vs Databricks
- Сравнение решений для приборной панели: Streamlit vs Dash vs Shiny vs Voila
- Сравнение платформ рабочих процессов: Airflow, Luigi, Prefect, MLflow, Kubeflow
- Сравнение инструментов обработки данных: Pandas vs Dask vs Vaex vs Modin vs Ray
Настройка Open MLOps
После того, как вы выбрали инструменты, вам нужно будет установить и настроить их. Если вы хотите сымитировать настройку, которую мы используем внутри Data Revenue с помощью Open MLOps, мы создали несколько пошаговых руководств, чтобы быстро настроить и запустить JupyterHub, Prefect, Seldon, Dask и MLFlow.
- Настройка Open MLOps: производственная архитектура с открытым исходным кодом для машинного обучения
- Использование JupyterHub, Prefect и MLFlow в открытых MLOps
- Разверните свою модель как API с помощью MLFlow, Prefect и Seldon
Получать помощь
Если вам нужна помощь в настройке вашей команды с помощью MLOps, не стесняйтесь протягивать руку.