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