← КейсыML-платформа
ML-платформа по требованию на ClearML
Провайдер продаёт ML-платформу как сервис: у каждого клиента своя частная инсталляция в любом регионе, есть бесплатный тест на две недели. Перевели доставку платформы с ClickOps на IaC и автотесты.
Цифры
Было
- ClickOps: Managed Kubernetes, файловое хранилище, S3 и реестр контейнеров прокликивали руками в панели.
- Около 19 Helm-чартов ставили в строгом порядке и вручную протаскивали в них креды и адреса.
- Одна ручная сборка инфраструктуры занимала около двух дней, весь деплой платформы 8 часов. Серверы-снежинки и знания в голове одного человека.
Стало
- Деплой платформы клиенту за 24 минуты, в 20 раз быстрее: 30 секунд на проверку кода, 17 минут на деплой, 6 минут на автотесты, 1 минута на удаление.
- Конфигурация клиента лежит в одном файле, под каждую ветку поднимается своя изолированная платформа.
- Тот же пайплайн потом доставлял клиентам inference-платформу, около 20 минут на деплой.
Что сделали
Платформа из open source на Managed Kubernetes: ClearML для экспериментов и очередей, JupyterHub, Gitea, Keycloak, Istio, prometheus-stack, GPU-оператор и KServe для сервинга.
Три итерации IaC. Даунстримы GitLab, потом монолитная Terraform-джоба, потом отдельные джобы со своим стейтом на каждый компонент и terraform_remote_state. Модули версионируются в GitLab Registry.
Helm-чарты ставит Terraform. Порядок задаётся через depends_on, переменные из S3, DNS и остальной инфраструктуры сразу попадают в values.
Автотесты перед выдачей клиенту. pytest проверяет обучение на GPU и CPU, загрузку артефактов в S3 и пуш образов в реестр, Selenium проверяет веб-интерфейсы. Без зелёных тестов изменения не мержатся.
Ветка = своя платформа. GitLab environments поднимают изолированную инсталляцию под каждую ветку и удаляют её после мержа. Серверы-фениксы вместо серверов-снежинок.
Шеринг GPU внутри платформы. Автоматическая разметка MIG и TimeSlicing: несколько Jupyter-инстансов на одной карте и очереди экспериментов ClearML.
Стек
ClearMLJupyterHubKServeGiteaKeycloakIstioTraefikprometheus-stackNVIDIA GPU OperatorMIGTimeSlicingManaged KubernetesS3TerraformGitLab CIpytestSelenium
Моя роль
DevOps/MLOps-инженер в отделе Data/ML-продуктов. Автоматизировал доставку платформы (IaC, CI/CD, автотесты) и отвечал за GPU: GPU-оператор и шеринг.