GPU Operator#
GPU Operator - инструмент, предназначенный для автоматического развертывания и управления стеком программного обеспечения, необходимого для запуска GPU-ускоренных рабочих нагрузок в кластере.
GPU Operator использует фреймворк операторов в кластере для автоматизации управления всеми компонентами программного обеспечения NVIDIA, необходимыми для выделения GPU. Эти компоненты включают драйверы NVIDIA (для включения CUDA), плагин устройств DropApp для GPU и другие.
GPU Operator состоит из нескольких компонентов, управляемых через CRD ClusterPolicy:
Container Toolkit - интегрирует GPU с контейнерной средой выполнения (раздел
runtime).K8s-device-plugin - обнаруживает и выделяет GPU pod.
GPU Feature Discovery - помечает узлы метками на основе возможностей GPU.
DCGM Exporter - экспортирует метрики GPU в формате Prometheus.
MIG Partiton Editor - управляет конфигурацией MIG.
Основные функции:
Автоматическое развертывание GPU-стека - осуществляется с помощью одного манифеста (
ClusterPolicy), который автоматически устанавливает весь стек на совместимые узлы.Управление драйверами NVIDIA - выполняется автоматически через установку драйверов с помощью init-контейнеров или с использованием предустановленных драйверов в зависимости от конфигурации.
Интеграция с контейнерным
runtime- настраиваетcontainerdили CRI-O для использованияnvidia-container-runtime.Регистрация GPU в DropApp - осуществляется через K8s-device-plugin, который обеспечивает появление ресурса
nvidia.com/gpu.Мониторинг с помощью развертывания DCGM Exporter - экспортирует метрики GPU в Prometheus.
Обнаружение возможностей GPU - осуществляется через GPU Feature Discovery, который добавляет метки узлов, отражающие архитектуру GPU, поддержку MIG и NVLink, что позволяет использовать affinity узла.
Time-Sharing Scheduler - интеграция с MIG на A100/H100 и поддержка
time-slicing.
Установка GPU Operator#
Предварительные условия#
Все рабочие узлы или группы узлов, на которых запускаются рабочие нагрузки GPU в кластере, должны использовать одну и ту же версию операционной системы для работы с контейнером драйвера NVIDIA GPU.
Рабочие узлы или группы узлов, которые только обрабатывают CPU-нагрузки, могут использовать любую операционную систему, так как GPU Operator не выполняет конфигураций или управления узлами для нагрузки только на CPU.
Узлы должны быть настроены с использованием контейнерного средства, такого как CRI-O или
containerd.Если кластер использует Pod Security Admission (PSA) для ограничения поведения pod, пометьте пространство имен для оператора, чтобы установить политику принудительного применения в режим привилегированного доступа:
kubectl create ns gpu-operator kubectl label --overwrite ns gpu-operator pod-security.kubernetes.io/enforce=privilegedNode Feature Discovery (NFD) является зависимостью для GPU Operator на каждом узле. По умолчанию NFD-master и NFD-worker узлы автоматически развертываются оператором. Если NFD уже работает в кластере, необходимо отключить развертывание NFD при установке оператора.
Для определения, работает ли NFD в кластере, проверьте наличие метки
NFDна узлах:kubectl get nodes -o json | jq '.items[].metadata.labels | keys | any(startswith("feature.node.kubernetes.io"))'Если вывод команды -
true, значит, NFD уже работает в кластере.
Установка#
Установка GPU Operator с параметрами по умолчанию#
Установите GPU Operator с параметрами по умолчанию:
helm install --wait --generate-name \
-n gpu-operator --create-namespace \
nvidia/gpu-operator \
--version=<version>
Установка GPU Operator с указанием параметров#
Установите GPU Operator с указанием параметров:
helm install --wait --generate-name \
-n gpu-operator --create-namespace \
nvidia/gpu-operator \
--version=<version>
--set <option-name>=<option-value>