Автор: Ноэль Чен, Ци Цзян.
Обзор
В настоящее время в наших повседневных системах обычно используется компонент машинного обучения. Наличие платформы для отслеживания наборов данных, истории экспериментов и изменений кода имеет решающее значение для специалистов по данным и инженеров по машинному обучению, чтобы эффективно отслеживать свою работу. 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 позволяет работать в команде, добавляя соавторов в рабочее пространство. (Действительно удобно для меня, когда дело доходит до групповых проектов в школе). Нажмите на свое имя пользователя на верхнем баннере и перейдите в «Настройки». Прокрутите вниз, чтобы найти раздел «Соавторы», и вы можете нажать «+ Соавторы».
Цены
- Сообщество: бесплатно (без совместной работы в команде🥲)
- Команды: 179 долларов США за пользователя в месяц.
- Teams Pro: 249 долларов США за пользователя в месяц.
- Academics: бесплатно (имеет те же функции, что и Teams!)
Сильные стороны
- Comet.ml поставляется с функциями управления пользователями и позволяет делиться проектами внутри команды.
- Comet.ml обеспечивает простую интеграцию с несколькими языками программирования и платформами.
- Его пользовательский интерфейс визуализации обеспечивает визуальное сравнение различных экспериментов, включая коды, гиперпараметры, метрики и т. д. Он также может визуализировать входные данные изображения, аудио, текста и табличных данных.
Ограничения
- Comet.ml не поддерживает многие методы визуализации, такие как сглаживание метрической диаграммы и ползунок шаг/эпоха, позволяющий сравнивать этапы/эпохи.
- Comet.ml использует фиксированные цены вместо цен на основе использования, что не обеспечивает гибкости для масштабирования в зависимости от количества экспериментов.
Заключение
Comet.ml — это мощный инструмент для машинного обучения в продакшене. Он обеспечивает простую интеграцию с несколькими языками программирования и платформами, конвейерные эксперименты, динамическую визуализацию, совместное использование проектов и управление ими в команде. Однако ни один инструмент не идеален. Comet.ml также имеет ограничения по цене и параметрам визуализации. Мы также предлагаем практическое применение Comet.ml к данным рекомендаций фильмов, чтобы вы могли опробовать этот инструмент.
Надеюсь, вам понравится этот блог и вы получите удовольствие от Comet.ml!😊
Ссылки и ссылки
- https://www.comet.ml/docs/python-sdk/keras/
- https://www.comet.ml/docs/python-sdk/introduction-optimizer/#optimizer
- https://www.comet.ml/site/announcing-comet-artifacts/
- https://www.comet.ml/site/introduction-comet-mpm-model-production-monitoring/
- https://www.comet.ml/site/introduction-panels-custom-visualizations-for-machine-learning/
- https://neptune.ai/blog/the-best-comet-ml-alternatives