Сегодня мы запускаем первоклассную поддержку Kubernetes в качестве альтернативы интеграции собственных сервисов AWS в Metaflow. Специалисты по данным могут масштабировать вычисления до кластеров Kubernetes и планировать потоки, которые будут выполняться рабочими процессами Argo. Чтобы начать работу, прочтите наше руководство по развертыванию Kubernetes.

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

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

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

Постепенный путь к производству

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

Следуя этому духу, Metaflow поощряет проекты, которые становятся все более готовыми к производству, проходя следующие этапы:

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

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

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

Наука о данных, ориентированная на человека, на AWS

Когда Netflix выпустил Metaflow с открытым исходным кодом в 2019 году, мы предоставили путь перехода с использованием услуг, предоставляемых Amazon Web Services:

AWS Batch предоставляет простое решение для второго этапа. Он заботится о запуске экземпляров EC2 на лету всякий раз, когда специалист по данным хочет перейти в облако. AWS Batch прост в настройке, имеет минимальные эксплуатационные расходы и не требует дополнительных затрат по сравнению со стандартной ценой EC2, что делает его отличным выбором для команд, которые хотят получать выгоду от облачных вычислений с минимальными трудностями. Специалист по данным может просто выполнить run --with batch, чтобы масштабировать свои проекты в облаке.

Для производственных развертываний AWS предоставляет еще один надежный сервис — AWS Step Functions, который обеспечивает выполнение рабочих процессов без вмешательства человека и с минимальными инженерными трудностями. Специалист по данным может просто выполнить step-functions create, чтобы развернуть свой проект в рабочей среде.

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

Новое: Metaflow в Kubernetes

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

Сегодня платформа, которая предоставляет инженерам почти бесконечную гибкость для создания пользовательской инфраструктуры, — это Kubernetes. Kubernetes для инженерии и науки о данных — то же, что мука для хлеба. Вы не должны потреблять его как таковой, но вы можете использовать его в качестве ингредиента для выпечки чего-нибудь вкусненького (хотя это требует определенных навыков и усилий):

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

Стоит подчеркнуть, что преимущества Kubernetes ориентированы на инженеров, а не на специалистов по данным, которым не нужно заботиться о базовой инфраструктуре при использовании Metaflow. Специалист по данным может писать свои потоки как обычно и масштабировать до кластера Kubernetes компании, просто выполнив run --with kubernetes. Фактически, любой поток, который вы использовали для run --with batch, теперь может быть run --with kubernetes без каких-либо изменений в коде!

Гибкость Kubernetes также является его самым большим недостатком: Kubernetes — это сложная экосистема, состоящая из множества инструментов и подходов. Интеграция Metaflow-Kubernetes не делает слишком много предположений о том, как настроен ваш кластер. Тем не менее, работа с кластером Kubernetes производственного уровня, адаптированным для ваших рабочих нагрузок машинного обучения, может потребовать большого выбора, компромиссов и инженерных усилий.

Мы предоставляем базовую конфигурацию Terraform, которая позволяет развертывать ресурсы Kubernetes с поддержкой Metaflow в сервисе Kubernetes, управляемом AWS, EKS с помощью нескольких команд, но мы ожидаем, что наиболее серьезные организации захотят настроить свои политики безопасности, политики автоматического масштабирования, и системы наблюдения. Если вам интересно узнать, как это сделать, присоединяйтесь к нашему Slack, чтобы обсудить лучшие практики.

Новое: Metaflow в рабочих процессах Argo

Чтобы поддерживать оркестровку рабочих процессов производственного уровня изначально в Kubernetes — этап 3 — мы превратились в рабочие процессы Argo. Argo Workflows — это, пожалуй, самый популярный нативный Kubernetes оркестратор рабочих процессов, который, среди прочего, поддерживает Kubeflow Pipelines под капотом.

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

Чтобы извлечь выгоду из рабочих процессов Argo, специалисту по данным необходимо знать только одну команду: argo-workflows create. Команда планирует рабочий процесс для автоматического выполнения в производственной инфраструктуре Kubernetes без каких-либо изменений в коде Python ученого.

Чтобы получить представление о том, как выглядит выпускной путь в Kubernetes, включая рабочие процессы Argo, взгляните на короткий скринкаст ниже (без звука):

Интеграция рабочих процессов Metaflow-Argo изначально была начата SAP, типичным примером крупной организации с высокими требованиями к инфраструктуре. Вот как Роман Киндрук из SAP, активно участвовавший в проекте интеграции, описывает свою мотивацию использования рабочих процессов Argo с Metaflow:

Наши специалисты по обработке данных ценят простой и понятный интерфейс Python, предоставляемый Metaflow. В то же время наши инженеры глубоко заинтересованы в использовании рабочих процессов Kubernetes и Argo, поэтому нам нужно решение, объединяющее лучшее из обоих миров. Мы рады видеть, что скромный запрос на вытягивание, который мы начали некоторое время назад, превратился в первоклассную поддержку рабочих процессов Argo и Kubernetes в Metaflow!

Роман Кидрук / SAP

После первоначального вклада SAP мы тесно сотрудничали с сообществом Argo Workflows, чтобы убедиться, что интеграция соответствует их долгосрочной дорожной карте. Юань Тан, сопровождающий Argo Workflows, прокомментировал:

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

Юань Тан / Argo Workflows & Akuity

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

Следующие шаги

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

Для начала ознакомьтесь с Руководством по развертыванию Kubernetes. Если вам интересно, подходит ли вам путь AWS-native или Kubernetes, присоединяйтесь к Slack поддержки Metaflow для получения дополнительной информации и рекомендаций. В любом случае, мы будем очень признательны за ваши отзывы и пожелания!