• Русский
  • Установка

    Содержание

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

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

    Процедура

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

    Рекомендуется использовать Installation guide of Nvidia Official website

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

    Рекомендуется использовать Installation guide of 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!", это означает, что установка прошла успешно.

    Загрузка плагина кластера

    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 решает эту проблему, поэтому обязательно используйте именно эту версию.

    Загрузка плагина кластера

    Для получения дополнительной информации о загрузке плагина кластера, пожалуйста, обратитесь к Uploading Cluster Plugins

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

    1. Добавьте метку "gpu=on" на вашем GPU узле для планирования Hami.

      kubectl label nodes {nodeid} gpu=on
    2. Перейдите на страницу Administrator -> Marketplace -> Cluster Plugin, переключитесь на целевой кластер и разверните плагин кластера Alauda Build of Hami. Примечание: Параметры формы развертывания можно оставить по умолчанию или изменить после ознакомления с их использованием.

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

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

      Нажмите, чтобы развернуть код
      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, переключитесь на целевой кластер и разверните плагин кластера Alauda Build of DCGM-Exporter: В форме всплывающего окна задайте метки узлов:

      • Ключ метки узла: gpu
      • Значение метки узла: on

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

      • Ключ метки узла: nvidia-device-enable
      • Значение метки узла: pgpu
    2. Проверьте результат. В UI должен отображаться статус "Installed", либо можно проверить статус подов:

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

    Установка Монитора

    Вы можете использовать ACP MonitorDashboard или Alauda build of Hami-WebUI

    Установка ACP MonitorDashboard (опционально)

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

    Установка Alauda build of Hami-WebUI (опционально)

    1. Перейдите на страницу Administrator -> Marketplace -> Cluster Plugin, переключитесь на целевой кластер и разверните плагин кластера Alauda Build of Hami-WebUI. Заполните адрес Prometheus и аутентификацию Prometheus. Рекомендуется включить доступ NodePort. Адрес Prometheus и данные аутентификации можно получить с помощью следующих скриптов:
      #!/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", либо можно проверить статус подов:
      kubectl get pods -n cpaas-system | grep "hami-webui"