• Русский
  • Как определить модель стоимости pGPU

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

    В GPU-кластере:

    • Установлен Alauda Build NVIDIA GPU Device Plugin
    • Установлен Cost Management Agent

    О Alauda Build NVIDIA GPU Device Plugin

    NVIDIA device plugin для Kubernetes — это Daemonset, который позволяет автоматически:

    • Отображать количество GPU на каждом узле вашего кластера
    • Отслеживать состояние ваших GPU
    • Запускать контейнеры с поддержкой GPU в вашем Kubernetes кластере.
    Note
    Поскольку выпуски Alauda Build of NVIDIA GPU Device Plugin осуществляются в ином режиме, чем у Alauda Container Platform, документация Alauda Build of NVIDIA GPU Device Plugin теперь доступна в виде отдельного набора по адресу Alauda Build of NVIDIA GPU Device Plugin

    Процедура

    Создание PrometheusRule для генерации необходимых метрик

    Создайте PrometheusRule в GPU-кластере.

    apiVersion: monitoring.coreos.com/v1
    kind: PrometheusRule
    metadata:
      labels:
        prometheus: kube-prometheus
      name: pgpu-labels
      namespace: kube-system
    spec:
      groups:
      - name: gpu.rules
        interval: 30s
        rules:
        - record: gpu_count
          expr: |
            count by (UUID, label_modelName, namespace) (
              label_replace(
                DCGM_FI_DEV_GPU_UTIL{namespace!="kube-system"},
                "label_modelName",
                "$0",
                "modelName",
                ".*"
              )
            )

    Добавление конфигурации сбора (Cost Management Agent)

    Создайте ConfigMap в GPU-кластере, где работает Cost Management Agent, чтобы объявить, что нужно собирать.

    apiVersion: v1
    data:
      config: >
        - kind: pGPU
          category: pGPUCount
          item: vGPUCountQuota
          period: Hourly
          labels:
            query: "gpu_count"
            mappers:
              name: UUID
              namespace: namespace
              cluster: ""
              project: ""
          usage:
            query: gpu_count
            step: 5m
            mappers:
              name: UUID
              namespace: namespace
              cluster: ""
              project: ""
    kind: ConfigMap
    metadata:
      labels:
        cpaas.io/slark.collection.config: "true"
      name: slark-agent-pgpu-namespace-config
      namespace: cpaas-system
    ---
    apiVersion: v1
    data:
      config: >
        - kind: Project
          category: pGPUCount
          item: vGPUCountsProjectQuota
          period: Hourly
          usage:
            query: avg by (project, cluster) (avg_over_time(cpaas_project_resourcequota{resource="requests.nvidia.com/gpu", type="project-hard"}[5m]))
            step: 5m
            mappers:
              name: project
              namespace: ""
              cluster: cluster
              project: project
    kind: ConfigMap
    metadata:
      labels:
        cpaas.io/slark.collection.config: "true"
      name: slark-agent-project-config-vgpu
      namespace: cpaas-system

    После добавления yaml необходимо перезапустить Pod агента для перезагрузки конфигураций.

    kubectl delete pods -n cpaas-system -l service_name=slark-agent

    Добавление конфигурации отображения/хранения (Cost Management Server)

    Создайте ConfigMap в кластере, где работает Cost Management Server, чтобы объявить элементы биллинга, методы, единицы и отображаемые имена. Это указывает серверу, что и как учитывать.

    apiVersion: v1
    data:
      config: |
        - name: pGPUCount
          displayname:
            zh: "pGPU"
            en: "pGPU"
          methods:
            - name: Request
              displayname:
                zh: "请求量"
                en: "Request Usage"
              item: vGPUCountQuota
              divisor: 1
              unit:
                zh: "count-hours"
                en: "count-hours"
            - name: ProjectQuota
              displayname:
                zh: "项目配额"
                en: "Project Quota"
              item: vGPUCountsProjectQuota
              unit:
                zh: "count-hours"
                en: "count-hours"
              divisor: 1
    kind: ConfigMap
    metadata:
      labels:
        cpaas.io/slark.display.config: "true"
      name: slark-display-config-for-pgpu
      namespace: kube-public

    После добавления yaml необходимо перезапустить Pod сервера для перезагрузки конфигураций.

    kubectl delete pods -n cpaas-system -l service_name=slark

    Добавление цены для модели стоимости pGPU

    Описание методов биллинга

    Элемент биллингаМетод биллингаПравила биллингаОписание
    pGPURequest (count-hours)Рассчитывается почасово на основе Request POD за последний час, умноженного на фактическую продолжительность POD (считается 5 минут, если меньше 5 минут).Основано на запросах ресурсов pGPU
    pGPUProject Quota (count-hours)Рассчитывается почасово на основе выделенного проекту лимита CPU квоты, умноженного на длительность времени. Расчет сегментами при изменении квоты.Основано на квотах ресурсов на уровне проекта

    Если в GPU-кластере отсутствует модель стоимости, необходимо создать новую модель стоимости. Затем можно добавить цену для модели стоимости GPU-кластера:

    1. Выберите pGPU в Billing Items.
    2. Выберите Request Usage (count-hours) или Project Quota (count-hours) в Method.
    3. Установите Default Price.
    4. Настройте Price By Label (опционально). Пример: key: modelName
      value: "Tesla P100-PCIE-16GB" или "Tesla T4" или "NVIDIA A30" (получается при запуске nvidia-smi)

    Детали стоимости и статистика стоимости

    Наконец, после ожидания 1 или более часов вы сможете увидеть детали стоимости в Cost Details с измерениями namespace и UUID карты.
    Также вы сможете увидеть общие затраты по кластеру, проекту и namespace в Cost Statistics.