Визуализация данных

Как создать индивидуальную панель в Comet

Напишите свои собственные панели в Comet на Python или Javascript

Недавно я обнаружил очень интересную функцию, предоставляемую Кометой: настраиваемые панели. Панель — это визуальное отображение, которое показывает некоторые результаты в виде таблиц или графиков. Результаты могут включать показатели производительности, статистику наборов данных или просто общие данные.

Comet предоставляет панель инструментов для создания общих панелей. Кроме того, он предоставляет SDK, который позволяет создавать пользовательские панели на Python или Javascript. В этой статье я описываю, как создать пользовательскую панель в Comet.

Концепция панелей в Comet

Comet — это платформа для экспериментов, которая предоставляет пользователям инструменты и функции для отслеживания и мониторинга экспериментов по машинному обучению. Чтобы обобщить результаты экспериментов, Comet предоставляет функцию Panels. Вы можете построить столько панелей, сколько захотите.

Группа не обязательно связана с конкретным экспериментом; скорее, он может показать результаты разных экспериментов.

Чтобы создать новую панель после одного или нескольких экспериментов, вы можете просто нажать кнопку «Добавить» в правом верхнем углу панели инструментов и нажать «Новая панель». Затем вы можете выбрать одну из встроенных или рекомендуемых Панели, как показано на следующем рисунке:

На следующем рисунке показан пример панели в Comet:

Пользовательские панели

Comet предоставляет Python/Javascript SDK, который позволяет создавать собственные панели. На данный момент вы можете создавать пользовательские панели только из онлайн-интерфейса. Чтобы получить доступ к графическому интерфейсу, вы можете нажать «Добавить → Новая панель» на панели инструментов, а затем нажать «Создать новую». Откроется новое окно с онлайн-SDK, как показано на следующем рисунке:

SDK представляет редактор слева, где вы можете написать свой код, и предварительный просмотр результата справа. Чтобы увидеть предварительный просмотр, вы должны нажать кнопку запуска. В верхней части SDK вы можете выбрать предпочитаемый язык (Python или Javascript).

Панель Comet может принимать множество параметров в качестве входных данных. Вы можете указать их на вкладке «Параметры» SDK. Вы можете определить параметры как пары ключ-значение следующим образом:

{
 "key1" : "value1",
 "key2" : "value2",
 ...
 "keyN" : "valueN"
}

Пользовательские панели в Python

Comet определяет подпакет ui для настройки вашей панели. Прежде чем использовать его, вы должны импортировать его следующим образом:

from comet_ml import ui

Подпакет ui определяет следующие методы:

  • ui.display()
  • ui.display_figure()
  • ui.display_image()
  • ui.display_text()
  • ui.display_markdown()

Имена функций говорят сами за себя. Однако для получения дополнительной информации вы можете обратиться к официальной документации Comet.

Панели Comet интегрированы с графиками Matplotlib и Plotly, а также с библиотекой изображений PIL.

Чтобы получить параметры ввода, вы можете использовать функцию get_panel_options(), предоставляемую классом API():

from comet_ml import API

api = API()
options = api.get_panel_options()

Пользовательские панели в Javascript

Панель Javascript должна расширять класс Panel следующим образом:

class MyPanel extends Comet.Panel {
  ...
}

Класс Comet.Panel определяет различные методы, как описано в официальной документации Comet. Чтобы нарисовать что-то в вашей панели, вы можете использовать метод draw(). Вы можете получить доступ к параметрам ввода через переменную this.options.

Javascript-панели совместимы с библиотекой Javascript Plotly.

Хотите увидеть больше Comet в действии? Загляните в наш Проект Hacker News на YouTube!

Практический пример

Предположим, вы построили собственную модель машинного обучения и рассчитали точность, полноту и показатель f1. Далее предположим, что вы отслеживали свои показатели в Comet с помощью метода log_metric() класса Experiment. Наконец, вы провели различные эксперименты. Теперь вы хотите создать пользовательскую панель на Python, которая показывает значения заданной метрики во всех экспериментах.

Вы открываете Python SDK в Comet и начинаете писать свой код. Во-первых, вы импортируете необходимые библиотеки:

from comet_ml import API, ui
import matplotlib.pyplot as plt

Затем вы получаете все доступные метрики через get_panel_metrics_names(), предоставляемый Comet API:

api = API()
metrics = api.get_panel_metrics_names()

Теперь вы добавляете раскрывающееся меню, позволяющее пользователю выбрать показатель. Вы используете функцию dropdown(), предоставляемую пользовательским интерфейсом Comet:

selected_metric = ui.dropdown('Select a metric:', metrics)

Затем вы получаете все ключи эксперимента и связанную информацию для выбранной метрики:

experiment_keys = api.get_panel_experiment_keys()
metrics = api.get_metrics_for_chart(experiment_keys, [selected_metric])

Переменная metrics выглядит так:

{'YOUR EXPERIMENT KEY': {
   'experimentKey': 'YOUR EXPERIMENT KEY',
   'steps': None,
   'epochs': None,
   'metrics': [{ 
      'metricName': 'f1',
      'values': [0.9444444444444444],
      'steps': [None],
      'epochs': [None],
      'timestamps': [1642501827141],
      'durations': [0]
    }],
    'params': None,
    'empty': False
},
 'ANOTHER EXPERIMENT KEY': {...},
...
}

Ваша цель — извлечь значения выбранной метрики из всех экспериментов. Таким образом, вы выполняете цикл по переменной метрики, а затем извлекаете значения. Вы наносите все значения метрик в виде серой полосы, за исключением конкретного эксперимента, где вы наносите полосу красным цветом:

fig, ax = plt.subplots()
for experiment_key in metrics:
    for metric in metrics[experiment_key]["metrics"]:
        if experiment_key == 'YOUR SPECIFIC EXPERIMENT':
            plt.bar(experiment_key, metric['values'], color='red')
        else:
            plt.bar(experiment_key, metric['values'], color='gray')
plt.xticks(rotation=90)
ax.spines["right"].set_visible(False)
ax.spines["top"].set_visible(False)

Теперь вы вызываете функцию display() кометы ui, чтобы нарисовать график:

ui.display(plt)

На следующем рисунке показан окончательный результат:

Краткое содержание

Поздравляем! Вы только что создали свою первую пользовательскую панель в Comet! Пользовательские панели могут быть персонализированы по вашему желанию, поэтому вы можете создавать невероятные визуализации в Comet либо на Python, либо на Javascript. Подробнее о панелях Comet можно прочитать в официальной документации Comet, доступной по этой ссылке.

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

И теперь вам просто необходимо попробовать Комету!

Удачного кодирования, счастливой Кометы!

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

Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение наших еженедельных информационных бюллетеней (Еженедельник глубокого обучения и Информационный бюллетень Comet), присоединиться к нам в Slack и следить за Comet в Twitter и LinkedIn, чтобы получать ресурсы, события и многое другое, что поможет вам быстрее создавать лучшие модели машинного обучения.