• Русский
  • Установка для NVIDIA GPU

    В этой главе описаны пошаговые действия по полной установке для кластеров с NVIDIA GPUs. Для Huawei Ascend NPUs см. Установка для Huawei Ascend NPU.

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

    • Доступ администратора к вашему кластеру ACP
    • Версия Kubernetes: v1.16+
    • Версия CUDA: v10.2+
    • NvidiaDriver: v440+ в Hami и v450+ в DCGM-exporter
    • Версия ACP: v4.0+

    Процедура

    Установка драйвера NVIDIA на узле GPU

    См. официальное руководство по установке NVIDIA.

    Установка NVIDIA Container Runtime

    См. руководство по установке NVIDIA Container Toolkit.

    Добавление библиотеки Nvidia yum на узле GPU

    Примечание: убедитесь, что узел GPU может обращаться к nvidia.github.io

    distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
    yum makecache -y

    Когда появится сообщение "Metadata cache created.", это означает, что добавление выполнено успешно.

    Установка Nvidia Container Runtime

    yum install nvidia-container-toolkit -y

    Когда появится приглашение "Complete!", это означает, что установка выполнена успешно.

    Настройте containerd на использование NVIDIA runtime и перезапустите его:

    nvidia-ctk runtime configure --runtime=containerd
    systemctl restart containerd

    Загрузка Cluster plugin

    INFO

    Alauda Build of Hami, Alauda Build of DCGM-Exporter и (опционально) Alauda Build of Hami-WebUI можно получить в Customer Portal.

    Для получения дополнительной информации обратитесь в Consumer Support.

    Примечание: Alauda Build of DCGM-Exporter версии v4.2.3-413, развернутый в глобальном кластере, может приводить к постоянной переустановке компонента. Версия v4.2.3-413-1 устраняет эту проблему, поэтому обязательно используйте именно эту версию.

    Загрузка Cluster plugin

    Дополнительные сведения о загрузке cluster plugin см. в Загрузка Cluster Plugin

    Установка Alauda Build of Hami

    1. Добавьте метку "gpu=on" на каждый узел NVIDIA GPU, чтобы hami-device-plugin (NVIDIA) запускался только там.

      kubectl label nodes {nodeid} gpu=on
      TIP

      Эта метка предназначена только для узлов NVIDIA — узлы Ascend используют метку ascend=on. См. Установка для Huawei Ascend NPU.

    2. Перейдите на страницу Administrator -> Marketplace -> Cluster Plugin, переключитесь на целевой кластер, а затем разверните Cluster plugin Alauda Build of Hami.

      В форме развертывания оставьте Enable NVIDIA включенным. Если кластер не содержит узлов Huawei Ascend NPU, оставьте Enable Ascend выключенным. Остальные параметры можно оставить по умолчанию или изменить после того, как вы разберетесь, как их использовать.

      ПараметрПо умолчаниюОписание
      Enable NVIDIAВключеноПри включении развертываются и hami-scheduler, и hami-device-plugin (NVIDIA).
      Enable AscendВыключеноОставьте выключенным для кластеров только с NVIDIA. Если в вашем кластере также есть Huawei Ascend NPUs, см. Установка для Huawei Ascend NPU.
      TIP

      Enable NVIDIA и Enable Ascend независимы друг от друга. Вы можете отключить любой из них, но следует оставить включенным хотя бы один тип устройства.

    3. Проверьте результат. В UI вы можете увидеть статус "Installed", либо проверить состояние pod:

      kubectl get pods -n kube-system | grep -E "hami-scheduler|hami-device-plugin"
    4. Создайте несколько ConfigMaps, определяющих расширенные ресурсы, которые можно использовать для задания расширенных ресурсов в ACP. Выполните следующий скрипт в вашем gpu cluster:

      Нажмите, чтобы развернуть код
      kubectl apply -f - <<EOF
      apiVersion: v1
      data:
        dataType: integer
        defaultValue: "1"
        descriptionEn: Number of GPU jobs for resource quota. When create workload, declare how many physical GPUs needs and the requests of gpu core and gpu memory are the usage of per physical GPU
        descriptionZh: 资源配额代表 GPU 任务数。创建负载时代表申请的物理 gpu 个数, 申请的算力和显存都是每个物理 GPU 的使用量
        group: hami-nvidia
        groupI18n: '{"zh": "HAMi NVIDIA", "en": "HAMi NVIDIA"}'
        key: nvidia.com/gpualloc
        labelEn: gpu number
        labelZh: gpu 个数
        limits: optional
        requests: disabled
        resourceUnit: "count"
        relatedResources: "nvidia.com/gpucores,nvidia.com/gpumem"
        excludeResources: "nvidia.com/mps-core,nvidia.com/mps-memory,tencent.com/vcuda-core,tencent.com/vcuda-memory"
        runtimeClassName: ""
      kind: ConfigMap
      metadata:
        labels:
          features.cpaas.io/enabled: "true"
          features.cpaas.io/group: hami-nvidia
          features.cpaas.io/type: CustomResourceLimitation
        name: cf-crl-hami-nvidia-gpualloc
        namespace: kube-public
      ---
      apiVersion: v1
      data:
        dataType: integer
        defaultValue: "20"
        descriptionEn: vgpu cores, 100 cores represents the all computing power of a physical GPU
        descriptionZh: vgpu 算力, 100 算力代表一个物理 GPU 的全部算力
        group: hami-nvidia
        groupI18n: '{"zh": "HAMi NVIDIA", "en": "HAMi NVIDIA"}'
        key: nvidia.com/gpucores
        prefix: limits
        labelEn: vgpu cores
        labelZh: vgpu 算力
        limits: optional
        requests: disabled
        relatedResources: "nvidia.com/gpualloc,nvidia.com/gpumem"
        excludeResources: "nvidia.com/mps-core,nvidia.com/mps-memory,tencent.com/vcuda-core,tencent.com/vcuda-memory"
        runtimeClassName: ""
        ignoreNodeCheck: "true"
      kind: ConfigMap
      metadata:
        labels:
          features.cpaas.io/enabled: "true"
          features.cpaas.io/group: hami-nvidia
          features.cpaas.io/type: CustomResourceLimitation
        name: cf-crl-hami-nvidia-gpucores
        namespace: kube-public
      ---
      apiVersion: v1
      data:
        dataType: integer
        defaultValue: "4000"
        group: hami-nvidia
        groupI18n: '{"zh": "HAMi NVIDIA", "en": "HAMi NVIDIA"}'
        key: nvidia.com/gpumem
        prefix: limits
        labelEn: vgpu memory
        labelZh: vgpu 显存
        limits: optional
        requests: disabled
        resourceUnit: "Mi"
        relatedResources: "nvidia.com/gpualloc,nvidia.com/gpucores"
        excludeResources: "nvidia.com/mps-core,nvidia.com/mps-memory,tencent.com/vcuda-core,tencent.com/vcuda-memory"
        runtimeClassName: ""
        ignoreNodeCheck: "true"
      kind: ConfigMap
      metadata:
        labels:
          features.cpaas.io/enabled: "true"
          features.cpaas.io/group: hami-nvidia
          features.cpaas.io/type: CustomResourceLimitation
        name: cf-crl-hami-nvidia-gpumem
        namespace: kube-public
      ---
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: cf-crl-hami-config
        namespace: kube-public
        labels:
          device-plugin.cpaas.io/config: "true"
      data:
        deviceName: "HAMi"
        nodeLabelKey: "gpu"
        nodeLabelValue: "on"
      EOF
      

    После этого Hami появится в выпадающем списке типов расширенных ресурсов на странице конфигурации ресурсов при создании приложения в бизнес-представлении ACP, и вы сможете начать его использовать.

    Установка Alauda Build of DCGM-Exporter

    1. Перейдите на страницу Administrator -> Marketplace -> Cluster Plugin, переключитесь на целевой кластер, а затем разверните Cluster plugin Alauda Build of DCGM-Exporter: Установите метки узла в всплывающей форме:

      • Node Label Key: gpu
      • Node Label Value: on

      Если вам нужно включить dcgm-exporter для pgpu, добавьте следующую метку:

      • Node Label Key: nvidia-device-enable
      • Node Label Value: pgpu
    2. Проверьте результат. В UI вы можете увидеть статус "Installed", либо проверить состояние pod:

      kubectl get pods -n kube-system | grep dcgm-exporter

    Установка Monitor

    Вы можете использовать ACP MonitorDashboard или сборку Hami-WebUI от Alauda

    Установка ACP MonitorDashboard (необязательно)

    Создайте ресурс ACP MonitorDashboard для монитора HAMi GPU в панели ACP dashboard. Сохраните файл hami-vgpu-metrics-dashboard-v1.0.2.yaml в business cluster и выполните команду: kubectl apply -f hami-vgpu-metrics-dashboard-v1.0.2.yaml

    Установка Alauda build of Hami-WebUI (необязательно)

    Совместимость версий Alauda Build of Hami-WebUI:

    • v1.10.0 совместима с Hami v2.7 и v2.8.
    • v1.5.0 несовместима с Hami v2.8.
    • При развертывании Hami v2.8 используйте Alauda Build of Hami-WebUI v1.10.0.
    1. Перейдите на страницу Administrator -> Marketplace -> Cluster Plugin, переключитесь на целевой кластер, а затем разверните Cluster plugin Alauda Build of Hami-WebUI. Укажите адрес Prometheus и аутентификацию Prometheus. Рекомендуется включить доступ через NodePort. Адрес Prometheus и строку auth можно получить с помощью следующего скрипта:
      #!/bin/bash
      
      addr=$(kubectl get feature monitoring -o jsonpath='{.spec.accessInfo.database.service}')
      if [ -z "$addr" ]; then
      addr=$(kubectl get feature monitoring -o jsonpath='{.spec.accessInfo.database.address}')
      fi
      echo "Prometheus Address: $addr"
      
      secret_name=$(kubectl get feature monitoring -o jsonpath='{.spec.accessInfo.database.basicAuth.secretName}')
      namespace="cpaas-system"
      
      username=$(kubectl get secret $secret_name -n $namespace -o jsonpath='{.data.username}' | base64 -d)
      password=$(kubectl get secret $secret_name -n $namespace -o jsonpath='{.data.password}' | base64 -d)
      
      auth="Basic $(echo -n "$username:$password" | base64 -w 0)"
      echo "Prometheus Auth   : $auth"
    2. Проверьте результат. В UI вы можете увидеть статус "Installed", либо проверить состояние pod:
      kubectl get pods -n cpaas-system | grep "hami-webui"

    Проверка

    В этом разделе описано, как убедиться, что установленный Alauda Build of Hami и связанный мониторинг работают корректно.

    Проверка Hami

    1. Проверьте, доступны ли на узле GPU в control node бизнес-кластера выделяемые ресурсы GPU. Выполните следующую команду:
      kubectl get node  ${nodeName} -o=jsonpath='{.status.allocatable}'
      # The output contains: "nvidia.com/gpualloc":"10" (the specific value depends on the number of GPU cards and installation parameters)
    2. Разверните demo-экземпляр GPU. Проверьте, есть ли какое-либо потребление ресурсов, связанное с GPU. Выполните следующую команду на узле GPU бизнес-кластера:
      nvidia-smi pmon -s u -d 1

    Если и sm, и mem содержат данные, GPU готов к использованию. Вы можете начать разработку GPU-приложений на узле GPU. Примечание: при развертывании GPU-приложений обязательно настройте следующие обязательные параметры:

    spec:
      containers:
        - image: your-image
          imagePullPolicy: IfNotPresent
          name: gpu
          resources:
            limits:
              cpu: '2'
              memory: 4Gi
              nvidia.com/gpualloc: 1     # Запрос 1 физического GPU (обязательно)
              nvidia.com/gpucores: "50"  # Запрос 50% вычислительных ресурсов на GPU (необязательно)
              nvidia.com/gpumem: 8000    # Запрос 8000MB видеопамяти на GPU (необязательно)

    Проверка MonitorDashboard

    После того как сервис HAMi vgpu некоторое время поработает, перейдите на страницу Administrator -> Operations Center -> Monitor -> Dashboards и переключитесь на панель HAMi GPU Monitoring в разделе Hami. Вы увидите соответствующие данные графиков.

    Проверка Hami-WebUI

    После того как компоненты HAMi-WebUI некоторое время поработают, откройте в браузере http://{business cluster node IP}:NodePort.