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

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

Чтобы решить эту проблему, QuantumBlack открыл исходный код платформы Kedro, среды Python с открытым исходным кодом для создания воспроизводимого, поддерживаемого и модульного кода для обработки данных. Проекты, созданные с помощью Kedro, достаточно универсальны, чтобы покрыть большинство задач, которые могут возникнуть у специалистов по данным. Кроме того, абстракции каталога данных и конвейера делают процесс построения модели похожим на программный проект, который можно легко настроить и развернуть, особенно для инженеров, которые не принимали участия в их реализации. Он предоставляет множество плагинов для регистрации моделей и метрик в Mlflow, отправки проекта в виде образа докера и больше. Основываясь на отзывах, полученных от наших клиентов, мы сделали Kedro основной частью операционной платформы машинного обучения GetInData. Мы представили план нашей платформы MLOps во время запуска Google Cloud Region в Варшаве. Посмотреть можно здесь (пока только на польском языке).

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

Используете Кубефлоу? Встречайте кедро-кубефлоу

Kubernetes — это ядро ​​нашей платформы Machine Learning Operations, а Kubeflow — это система, которую мы часто развертываем для наших клиентов. Поэтому мы решили автоматизировать создание пайплайна Kubeflow из существующего пайплайна Kedro, чтобы его можно было планировать с помощью Kubeflow Pipelines (он же KFP) и запускать в кластере Kubernetes. К счастью, создатели Kedro немного помогли нам, проверив концепцию этой интеграции и предоставив интересные идеи.

Результат нашей работы доступен на GitHub в виде плагина kedro-kubeflow. Вы устанавливаете его в свой существующий проект Kedro, и вскоре вы можете:

  • компилировать узлы Kedro как шаги KFP и отражать зависимости,
  • загрузить скомпилированный пайплайн KFP на сервер,
  • запустить выполнение с помощью CLI или включить расписание, когда вы наконец будете довольны работой конвейера,
  • беспрепятственно подключаться к MLflow и регистрировать все шаги в рамках одного запуска Mlflow (даже если они на самом деле являются отдельными процессами),
  • получить доступ к API Google AI Platform Pipelines с помощью IAM Proxy,
  • и более"!

Мы столкнулись с некоторыми проблемами — например, Kedro ожидает, что каталог `data/` будет местом, где узлы обмениваются данными, но в распределенной среде есть ограниченные возможности для поддержки общего хранилища между различными процессами. К счастью, с небольшим количеством взлома, мы сделали это!

Платформа GetInData MLOps: подключаемый модуль Kubeflow

Использование воздушного потока? Знакомьтесь: кедро-airflow-k8s

Некоторые из наших клиентов стараются избегать Kubeflow, так как система довольно сложна в установке и обслуживании. К счастью, Airflow может удовлетворить те же потребности с развертыванием конвейера Kedro. Существует официальный плагин kedro-airflow, но он не поддерживает работу в контейнерах Docker внутри кластера Kubernetes, что является нашим предпочтительным и наиболее универсальным методом.

Поэтому, основываясь на опыте разработки kedro-kubeflow, мы создали еще один плагин, который назвали kedro-airflow-k8s. Он имеет те же возможности и даже тот же синтаксис CLI, что и его старший брат, но компилирует конвейеры Kedro в DAG Airflow и развертывает его, копируя файл в общую корзину, которую Airflow использует для синхронизации Dag Bag.

Попробуйте плагины и дайте нам знать ваши мысли!

Если вы используете Kubeflow, не стесняйтесь проверять quickstart и остальную документацию. Если вы используете Airflow, у нас также есть быстрый старт. Если вы решите их попробовать — ждем ваших отзывов! Плагины находятся в стадии бета-тестирования, но основной API (как вы называете его из интерфейса командной строки Kedro) теперь стабилен, так что не бойтесь интегрировать его в свои пайплайны CI/CD, как мы недавно сделали.

Если вы хотите узнать больше, посетите нашу Платформу машинного обучения и не стесняйтесь связаться с нами.

Автор блога: Mariusz Strzelecki — Data Engineer

Первоначально опубликовано на https://getindata.com.