Kubernetes для рабочих нагрузок машинного обучения
Kubernetes — это система с открытым исходным кодом, которая автоматически планирует, масштабирует и перезапускает контейнерные программы на кластере машин.
Обзор
For machine learning, it lets teams pack GPU-hungry training jobs and latency-sensitive model servers onto shared hardware without babysitting individual servers.
Глубокое погружение
Первоначально созданный в Google для запуска веб-сервисов, Kubernetes рассматривает ваш кластер как один большой пул ЦП, памяти и графических процессоров, а затем решает, на какой машине работает каждый контейнер. Команды машинного обучения полагаются на него, потому что рабочие нагрузки нестабильны и дороги: для обучения может потребоваться восемь графических процессоров на шесть часов, а затем ничего. Kubernetes планирует этот модуль на узле со свободными графическими процессорами, а по завершении задания освобождает оборудование. Он также поддерживает работу серверов вывода, перезапуская вышедшие из строя контейнеры и распределяя реплики по машинам для обеспечения устойчивости. Встроенные инструменты, такие как Kubeflow, Ray и KServe, добавляют элементы, специфичные для машинного обучения, такие как операторы распределенного обучения, настройка гиперпараметров и конечные точки модели автомасштабирования, поэтому ученые, работающие с данными, работают с абстракциями более высокого уровня, а не с необработанным YAML.
Техническая информация
Kubernetes назначает графические процессоры через плагины устройств, которые рекламируют такие ресурсы, как nvidia.com/gpu, которые планировщик сопоставляет с запросами модуля. Помехи и допуски не позволяют дешевым задачам ЦП задействовать дорогостоящие узлы графического процессора, а селекторы узлов и правила сродства привязывают обучение к конкретному оборудованию. Для обучения с использованием нескольких графических процессоров операторы создают группу модулей, которые обнаруживают друг друга и запускают такие платформы, как PyTorch DDP или Horovod, обмениваясь градиентами по сети кластера с использованием NCCL.
Стратегическое воздействие
Стоимость и бюджет
Архитектурные решения влияют на производительность и эксплуатационные расходы на протяжении многих лет.
Более четкие решения
Техническое образование помогает командам выбрать правильный стек, а не только самый новый.
Контроль качества
Лучший инженерный выбор снижает вероятность возникновения проблем с надежностью на производстве.
Будущее Kubernetes для рабочих нагрузок машинного обучения
Ожидайте более тесной интеграции машинного обучения: групповое планирование, которое запускает все модули распределенного обучения одновременно или не запускает их вообще, дробное и разделенное по времени совместное использование графических процессоров, чтобы несколько легких задач использовали одну карту, а также размещение с учетом топологии, которое учитывает быстрые межсоединения NVLink. Бессерверный логический вывод в Kubernetes, масштабирующий конечные точки до нуля между запросами, становится все более зрелым. По мере разрастания моделей планировщики все чаще координируют свои действия между несколькими кластерами и облаками, а системы справедливого распределения на основе очередей, такие как Kueue и Volcano, становятся стандартом для управления ограниченной мощностью графического процессора.
Реальная реализация
Исследовательская лаборатория использует оператор обучения Kubeflow для запуска задания распределенного обучения PyTorch с 32 графическими процессорами на четырех узлах, а затем автоматически освобождает графические процессоры при конвергенции.
Компания электронной коммерции использует свою рекомендательную модель с помощью KServe, который автоматически увеличивает масштаб реплик во время флэш-распродажи и снижает их производительность в одночасье.
Банк выполняет ночные задания пакетной оценки как Kubernetes CronJobs, помещая их в очередь на свободных узлах ЦП, чтобы они не конкурировали с дневным потоком обслуживания.
Стартап использует Ray в Kubernetes для параллельной проверки гиперпараметров, запуская на спотовых экземплярах десятки недолговечных пробных модулей, чтобы сократить расходы.
Риски и ограничения
Оптимизация одного теста может скрыть более широкие недостатки системы.
Затраты на инфраструктуру и техническое обслуживание часто недооцениваются.
Пробелы в безопасности и наблюдаемости могут увеличиваться по мере усложнения систем.
Дорожная карта реализации
Определите целевые показатели задержки, качества и стоимости перед внедрением.
Тестирование при реалистичной нагрузке и условиях данных.
Мониторинг прибора на наличие ошибок, дрейфа и влияния пользователя.
Перед масштабированием подготовьте пути отката и реагирования на инциденты.
Продолжайте исследовать
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Kubernetes for ML Workloads quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Следующее руководство
A/B-тестирование моделей машинного обучения
Часто задаваемые вопросы
What is Kubernetes for ML Workloads?
Kubernetes — это система с открытым исходным кодом, которая автоматически планирует, масштабирует и перезапускает контейнерные программы на кластере машин. Что касается машинного обучения, это позволяет командам размещать обучающие задания, требующие большого количества графических процессоров, и серверы моделей, чувствительные к задержкам, на общее оборудование, не присматривая за отдельными серверами.
Какова основная задача планировщика Kubernetes для рабочих нагрузок машинного обучения?
Планировщик сопоставляет запросы ресурсов модуля (ЦП, память, графические процессоры) с доступными узлами и размещает модуль там, где он подходит. Это не касается кода модели или данных.
Как Kubernetes обычно делает графические процессоры доступными для модуля?
Плагины устройств предоставляют графические процессоры как планируемый ресурс (например, nvidia.com/gpu), позволяя модулям запрашивать их, а планировщик отслеживает доступность.
Для чего обычно используются ограничения и допуски в кластере ML?
Порча отталкивает стручки от узла; туда могут приземлиться только стручки с соответствующим допуском. Это резервирует дефицитные узлы графических процессоров для задач, которым действительно нужны графические процессоры.
Какой инструмент добавляет специфичные для машинного обучения возможности, например распределенное обучение операторов, поверх Kubernetes?
Kubeflow накладывает рабочие процессы машинного обучения на Kubernetes, включая обучение операторов, конвейеры и настройку, поэтому команды избегают рукописного написания низкоуровневой конфигурации кластера.
Почему Kubernetes хорошо подходит для пакетных рабочих нагрузок машинного обучения?
Обучение носит резкий характер: на короткое время много графических процессоров, а затем нет. Kubernetes размещает задание, когда ресурсы свободны, и освобождает их по завершении, улучшая использование.