Глоссарий

Kubernetes

Узнай, как Kubernetes оптимизирует рабочие нагрузки AI/ML благодаря масштабируемому развертыванию моделей, распределенному обучению и эффективному управлению ресурсами.

Обучай модели YOLO просто
с помощью Ultralytics HUB.

Узнай больше

Kubernetes, часто сокращаемая до K8s, - это платформа с открытым исходным кодом, предназначенная для автоматизации развертывания, масштабирования и эксплуатации контейнеров приложений. Изначально Kubernetes была разработана компанией Google, сейчас ее поддерживает Cloud Native Computing Foundation. По сути, она выступает в роли оркестратора для контейнеризированных приложений, управляя ими на кластере компьютеров так, чтобы они работали эффективно и надежно. Для пользователей, знакомых с машинным обучением, Kubernetes - это дирижер оркестра, обеспечивающий слаженную и масштабную работу всех различных инструментов (компонентов твоих AI/ML-приложений).

Что такое Kubernetes?

По своей сути Kubernetes - это система для управления контейнерными приложениями. Контейнеры упаковывают программный код и его зависимости, чтобы приложения могли единообразно и стабильно работать в различных вычислительных средах. Docker - популярная технология контейнеризации, которую часто используют вместе с Kubernetes. Kubernetes автоматизирует многие из ручных процессов, связанных с развертыванием, управлением и масштабированием этих контейнерных приложений. Он группирует контейнеры, из которых состоит приложение, в логические единицы для удобства управления и обнаружения. Эти единицы, называемые капсулами, разворачиваются на кластере машин. Затем Kubernetes решает такие задачи, как:

  • Обнаружение сервисов и балансировка нагрузки: Kubernetes может открыть контейнер, используя DNS-имя или собственный IP-адрес. Если трафик на контейнер высок, Kubernetes может балансировать нагрузку и распределять сетевой трафик, чтобы развертывание было стабильным.
  • Оркестровка хранилищ: Kubernetes позволяет автоматически монтировать систему хранения данных по твоему выбору, например, локальное хранилище, публичные облачные провайдеры и многое другое.
  • Автоматизированные сворачивания и откаты: Ты можешь описать желаемое состояние для своих развернутых контейнеров с помощью Kubernetes, и она будет менять фактическое состояние на желаемое с контролируемой скоростью. Например, Kubernetes может автоматизировать создание новых контейнеров для твоего развертывания, удалить существующие контейнеры и перенять все их ресурсы в новый контейнер.
  • Автоматическая упаковка контейнеров: Kubernetes позволяет тебе указать, сколько CPU и RAM (памяти) нужно каждому контейнеру. Kubernetes может уместить контейнеры на твоих узлах, чтобы максимально эффективно использовать твои ресурсы.
  • Самовосстановление: Kubernetes перезапускает контейнеры, которые выходят из строя, заменяет и перепланирует контейнеры, когда узлы умирают, убивает контейнеры, которые не реагируют на заданную тобой проверку здоровья, и не рекламирует их клиентам, пока они не будут готовы к обслуживанию.
  • Управление секретами и конфигурациями: Kubernetes позволяет хранить и управлять конфиденциальной информацией, например паролями, OAuth-токенами и SSH-ключами. Ты можешь разворачивать и обновлять секреты и конфигурацию приложений, не перестраивая образы контейнеров и не раскрывая секреты в конфигурации стека.

Почему Kubernetes актуальна для AI и ML?

Kubernetes особенно актуален в области ИИ и машинного обучения из-за ресурсоемкости и масштабируемости рабочих нагрузок ML. Обучение больших моделей, особенно Ultralytics YOLO моделей для обнаружения объектов, часто требует распределенных вычислений на нескольких GPU или TPU. Kubernetes предоставляет инфраструктуру для эффективного управления этими распределенными ресурсами.

Кроме того, развертывание AI/ML-моделей для выводов в масштабе требует надежной и масштабируемой инфраструктуры. Kubernetes упрощает развертывание моделей, позволяя пользователям контейнеризировать свои модели и обслуживать их через масштабируемые API. Это очень важно для реальных приложений, требующих низких задержек в выводах и высокой пропускной способности.

Применение Kubernetes в AI/ML

  1. Масштабируемая модель обслуживания: Рассмотрим приложение для обнаружения объектов в реальном времени, например, систему управления дорожным движением в умном городе, использующую Ultralytics YOLOv8. По мере роста города увеличивается потребность в обработке видеопотоков с большего количества камер. Kubernetes позволяет тебе динамически масштабировать инфраструктуру обслуживания моделей. Развернув свою модель YOLOv8 как контейнерный сервис на Kubernetes, ты сможешь легко увеличивать или уменьшать количество экземпляров модели в зависимости от входящего трафика, обеспечивая стабильную производительность даже при высокой нагрузке. Такая масштабируемость очень важна для поддержания низких задержек и высокой доступности в приложениях ИИ реального времени.

  2. Распределенное обучение: Обучение современных моделей ИИ часто требует огромных наборов данных и значительных вычислительных мощностей. Распределенное обучение на кластере машин становится необходимым для сокращения времени обучения. Kubernetes может организовать распределенное обучение, управляя распределением рабочей нагрузки по нескольким узлам, отслеживая прогресс и справляясь с отказами. Например, ты можешь использовать Kubernetes для управления распределенным обучением большой модели классификации изображений с использованием такого набора данных, как ImageNet. Kubernetes обеспечивает правильную настройку каждого узла обучения, эффективное распределение данных и устойчивость всего процесса обучения к сбоям узлов.

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

Читать полностью