• Русский
  • ⚠️ Эта функция всё ещё экспериментальная. Пожалуйста, используйте её с осторожностью.

    Включение функции динамического MIG

    HAMi теперь поддерживает динамический MIG с помощью mig-parted для динамической настройки MIG-устройств, включая:

    • Динамическое управление MIG-инстансами: пользователям больше не нужно напрямую работать с GPU-узлами или использовать команды вроде nvidia-smi -i 0 -mig 1 для управления MIG-инстансами. HAMi-device-plugin будет делать это автоматически.

    • Динамическая настройка MIG: каждое MIG-устройство, управляемое HAMi, будет динамически подстраивать свой MIG-шаблон в зависимости от поданных заданий.

    • Наблюдение за MIG-устройствами: каждый MIG-инстанс, созданный HAMi, будет отображаться в мониторе планировщика вместе с информацией о заданиях, обеспечивая наглядный обзор MIG-узлов.

    • Совместимость с HAMi-Core узлами: HAMi может управлять единым пулом GPU как на HAMi-core узлах, так и на MIG-узлах. Задание может быть запланировано на любой из этих узлов, если не указано вручную с помощью аннотации nvidia.com/vgpu-mode.

    • Унифицированный API с HAMi-Core: не требуется дополнительных действий для совместимости заданий с функцией динамического MIG.

    Содержание

    Предварительные требования

    • GPU NVIDIA Blackwell, Hopper™ и Ampere
    • Установленная сборка HAMi от Alauda

    Включение поддержки динамического MIG

    1. Настройте режим в configMap device-plugin на mig для MIG-узлов
      kubectl edit configmap hami-device-plugin -n kube-system
      apiVersion: v1
      data:
        config.json: |
          {
              "nodeconfig": [
                  {
                      "name": "MIG-NODE-A",
                      "operatingmode": "mig",
                      "migstrategy":"mixed",
                      "filterdevices": {
                        "uuid": [],
                        "index": []
                      }
                  }
              ]
          }
      kind: ConfigMap
      Замените имя узла в массиве nodeconfig на имя узла, для которого хотите установить режим mig. Если узлов несколько, увеличьте количество элементов массива.
    2. Перезапустите следующие поды, чтобы изменения вступили в силу:
    • hami-scheduler
    • hami-device-plugin на узле 'MIG-NODE-A'

    Примечание:
    Данная конфигурация будет потеряна при обновлениях; будущие версии HAMi улучшат этот момент.

    Пользовательская конфигурация MIG (опционально)

    В настоящее время HAMi имеет встроенную конфигурацию MIG.

    Вы можете настроить конфигурацию MIG, выполнив следующие шаги:

    kubectl -n kube-system edit configmap hami-scheduler-device
    apiVersion: v1
    data:
      device-config.yaml: >-
          knownMigGeometries:
          - models: [ "A30" ]
            allowedGeometries:
              -
                - name: 1g.6gb
                  memory: 6144
                  count: 4
              -
                - name: 2g.12gb
                  memory: 12288
                  count: 2
              -
                - name: 4g.24gb
                  memory: 24576
                  count: 1
          - models: [ "A100-SXM4-40GB", "A100-40GB-PCIe", "A100-PCIE-40GB", "A100-SXM4-40GB" ]
            allowedGeometries:
              -
                - name: 1g.5gb
                  memory: 5120
                  count: 7
              -
                - name: 2g.10gb
                  memory: 10240
                  count: 3
                - name: 1g.5gb
                  memory: 5120
                  count: 1
              -
                - name: 3g.20gb
                  memory: 20480
                  count: 2
              -
                - name: 7g.40gb
                  memory: 40960
                  count: 1
          - models: [ "A100-SXM4-80GB", "A100-80GB-PCIe", "A100-PCIE-80GB"]
            allowedGeometries:
              -
                - name: 1g.10gb
                  memory: 10240
                  count: 7
              -
                - name: 2g.20gb
                  memory: 20480
                  count: 3
                - name: 1g.10gb
                  memory: 10240
                  count: 1
              -
                - name: 3g.40gb
                  memory: 40960
                  count: 2
              -
                - name: 7g.79gb
                  memory: 80896
                  count: 1

    Затем перезапустите компоненты hami-scheduler.
    HAMi определит и использует первый MIG-шаблон, который соответствует заданию, в порядке, определённом в этом configMap.

    Примечание:
    Данная конфигурация будет потеряна при обновлениях; будущие версии HAMi улучшат этот момент.

    Запуск заданий MIG

    Теперь MIG-инстанс можно запросить контейнером так же, как и hami-core, просто указав ресурсы nvidia.com/gpualloc и nvidia.com/gpumem.

    apiVersion: v1
    kind: Pod
    metadata:
      name: gpu-pod
      annotations:
        nvidia.com/vgpu-mode: "mig" #(Optional), если не указано, этот под может быть назначен как MIG-инстансу, так и hami-core инстансу
    spec:
      containers:
        - name: ubuntu-container
          image: ubuntu:18.04
          command: ["bash", "-c", "sleep 86400"]
          resources:
            limits:
              nvidia.com/gpualloc: 1
              nvidia.com/gpumem: 8000

    Примечания:

    • Значение nvidia.com/gpualloc не может превышать фактическое количество физических GPU. Например, GPU в режиме MiG может быть установлен только в 1. Это ограничение HAMi, которое будет улучшено в будущих версиях.
    • На MIG-узлах никаких действий не требуется — всё управляется mig-parted в hami-device-plugin.
    • Устройства NVIDIA старше архитектуры Ampere не поддерживают режим MIG.
    • Ресурсы MIG (например, nvidia.com/mig-1g.10gb) не будут видны на узле. HAMi использует единое имя ресурса для MIG и hami-core узлов.
    • Компонент DCGM-exporter, развернутый на MIG-узлах, должен быть остановлен при выполнении MIG-разбиения, так как оно требует сброса GPU. После создания первой рабочей нагрузки с включённым MIG выполняется автоматическое MIG-разбиение. Последующие рабочие нагрузки не вызывают повторного разбиения. Когда все рабочие нагрузки остановлены, повторный запуск первой рабочей нагрузки снова вызовет MIG-разбиение.