Nova AI. Архитектура
Архитектура Nova AI построена на модульном принципе и разделена на два ключевых слоя:
-
Инфраструктурный;
-
Сервисный.
Такой подход позволяет гибко адаптировать платформу под конкретные задачи — использовать ее как для высокопроизводительных ML-нагрузок с поддержкой GPU и высокоскоростных сетевых протоколов, так и для разработки и экспериментов в более легких сценариях (например, CPU-only).
1. Инфраструктурный слой (MLInfrastructure)
Отвечает за подготовку и управление аппаратными ресурсами кластера Kubernetes. В нем сосредоточены компоненты, обеспечивающие работу с графическими ускорителями NVIDIA, улучшение сетевой связанности и автоматическое определение возможностей вычислительных узлов, в его состав входят:
-
Node Feature Discovery (NFD) - это программное обеспечение, предназначенное для автоматического обнаружения аппаратных и программных характеристик каждого узла в кластере. NFD собирает информацию о доступных функциях узлов и представляет ее в виде меток, расширенных ресурсов, аннотаций и taint-данных, что позволяет улучшить планирование и распределение рабочих нагрузок с учетом возможностей платформы.
-
NVIDIA GPU Operator - это специализированный Kubernetes-оператор, который автоматизирует развертывание, управление и конфигурацию всех необходимых программных компонентов NVIDIA для эффективного использования GPU в кластере Kubernetes.
2. Сервисный слой (MLCluster)
Включает набор ML’Ops-сервисов, которые реализуют весь жизненный цикл работы с моделями машинного обучения: от сбора и подготовки данных до развертывания и предоставления моделей через API.
В его состав входят:
-
MinIO - объектное хранилище для данных, моделей и артефактов. Используется для хранения результатов обучения, датасетов и файлов экспериментов.
-
JupyterHub - среда для интерактивной разработки. Обеспечивает запуск Jupyter-ноутбуков в кластере.
-
PostgreSQL - реляционная база данных для хранения метаданных ML-сервисов.
-
MLflow Tracking - система управления экспериментами, отслеживания параметров, метрик и артефактов. Обеспечивает воспроизводимость экспериментов.
-
Apache Airflow - оркестрация ML-пайплайнов и автоматизация рабочих процессов. Используется для планирования и управления задачами обучения и инференса.
-
KubeRay - распределенная среда для обучения моделей и выполнения вычислений. Позволяет масштабировать ML-задачи на весь кластер Kubernetes.
-
KServe - сервис развертывания и эксплуатации моделей. Обеспечивает доступ к моделям, поддержку A/B-тестирования и версионирование моделей.
Модули MLInfrastructure и MLCluster могут устанавливаться независимо друг от друга, между ними нет жестких зависимостей:
-
MLCluster можно развернуть в кластере без GPU, например для CPU-only задач или разработки;
-
MLInfrastructure можно использовать отдельно, если требуется только управление аппаратными ресурсами и их оптимизация для высоконагруженных приложений.
3. Архитектура решения в разрезе процессов
Nova AI обеспечивает полный цикл работы с ML-моделями — от подготовки данных до инференса модели. Платформа объединяет современные инструменты и автоматизирует каждый этап, сокращая время на вывод модели в инференс.
Целевой процесс MLOps выглядит следующим образом:
За создание и оркестрацию пайплайнов задач обучения в платформе отвечает компонент Apache Airflow. Пользователь создает DAG (пайплайн задач) для последовательной обработки данных. Этот DAG определяет последовательность задач, которые нужно выполнить. Для каждого DAG можно указать расписание выполнения. Инженер МО проверяет статус выполнения задач через веб-интерфейс, смотрит журналы выполнения, перезапускает или приостанавливает выполнение при необходимости.
В Nova AI для исследований данных и проверки гипотез используются привычные многим Jupyter Notebooks. Для обеспечения работы множества пользователей в единой среде в платформу внедрен компонент JupyterHub. Он позволяет аналитику данных или инженеру машинного обучения пройти аутентификацию, получить доступ к профилям ресурсов, подготовленным администратором, выбрать один из них, создать себе рабочее окружение (JupyterLab) и начать работу. В платформе создается Pod с его JupyterLab.
Результаты работы пользователя в JupyterLab направляются в Git. При настроенном DAG в Airflow система сама возьмет актуальный код из Git и встроит ML-модель в актуальный пайплайн.
Для управления жизненным циклом моделей машинного обучения в Nova AI используется компонент MLflow. MLflow обеспечивает логирование экспериментов, управление моделями, хранение артефактов и развертывание моделей в разные среды. Для хранения артефактов модели в MLflow используется MinIO, для хранения метаданных в платформу встроен PostgreSQL.
Интегрировать MLflow можно как в рамках проведения исследований в JupyterLab, так и в рамках пайплайна в Airflow для аргументации выведения определенных экспериментов в продакшен.
Для обеспечения распределенных вычислений в задачах обучения в платформу внедрен компонент KubeRay. Используя фреймворк Ray для обучения и инференса моделей машинного обучения в связке с возможностями KubeRay, можно реализовать распределенное исполнение множества задач обучения с автоматическим масштабированием.
Для обеспечения онлайн-эксплуатации (инференса) real-time алгоритмов ML или больших языковых моделей в платформе используется компонент Kserve. Этот компонент является одним из лучших в своем классе для обеспечения инференса с использованием GPU-кластера и разных фреймворков (инференс-бекендов), таких как Ray Serve, Triton, vLLM и др. После деплоя каждая модель становится самостоятельным сервисом с REST- или gRPC-интерфейсом. При интеграции с KubeRay возможно реализовывать распределенный инференс множества больших языковых моделей в одном кластере с автоматическим масштабированием каждой в зависимости от количества поступающих запросов к каждой модели. Kserve также возможно интегрировать с DAG в Airflow.
Для обеспечения сбора метрик с различных компонентов используется Prometheus. Он «из коробки» собирает информацию об утилизации GPU. Также возможно настроить сбор метрик из Airflow, MLflow и Kserve. Компонент Grafana используется для визуализации этих метрик. Компонент AlertManager позволяет настраивать алерты по определенным значениям.