NVIDIA GPU Operator поддерживает возможность настройки Multi-Instance GPU — механизма разделения одной физической GPU на несколько независимых изолированных экземпляров. Это полезно, если нужно запускать несколько приложений, каждое из которых требует лишь небольшую долю от общей мощности GPU.
Например, если ваша система оснащена одним GPU A100, вы можете создать до семи отдельных экземпляров GPU, каждый из которых сможет использоваться отдельным приложением независимо друг от друга.
Поверх Multi-Instance GPU можно использовать Time-Slicing GPU.
С помощью этого руководства вы сможете разделить GPU на независимые экземпляры с помощью Multi-Instance GPU стратегий Single и Mixed.
Вы будете использовать следующие сервисы:
Managed Kubernetes — сервис управления кластерами Kubernetes на вычислительных ресурсах облака.
NVIDIA GPU Operator — плагин для автоматизации управления программными компонентами NVIDIA, необходимыми для предоставления графического процессора GPU.
Шаги:
Если вы уже зарегистрированы, войдите под своей учетной записью.
В кластере создайте группу узлов с параметрами для GPU:
Графический процессор (GPU) — активно.
Модель GPU — H100 или A100.
GPU — 1.
Количество узлов — 1.
В личном кабинете перейдите в кластер, для которого создали группу узлов с GPU.
Перейдите в раздел Плагины и справа над списком установленных плагинов нажмите Добавить плагин.
Выберите NVIDIA GPU Operator.
Нажмите Установить.
Оставьте настройки плагина по умолчанию, если будете использовать Single-стратегию. Для Mixed-стратегии в разделе Расширенная конфигурация → YAML укажите параметры:
mig:strategy: mixed
Нажмите Установить.
Дождитесь, когда состояние плагина изменится на «Установлен».
На этом шаге рассмотрим пример настройки Multi-Instance GPU с помощью стратегий:
Single — позволяет разделить GPU на экземпляры с одинаковым количеством вычислительных ресурсов и памяти, что удобно для однотипных рабочих нагрузок.
Mixed — позволяет создавать экземпляры с разным количеством вычислительных ресурсов и памяти, обеспечивая большую гибкость и эффективное использование ресурсов GPU при выполнении различных типов задач.
Установите метку на рабочий узел:
kubectl label nodes <node-name> nvidia.com/mig.config=all-1g.10gb --overwrite
Где:
<node-name> — название рабочего узла.
all-1g.10gb — режим работы MIG, при котором:
GPU разбивается на одинаковые экземпляры;
каждый экземпляр получает одну полную вычислительную группу;
объем видеопамяти, выделяемой каждому экземпляру — 10Gb.
MIG Manager применяет метку mig.config.state к узлу и завершает работу всех GPU подов, готовясь к включению режима MIG и настройке GPU в соответствии с желаемой геометрией MIG.
Чтобы убедится, что MIG Manager завершил настройку выполните команду:
kubectl get node <node-name> -o=jsonpath='{.metadata.labels}' | jq .
Примерный результат:
"nvidia.com/gpu.count": "4","nvidia.com/gpu.present": "true","nvidia.com/gpu.product": "NVIDIA-A100-PCIE-40GB-MIG-1g.10gb","nvidia.com/gpu.slices.ci": "1","nvidia.com/gpu.slices.gi": "1","nvidia.com/mig.capable": "true","nvidia.com/mig.config": "all-1g.10gb","nvidia.com/mig.config.state": "success","nvidia.com/mig.strategy": "single"
Для "nvidia.com/gpu.count" значение зависит от модели графического процессора и может отличаться.
Чтобы убедиться, что конфигурация MIG применена, выполните nvidia-smi в контейнере драйвера:
kubectl exec -it -n gpu-operator ds/nvidia-driver-daemonset -- nvidia-smi -L
Примерный результат:
GPU 0: NVIDIA A100 40GB PCIE (UUID: GPU-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)MIG 1g.10gb Device 0: (UUID: MIG-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)MIG 1g.10gb Device 1: (UUID: MIG-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)MIG 1g.10gb Device 2: (UUID: MIG-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)MIG 1g.10gb Device 3: (UUID: MIG-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
Установите метку на рабочий узел:
kubectl label nodes <node-name> nvidia.com/mig.config=all-balanced --overwrite
Где:
<node-name> — название рабочего узла.
all-balanced — режим работы MIG, при котором система сама определяет оптимальное число экземпляров и распределение ресурсов, исходя из общей доступной памяти количества SM и частоты ядра.
MIG Manager применяет метку mig.config.state к узлу и завершает работу всех GPU подов, готовясь к включению режима MIG и настройке GPU в соответствии с желаемой геометрией MIG.
Чтобы убедится, что MIG Manager завершил настройку, выполните команду:
kubectl get node <node-name> -o=jsonpath='{.metadata.labels}' | jq .
Метка nvidia.com/mig.config.state должна быть в success.
Чтобы убедиться, что конфигурация MIG применена, выполните nvidia-smi в контейнере драйвера:
kubectl exec -it -n gpu-operator ds/nvidia-driver-daemonset -- nvidia-smi -L
Примерный результат:
GPU 0: NVIDIA A100 40GB PCIE (UUID: GPU-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)MIG 2g.20gb Device 0: (UUID: MIG-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)MIG 1g.10gb Device 1: (UUID: MIG-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)MIG 1g.10gb Device 2: (UUID: MIG-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)
Вы научились настраивать Multi-Instance GPU в режимах Single и Mixed.