MIG Partiton Editor#
MIG Partiton Editor (MIG Parted) - это инструмент, входящий в состав GPU Operator, предназначенный для динамического управления конфигурацией Multi-Instance GPU (MIG) на устройствах NVIDIA, начиная с архитектуры Ampere.
Функция MIG позволяет графическим процессорам делиться на отдельные экземпляры (до семи) для приложений CUDA. Это предоставляет различным пользователям доступ к выделенным ресурсам GPU для оптимального использования. Для многоарендных облачных сервисов гарантирует, что действия одного пользователя не влияют на работу других, обеспечивая улучшенную изоляцию.
MIG Parted автоматизирует создание/удаление/переконфигурацию MIG-профилей (например, 1g.5gb, 3g.20gb, 7g.80gb) в ответ на изменения в кластере без перезагрузки узла или GPU.
Примечание
По умолчанию устройство MIG состоит из одного экземпляра GPU и одного экземпляра вычислений и записывается, например, так: 3g.20gb. Каждый общий экземпляр (GI) может быть дополнительно разделен на несколько экземпляров вычислений (CI) в зависимости от требований пользователей и их рабочих нагрузок.
Когда создается только один экземпляр вычислений, который использует всю вычислительную мощность общего экземпляра, размеры экземпляра вычислений отображаются в названии устройства.
Имя устройства 2c.3g.20gb означает следующее:
2c— количество экземпляров вычислений (CI);3g— количество вычислительных срезов (GI);20gb— общая память для данного экземпляра.
Эта запись указывает на то, что общий экземпляр делится на два экземпляра вычислений, каждый из которых может использовать доступные ресурсы.
Имя устройства 4g.16gb означает следующее:
4g— количество вычислительных срезов (GI);16gb— общая память для данного экземпляра.
Запись без указания количества экземпляров вычислений указывает на то, что CI = 1.
MIG Parted работает совместно с GPU Feature Discovery и K8s-device-plugin, обеспечивая полный жизненный цикл MIG-устройств в DropApp.
Основные функции:
При старте узла MIG Parted считывает желаемую конфигурацию MIG и применяет ее к GPU, выполняя автоматическую настройку.
Управляет MIG декларативно через метки или аннотации узла, обеспечивая гибкость в настройке.
При изменении аннотации MIG Parted автоматически:
корректно выключает текущие MIG-устройства;
применяет новую конфигурацию;
уведомляет K8s-device-plugin об изменениях.
Осуществляет управление через CRD
ClusterPolicy, обеспечивая бесшовную интеграцию с GPU Operator.Проверяет, что запрашиваемый MIG-профиль поддерживается данным GPU, обеспечивая корректность настройки.
Включение режима MIG#
По умолчанию режим MIG не активирован на GPU. Например, при выполнении команды nvidia-smi отображается, что режим MIG отключен:
nvidia-smi -i 0
Пример вывода:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 A100-SXM4-40GB Off | <GPU ID> Off | 0 |
| N/A 29C P0 62W / 400W | 0MiB / 40537MiB | 6% Default |
| | | Disabled |
+-------------------------------+----------------------+----------------------+
Включите режим MIG, используя команду:
nvidia-smi -i <GPU ID> -mig 1
Пример вывода:
Enabled MIG Mode for GPU <GPU ID>
All done.
Конфигурация MIG Parted#
MIG Parted позволяет декларативно определять набор возможных конфигураций MIG, которые необходимо применить ко всем графическим процессорам на узле. В среде выполнения необходимо указать на одну из этих конфигураций для ее применении.
Один и тот же файл конфигурации может быть распространен на все узлы кластера, а флаг среды выполнения (или переменная среды) может использоваться для определения того, какую из этих конфигураций фактически применять к узлу в любой момент времени.
Пример конфигурационного файла mig-parted.yaml
version: v1
mig-configs:
all-disabled:
- devices: all
mig-enabled: false
all-enabled:
- devices: all
mig-enabled: true
mig-devices: {}
all-1g.5gb:
- devices: all
mig-enabled: true
mig-devices:
"1g.5gb": 7
all-2g.10gb:
- devices: all
mig-enabled: true
mig-devices:
"2g.10gb": 3
all-3g.20gb:
- devices: all
mig-enabled: true
mig-devices:
"3g.20gb": 2
all-balanced:
- devices: all
mig-enabled: true
mig-devices:
"1g.5gb": 2
"2g.10gb": 1
"3g.20gb": 1
custom-config:
- devices: [0,1,2,3]
mig-enabled: false
- devices: [4]
mig-enabled: true
mig-devices:
"1g.5gb": 7
- devices: [5]
mig-enabled: true
mig-devices:
"2g.10gb": 3
- devices: [6]
mig-enabled: true
mig-devices:
"3g.20gb": 2
- devices: [7]
mig-enabled: true
mig-devices:
"1g.5gb": 2
"2g.10gb": 1
"3g.20gb": 1
Каждый из блоков в разделе mig-configs файла mig-parted.yaml определяется пользователем, и для ссылок на них используются пользовательские метки. Например:
all-disabledотключает MIG для всех графических процессоров на узле.all-enabledвключает MIG для всех графических процессоров на узле.all-1g.5gbразбивает все графические процессоры на узле на устройства емкостью1g.5gb.all-balancedраспределяет ресурсы графических процессоров на узле с балансировкой производительности и емкости для выполнения задач с разной нагрузкой.custom-configопределяет пользовательскую конфигурацию, которая отключает MIG на первых 4 графических процессорах на узле и применяет сочетание устройств MIG к остальным.
С помощью этого инструмента можно выполнить следующие команды для применения каждой из этих конфигураций по очереди:
nvidia-mig-parted apply -f <config-repo>/mig-parted.yaml -c all-disabled
nvidia-mig-parted apply -f <config-repo>/mig-parted.yaml -c all-enabled
nvidia-mig-parted apply -f <config-repo>/mig-parted.yaml -c all-1g.5gb
nvidia-mig-parted apply -f <config-repo>/mig-parted.yaml -c all-2g.10gb
nvidia-mig-parted apply -f <config-repo>/mig-parted.yaml -c all-3g.20gb
nvidia-mig-parted apply -f <config-repo>/mig-parted.yaml -c all-balanced
nvidia-mig-parted apply -f <config-repo>/mig-parted.yaml -c custom-config