nav-img
ML Space

Пример создания дашборда по аллокациям

Для примера будем строить дашборд «Мои аллокации», отображающий сводную информацию по ресурсам аллокаций и воркспейсов.

Переменные дашборда

Построение любого дашборда начинается с определения его переменных. Переменные — это параметры, которые задает пользователь при работе с дашбордом. Они определяют отображаемые данные и используются в запросах, которые рассмотрим ниже.

Примечание

В примерах кода ниже через $ происходит обращение к переменной, выбранной пользователем. Используется язык запросов PromQL.

Введем 3 переменные:

  • regionрегион размещения ресурсов;

  • allocation — аллокация в регионе;

  • workspace— воркспейс в аллокации.

Параметры определяются на вкладке Переменные раздела Настройки редактируемого дашборда:

../../_images/s__create-dashboard-2.png

Последовательность определения переменных влияет на их «вычисление» при отображении дашборда. Чем ниже переменная, тем более она зависимая.

В нашем примере region располагается первым, так как не зависит от каких-либо параметров, allocation располагается ниже region. workspace находится в самом низу, поскольку зависит от значений обоих переменных.

При создании новой переменной необходимо определить ее атрибуты:

  • название, которое будет использоваться в запросах;

  • тип;

  • лейбл (только для переменной типа «Запрос»);

  • фильтр (только для переменной типа «Запрос»).

Пример заполняемой формы:

../../_images/s__create-dashboard-3.png

Необходимо определить следующие переменные:

Название

Множественный выбор

Тип переменной

Лейбл

Фильтр

region

Нет

Запрос

region

mls_kube_pod_container_resource_limits{product_type="mlspace"}

allocation

Да

Запрос

allocation

mls_kube_pod_container_resource_limits{product_type="mlspace", region=~"$region"}

workspace

Да

Запрос

workspace

mls_kube_pod_container_resource_limits{product_type="mlspace", region=~"$region", allocation=~"$allocation"}

В качестве источника значений переменной может выступать любая коллекция (метрика): в данном случае используется mls_kube_pod_container_resource_limits. Единого источника, из которого задаются переменные дашборда, нет.

Создание виджетов

Разместим 3 виджета:

  • Статистика по воркспейсам аллокации — отображает сводную информацию по выбранным воркспейсам аллокации.

  • Утилизация GPU — средняя текущая (последняя) загрузка GPU.

  • Утилизация vRAM GPU — Среднее текущее (последнее) потребление видеопамяти GPU.

Итоговый вариант, который необходимо получить, представлен ниже.

../../_images/s__create-dashboard-4.png

Статистика по воркспейсам

Это виджет типа «Таблица». Ниже перечислены настройки виджета.

../../_images/s__create-dashboard-5.png

На вкладке Запросы с помощью запросов задаются характеристики, отображаемые на виджете.

Количество запущенных задач обучения
count by (allocation, workspace) (
mls_kube_pod_container_resource_limits{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace",
product_instance_type="job"
}
)
Количество запущенных Jupyter Server
count by (allocation, workspace) (
mls_kube_pod_container_resource_limits{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace",
product_instance_name="jupyter_server"
}
)
Общее потребление vCPU
sum by (allocation,workspace) (
rate(mls_container_cpu_usage_seconds_total{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace"
}[5m])
)
Общее потребление RAM, ГБ
sum by ( allocation, workspace) (
mls_container_memory_usage_bytes{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace"
}
) / 1024 / 1024 / 1024
Средняя загрузка GPU, %
avg by (allocation, workspace) (
mls_DCGM_FI_DEV_GPU_UTIL{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace"
}
)

Утилизация GPU и vRAM

Этот и следующий виджеты относятся к типу «Статистика» и отличаются только запросами данных. Ниже перечислены настройки виджета.

../../_images/s__create-dashboard-6.png

Запрос:

round(
avg(mls_DCGM_FI_DEV_GPU_UTIL{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation"}
),
0.1
)

Мы не считаем среднее по воркспейсам и не фильтруем данные по $workspace. Поэтому в выборке будут представлены данные по всем воркспейсам, а avg покажет среднее по ним.

Утилизация vRAM
round(
sum(mls_DCGM_FI_DEV_FB_USED{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation"
}) /
(
sum(mls_DCGM_FI_DEV_FB_FREE{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation"
})
+
sum(mls_DCGM_FI_DEV_FB_USED{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation"
})
) * 100.0
,
0.1
)

Утилизация CPU и RAM

Эти виджеты типа «Временной ряд» отображают утилизацию CPU и RAM по задачам обучения и запущенным Jupyter Server воркспейса.

Настройки виджета:

../../_images/s__create-dashboard-8.png
Потребление vCPU
avg by (product_instance_name, workspace) (
rate(mls_container_cpu_usage_seconds_total{
product_type="mlspace",
region=~"$region",
workspace=~"$workspace",
allocation=~"$allocation"}[5m]
)
)

Здесь и далее легенда составляется из лейблов значений: {{product_instance_name}} ({{workspace}}).

Потребление RAM
sum by ( product_instance_name, workspace ) (
mls_container_memory_usage_bytes{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace"
}
)

Для корректного масштабирования шкалы памяти необходимо установить значение категория Объем данных.

Утилизация GPU и vRAM GPU

../../_images/s__create-dashboard-7.png

GPU-метрики базируются на метриках dcgm_exporter.

../../_images/s__create-dashboard-10.png
Использование GPU
avg by (product_instance_name, workspace) (
mls_DCGM_FI_DEV_GPU_UTIL{
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace"}
)
Использование vRAM GPU
sum by (product_instance_name, workspace) (mls_DCGM_FI_DEV_FB_USED{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace"
}) /
(
sum by (product_instance_name, workspace) (mls_DCGM_FI_DEV_FB_FREE{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace"
})
+
sum by (product_instance_name, workspace) (mls_DCGM_FI_DEV_FB_USED{
product_type="mlspace",
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace"
})
) * 100.0

Использование видеокарт в воркспейсах

../../_images/s__create-dashboard-11.png

Этот сводный виджет отображает историю состояний потребления ресурсов видеокарты. Настройки виджета:

../../_images/s__create-dashboard-12.png
История состояний потребления видеокарты
avg by (workspace) (
mls_DCGM_FI_DEV_POWER_USAGE{
region=~"$region",
allocation=~"$allocation",
workspace=~"$workspace"
}
)

Для определения загруженности карты используется метрика mls_DCGM_FI_DEV_POWER_USAGE, предоставляющая данные по потреблению видеокарт в Вт.

Для дискретизации состояний используются пороговые значения на вкладке Переопределение значений:

  • 0–85 Вт — низкое, серый цвет;

  • 85–250 Вт — среднее, синий цвет;

  • 250–1000 Вт — высокое, зеленый цвет.

Указанные пороговые значения приведены для примера. Интервалы состояний пользователь определяет самостоятельно.