Kubernetes
Изучи, как Kubernetes автоматизирует развёртывание и масштабирование моделей ИИ. Научись оркестрировать Ultralytics YOLO26 в K8s для высокопроизводительного компьютерного зрения.
Kubernetes, часто называемый K8s, — это платформа с открытым исходным кодом, предназначенная для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями. Изначально разработанный Google, а теперь поддерживаемый Фондом облачных вычислений (CNCF), Kubernetes стал стандартом оркестрации программного обеспечения в облаке. В контексте искусственного интеллекта (AI) и машинного обучения (ML) он выступает важнейшим инфраструктурным уровнем, который позволяет инженерным командам управлять сложными рабочими процессами — от распределенного обучения до производственного инференса с высокой доступностью. Абстрагируя базовое аппаратное обеспечение, Kubernetes обеспечивает надежную и эффективную работу приложений независимо от того, размещены ли они локально или у общедоступных облачных провайдеров.
Ключевая архитектура и основные понятия#
В основе Kubernetes лежит кластерная архитектура, состоящая из набора рабочих машин, называемых узлами. На этих узлах выполняются рабочие нагрузки контейнеризации, а плоскость управления контролирует общее состояние кластера. Наименьшая развертываемая единица в Kubernetes — это «Pod», инкапсулирующий один или несколько контейнеров, совместно использующих ресурсы хранилища и сети. Эта абстракция особенно важна для приложений компьютерного зрения, поскольку позволяет разработчикам упаковывать зависимости — например, определенные библиотеки CUDA для графических процессоров (GPUs) — в согласованную среду. Крупные облачные сервисы, такие как сервис Amazon Elastic Kubernetes (EKS), сервис Azure Kubernetes (AKS) и механизм Google Kubernetes (GKE), предоставляют управляемые версии этой архитектуры, снижая нагрузку на команды по обработке и анализу данных.
Почему Kubernetes важен для AI#
Главная ценность Kubernetes в операциях машинного обучения (MLOps) заключается в его способности обрабатывать динамические рабочие нагрузки. Во время обучения моделям AI часто требуются огромные вычислительные мощности, а при развертывании — низкая задержка инференса.
- Масштабируемость: Kubernetes использует автомасштабирование для автоматической корректировки ресурсов. При внезапном всплеске трафика горизонтальный автомасштабировщик Pod может увеличить количество Pod инференса, чтобы поддерживать масштабируемость без ручного вмешательства.
- Оптимизация ресурсов: Эффективное распределение дорогостоящего оборудования имеет решающее значение. Kubernetes поддерживает совместное использование GPU и привязку к узлам, гарантируя, что модели глубокого обучения потребляют ресурсы только тогда, когда они требуются активным заданиям.
- Отказоустойчивое развертывание: Обеспечение высокой доступности во время развертывания модели крайне важно. Если узел выходит из строя, Kubernetes автоматически перезапускает затронутые Pod на исправных узлах, предотвращая простой критически важных API-сервисов.
Практические применения#
Kubernetes лежит в основе многих крупномасштабных реализаций AI в различных отраслях:
-
Управление движением в умном городе: Муниципалитет может развернуть модели Ultralytics YOLO26 для анализа видеопотоков с тысяч перекрестков. С помощью Kubernetes система может динамически увеличивать ресурсы в часы пик для обработки возросшей нагрузки обнаружения объектов и уменьшать их ночью для сокращения затрат. Такой подход лежит в основе современных систем управления движением.
-
Персонализация в электронной торговле: Интернет-магазины используют сложные рекомендательные системы, построенные на микросервисах. Один сервис может отвечать за генерацию кандидатов, а другой — за повторное ранжирование. Kubernetes оркестрирует эти независимые сервисы, позволяя командам обновлять нейронную сеть ранжирования отдельно, не нарушая весь процесс покупок, и обеспечивая непрерывную интеграцию.
Различия между Kubernetes и Docker#
Часто возникает путаница в отношении взаимосвязи между Kubernetes и Docker. Это не конкурирующие, а взаимодополняющие технологии. Docker — это инструмент для создания и запуска отдельных контейнеров (упаковки приложения), а Kubernetes — инструмент для управления набором этих контейнеров на нескольких машинах. Ты используешь Docker, чтобы собрать веса модели и код в образ, а затем Kubernetes, чтобы определить, где, когда и сколько копий этого образа будут работать в продакшене.
Пример: скрипт инференса для контейнеризации#
Чтобы развернуть модель в Kubernetes, разработчики обычно начинают со скрипта Python, который служит точкой входа в контейнер. В следующем коде показана простая задача инференса с использованием модели Ultralytics YOLO26. Этот скрипт будет выполняться внутри Pod, обрабатывая входящие запросы.
from ultralytics import YOLO
# Load the lightweight YOLO26 model
model = YOLO("yolo26n.pt")
# Perform inference on an image source
# In a K8s pod, this would likely process API payloads
results = model("https://ultralytics.com/images/bus.jpg")
# Output the detection count for logging
print(f"Detected {len(results[0].boxes)} objects in the frame.")Инструменты и экосистема#
Экосистема Kubernetes включает огромное количество инструментов, предназначенных для работы с данными. Kubeflow — популярный набор инструментов, призванный сделать развертывание рабочих процессов ML в Kubernetes простым, переносимым и масштабируемым. Для мониторинга состояния кластера и метрик приложений инженеры часто используют Prometheus. Чтобы еще больше упростить обучение и развертывание моделей в таких средах, платформа Ultralytics предоставляет единый интерфейс, автоматизирующий управление наборами данных и обучение моделей, благодаря чему пользователи могут экспортировать модели, готовые для кластеров облачных вычислений. Кроме того, менеджеры пакетов, такие как Helm, помогают управлять сложными приложениями Kubernetes с помощью повторно используемых чартов.









