Работа с AI-ML-нагрузками в Kubernetes: плагин Headlamp для Kubeflow. headlamp.. headlamp. katib.. headlamp. katib. kubeflow.. headlamp. katib. kubeflow. Kubernetes.. headlamp. katib. kubeflow. Kubernetes. ml pipelines.. headlamp. katib. kubeflow. Kubernetes. ml pipelines. Notebooks.. headlamp. katib. kubeflow. Kubernetes. ml pipelines. Notebooks. spark.. headlamp. katib. kubeflow. Kubernetes. ml pipelines. Notebooks. spark. training jobs.. headlamp. katib. kubeflow. Kubernetes. ml pipelines. Notebooks. spark. training jobs. vk cloud.
Работа с AI-ML-нагрузками в Kubernetes: плагин Headlamp для Kubeflow - 1

Kubernetes незаметно стал платформой по умолчанию для ИИ и машинного обучения. Запускаете ли вы серверы notebook-ов для дата-сайентистов, планируете распределённые задачи обучения, настраиваете гиперпараметры или оркестрируете многоэтапные ML-пайплайны. Эти нагрузки всё чаще оказываются в кластере Kubernetes. Kubeflow — один из самых популярных способов собрать этот стек, причём Kubernetes-нативным путём: каждая возможность описана как CRD (Custom Resource Definition, описание пользовательского типа ресурса Kubernetes).

Такая архитектура подарок операторам кластера: ML-нагрузки можно наблюдать и управлять ими теми же примитивами, что и всем остальным в кластере. Но на практике специализированные ML-дашборды, которые поставляются с этими платформами, скрывают лежащий под ними слой Kubernetes. Когда notebook застревает или задача обучения падает, оператор часто вынужден откатываться к kubectl, чтобы выяснить, что на самом деле произошло на уровне Pod.

Команда VK Cloud перевела статью о плагине Headlamp Kubeflow, который закрывает этот разрыв и выводит пользовательские ресурсы Kubeflow прямо внутри универсального Kubernetes UI. Это проработанный пример паттерна, которому может следовать любая насыщенная CRD платформа: встречать операторов там, где они уже работают, и показывать им истину на уровне кластера.

Сам Headlamp это расширяемый веб-UI для Kubernetes, поддерживаемый в рамках Kubernetes SIG UI и лицензированный под Apache 2.0. Он работает как десктопное приложение или внутри кластера, а через систему плагинов кто угодно может добавить полноценные представления для пользовательских ресурсов.

Почему операторам нужно другое представление

Специализированные ML-дашборды помогают дата-сайентистам отправлять эксперименты, пайплайны и notebook. Операторы кластера и SRE устраняют неполадки в лежащих под ними ресурсах Kubernetes и задают другие вопросы:

  • Почему notebook завис? Это ImagePullBackOff, OOMKilled или Pod, ожидающий PersistentVolumeClaim?

  • Какие ресурсы Run недавно упали в разных пространствах имён (namespace)?

  • Какой набор параметров Katib Experiment сообщает как оптимальный?

  • Ссылаются ли ресурсы TrainJob на ожидаемые ресурсы TrainingRuntime?

  • Какие batch-нагрузки выполняются и в каком состоянии их сообщает Kubernetes?

Плагин Headlamp Kubeflow помогает ответить на эти вопросы, читая напрямую из API-сервера Kubernetes. Он показывает условия Pod, причины сбоев Kubernetes и ресурсы из разных namespace, не требуя промежуточного ML-сервиса или базы данных.

Что покрывает плагин

Kubeflow модульный, и команды часто устанавливают только нужные им компоненты. Плагин обнаруживает API-группы Kubeflow в кластере и отображает только соответствующие разделы.

Плагин поддерживает следующие семейства компонентов и API-ресурсы:

Компонент

Назначение

API-ресурсы

Notebooks

Предоставляет среды разработки, например Jupyter, VS Code и RStudio

Notebook, Profile, PodDefault

Pipelines

Определяет и отслеживает пайплайны, версии, эксперименты, запуски и расписания

Pipeline, PipelineVersion, Run, RecurringRun, Experiment

Katib

Автоматизирует настройку гиперпараметров и поиск нейросетевой архитектуры

Experiment, Trial, Suggestion

Training

Запускает распределённые нагрузки обучения, например задачи PyTorch и TensorFlow

TrainJob, TrainingRuntime, ClusterTrainingRuntime

Spark

Запускает крупномасштабную обработку данных с Apache Spark

SparkApplication, ScheduledSparkApplication

Что вы можете увидеть

Разбор Pod-ов notebook-серверов

Представление деталей Notebook показывает условия Pod и их поля reason и message. Оно также показывает запросы и лимиты CPU, memory и GPU; монтирования томов и их базовые типы: PersistentVolumeClaim, ConfigMap, Secret или emptyDir; переменные окружения со ссылками на объекты Secret или ConfigMap; sidecar-контейнеры; tolerations (допуски) узлов. Это представление консолидирует информацию, которая иначе потребовала бы нескольких команд kubectl describe.

Разбор настройки гиперпараметров

Представления Katib показывают алгоритм настройки, пространство поиска, каждый Trial с его текущим статусом и текущий лучший Trial с его значениями метрик и назначениями параметров. Они также показывают конфигурацию раннего останова и число ресурсов Trial, остановленных досрочно, так вы следите за поиском, не покидая UI кластера.

Разбор состояния пайплайна без базы данных бэкенда

Представления Pipelines читают ресурсы API Kubernetes напрямую и не запрашивают API-сервис Kubeflow Pipelines или базу данных бэкенда. Сохранённое состояние пайплайна можно смотреть, даже когда этот сервис недоступен. Представление деталей Pipeline сравнивает спецификации последней и предыдущей PipelineVersion в параллельном YAML-диффе. Представления Run показывают состояние и длительность, представления RecurringRun показывают расписания в человекочитаемом виде, а представление артефактов агрегирует значения pipelineRoot из недавних ресурсов Run.

Карта ML-ресурсов

Плагин регистрирует источник карты Headlamp, который рендерит ресурсы Notebook, Profile, PodDefault, Experiment, Pipeline, SparkApplication и TrainJob как узлы графа. Он рисует рёбра между поддерживаемыми ресурсами на основе .metadata.ownerReferences. Headlamp также показывает встроенные сводки для этих типов ресурсов при наведении курсора.

Попробуйте

headlamp-k8s plugins объясняет установку и настройку локального кластера, включая лёгкий путь только с CRD для оценки. Плагин обнаруживает установленные API-группы, поэтому его можно использовать с существующей модульной установкой Kubeflow или создать оценочный кластер только с CRD и примерами ресурсов.

Примените паттерн к другим платформам

Kubeflow иллюстрирует более широкий паттерн. Платформы часто моделируют доменно-специфичные рабочие процессы с помощью пользовательских ресурсов. Их дашборды сфокусированы на этих процессах, тогда как операторам Kubernetes нужно ещё и состояние лежащих под ними API-ресурсов и Pod-ов. Плагин на основе CRD в универсальном Kubernetes UI выводит это состояние, не заставляя операторов переключаться между несвязанными инструментами.

Плагин использует лицензию Apache 2.0 и разрабатывается в рамках Kubernetes SIG UI. Чтобы сообщить о проблеме или внести улучшение, используйте issue tracker или pull requests репозитория плагинов Headlamp.

Автор: levashove

Источник