Автор: Ноэль Чен, Ци Цзян.

Обзор

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

В этой статье мы пройдем

  • Что такое Comet.ml?
  • Использование Comet.ml в сценарии рекомендации фильмов
  • Функция 1: Ведение журнала
  • Функция 2: Оптимизатор
  • Функция 3: Визуализация
  • Функция 4: отчет
  • Функция 5: совместное использование рабочего пространства
  • Цены на Comet.ml
  • Сильные стороны и ограничения Comet.ml

Мы также предлагаем практическую практику в этой ссылке на Google Colab, которой вы можете следовать!

Что такое Comet.ml?

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

Comet Artifacts позволяет вам структурировать свои эксперименты в виде многоступенчатых конвейеров или направленных ациклических графов, поэтому промежуточные результаты можно повторно использовать, отслеживать, создавать версии и анализировать в соответствии с предопределенными значениями. Артефакты также реализуют отслеживание и воспроизведение экспериментов в сложных сценариях путем отслеживания версий наборов данных и моделей. После того, как модели развернуты в производстве, важно обнаружить дрейф или изменение входных данных и отслеживать, как работают модели, таким образом, Мониторинг производства моделей Comet обеспечивает отслеживание производительности модели в режиме реального времени, включая точность, количество прогнозов, отчеты об ошибках и т. д. В Кроме того, Comet Panel — это динамичная, гибкая и многоразовая платформа визуализации, которая обеспечивает настраиваемый графический интерфейс с экосистемами JS/HTML/CSS. Также доступны различные шаблоны графиков.

Comet предлагает библиотеки на нескольких языках и платформах, таких как Python, Keras, Tensorflow, PyTorch и т. д., поэтому код вашего эксперимента можно подключить к центральной панели Comet всего несколькими строками кода. Это также упрощает командную работу за счет обмена информацией об экспериментах в команде и обеспечения управления пользователями. Теперь давайте возьмем Comet.ml на простом примере.

Использование Comet.ml в сценарии рекомендации фильмов

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

Данные

Данные, которые мы используем, собираются из потока, который содержит информацию о том, какой пользователь смотрел какой фильм и какие оценки они дали этому фильму. Формат: ‹отметка времени›, ‹идентификатор пользователя›, ‹идентификатор фильма›, ‹рейтинг›. Пример записи будет выглядеть так

2021-12-16 14:52:44, 461360, the+muppet+movie+1979, 2

Ведение журнала

Нужно добавить всего несколько строк кода, чтобы Comet.ml регистрировал результаты эксперимента.

Шаг 1: Создайте проект на Comet.ml

Прежде чем добавлять что-либо в свой код, самым важным шагом является регистрация учетной записи Comet.ml (если вы студент и хотите использовать функцию совместной работы в команде, не забудьте зарегистрироваться со своей школьной электронной почтой, потому что это бесплатно 🤩 ). После регистрации нажмите «+ Новый проект» и создайте проект. Вы можете установить видимость проекта как общедоступную или приватную.

Шаг 2: Установите и импортируйте Comet.ml

Теперь давайте добавим немного сока в наш код. Установите Comet.ml с помощью

pip3 install comet_ml

Затем импортируйте модуль, добавив

import comet_ml

Шаг 3: Установите ключ Comet API

Нам нужно установить переменную среды с именем COMET_API_KEY, чтобы аутентифицировать себя. Чтобы получить ключ API, нажмите на свою учетную запись пользователя в правом верхнем углу Comet.ml и найдите «Информация для разработчиков». Здесь вы можете нажать «Ключ API», чтобы скопировать ключ в буфер обмена. Теперь мы можем установить переменную среды в нашей записной книжке с помощью

os.environ['COMET_API_KEY'] = '<YOUR-API-KEY>'

В качестве альтернативы, если вы не используете блокнот Google Colab/Jupyter, как мы, вы также можете использовать

export COMET_API_KEY=”<YOUR-API-KEY>”

Шаг 4. Создайте эксперимент

Согласно документации Comet.ml, эксперимент определяется как

единица измеримого исследования, которая определяет один запуск с некоторыми данными/параметрами/кодом/результатами.

Мы можем создать ванильный эксперимент с этими 3 строками:

experiment = comet_ml.Experiment(
    project_name="movie-recommendation",
    workspace="<YOUR-WORKSPACE>")

Шаг 5: Регистрация параметров и показателей

Теперь, когда мы объявили нашу экспериментальную переменную, мы можем регистрировать данные, которые можно хранить в Comet.ml. Например, мы можем регистрировать интересующие нас параметры и показатели. Comet.ml также предоставляет множество других опций, которые пользователи могут регистрировать, вы можете проверить их здесь. В нашем сценарии мы хотим регистрировать параметры нашей модели.

batch_size = 64
epochs = 5
EMBEDDING_SIZE = 50
learning_rate = 0.001
params={
    "batch_size":batch_size,
    "epochs":epochs,
    "embed_size":EMBEDDING_SIZE,
    "optimizer":"Adam",
    "learning_rate":learning_rate,
    "loss":"BinaryCrossentropy",
}
experiment.log_parameters(params)

Мы также хотим зарегистрировать наши потери двоичной кросс-энтропии (BCEloss) и среднеквадратичную ошибку (mse) по завершении одного эксперимента.

BCEloss = model.evaluate(x_val, y_val)
y_pred = np.squeeze(model.predict(x_val))
mse = MSE(y_pred, y_val)
metrics = {
    'BCEloss':BCEloss,
    'MSE':mse,
}
experiment.log_metrics(metrics)

Шаг 6: Завершите эксперимент

В Jupyter нам нужно указать, что эксперимент завершился с

experiment.end()

Оптимизатор

Comet.ml предоставляет действительно полезный класс под названием Optimizer, который мы можем использовать для поиска наилучшего набора гиперпараметров, который минимизирует/максимизирует метрику. Оптимизатор предложит, какие гиперпараметры попробовать дальше.

Для нашего сценария рекомендации фильмов мы хотели бы найти наилучшую комбинацию embedding_size, learning_rate и batch_size. Мы можем определить нашу оптимизацию следующим образом

config = {
    "algorithm": "bayes",
    "name": "Optimize Recommendation Network",
    "spec": {"maxCombo": 10, "objective": "minimize", "metric": "loss"},
    "parameters": {
        "embed_size": {"type": "discrete", "values": [10, 30, 50]},
        "learning_rate": {"type": "discrete", "values": [0.001, 0.0005, 0.0001]},
        "batch_size": {"type": "discrete", "values": [64, 128, 256]},
},
    "trials": 1,
}
opt = comet_ml.Optimizer(config)

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

Теперь нам нужно только получить эксперименты от нашего оптимизатора и обучить разные модели как таковые:

for experiment in opt.get_experiments(project_name="11695-comet"):
    epochs = 5
    batch_size = experiment.get_parameter("batch_size")
    EMBEDDING_SIZE = experiment.get_parameter("embed_size")
    learning_rate = experiment.get_parameter("learning_rate")
    model = build_model(experiment)
    train(experiment, model, x_train, y_train, x_val, y_val)
    evaluate(experiment, model, x_val, y_val)

    experiment.end()

Код нашего примера находится в этой ссылке на Google Colab🔗 (набор данных не предоставляется, но его можно легко создать самостоятельно!)

Визуализация

После запуска экспериментов и отправки всех журналов мы можем просмотреть их в Comet.ml.

Во-первых, мы можем нажать «эксперименты» под нашей рабочей областью. Здесь мы можем найти все эксперименты, которые мы только что провели с нашим оптимизатором. Все параметры были успешно зарегистрированы в Comet.ml. С помощью этого интерфейса мы можем легко сравнить значения всех параметров и увидеть их соответствующую MSE (которая является нашей метрикой).

Мы также можем перейти к «панелям» и создать довольно красочные диаграммы📊. Чтобы создать диаграмму (которую они называют «панелью»), мы можем нажать «+ добавить» в правом верхнем углу и выбрать «Новая панель».

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

Выберите диаграмму, которую хотите построить, и нажмите «Добавить». Установите заголовок, ось x, ось y.

Нажмите «Готово», и вы увидите это на своей панели! Согласно этой гистограмме мы можем легко найти эксперимент с самой низкой оценкой MSE и найти наш оптимальный набор гипараметров.

Отчет

В панели Comet.ml мы также можем создать отчет об экспериментах, и этот отчет будет виден вашим товарищам по команде или публике в соответствии с вашими настройками. Нажмите «Отчет», а затем «Новый отчет», будет предоставлен шаблон отчета, в который вы можете добавить текст, графики и таблицы, а графики и таблицы могут быть созданы непосредственно из выбранных экспериментов.

Совместное использование рабочей области

Comet.ml позволяет работать в команде, добавляя соавторов в рабочее пространство. (Действительно удобно для меня, когда дело доходит до групповых проектов в школе). Нажмите на свое имя пользователя на верхнем баннере и перейдите в «Настройки». Прокрутите вниз, чтобы найти раздел «Соавторы», и вы можете нажать «+ Соавторы».

Цены

  1. Сообщество: бесплатно (без совместной работы в команде🥲)
  2. Команды: 179 долларов США за пользователя в месяц.
  3. Teams Pro: 249 долларов США за пользователя в месяц.
  4. Academics: бесплатно (имеет те же функции, что и Teams!)

Сильные стороны

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

Ограничения

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

Заключение

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

Надеюсь, вам понравится этот блог и вы получите удовольствие от Comet.ml!😊

Ссылки и ссылки