Независимо от того, являетесь ли вы студентом, специалистом по данным или инженером по машинному обучению в компании, проведение экспериментов — это то, что постепенно встраивается в вашу ДНК 🧬. Независимо от того, используете ли вы разные алгоритмы обучения, гиперпараметры, этапы предварительной обработки данных или разные обучающие и тестовые данные, все это является частью ваших экспериментов. Теперь важный вопрос: «Как нам их отслеживать?» Если у вас есть какие-то механизмы отслеживания для записи всех ваших экспериментов, значит, вы уже хорошо задокументировали свои эксперименты! Если у вас его нет, то вам следует подумать об этом, так как это может повысить производительность и эффективность команды.

"Лучше опоздать, чем никогда" — моя любимая цитата о прокрастинации.

Для меня есть несколько этапов, когда я пытался отслеживать свои собственные эксперименты:

  1. Полагаясь на возможности памяти моего мозга, запоминая их все, включая гиперпараметры и их соответствующие результаты.
  2. Проведя 5 экспериментов, моя память начинает угасать. Поэтому я переключаюсь на текстовый редактор (например, Word, Google Docs) или что-то подобное.
  3. Так как мне лень писать, да и большинство из них в любом случае повторяются, я перешел на электронные таблицы. Я создаю документ Google Spreadsheet со всеми результатами в виде таблицы.
  4. Моя электронная таблица становится все больше и длиннее, и мне трудно ее понять. Затем я начал искать современные инструменты отслеживания экспериментов и с тех пор начал использовать один из них.

Даже если вы записываете это на бумаге формата А4, у вас уже получается лучше, чем у тех, кто ничего не делает для отслеживания своих экспериментов.

Что такое отслеживание экспериментов

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

  • Гиперпараметры (скорость обучения, оптимизатор и т. д.)
  • Модель (вы можете попробовать разные алгоритмы обучения или другую архитектуру модели)
  • Результаты показателей

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

Нам действительно это нужно?

В рамках проекта вы можете работать с несколькими специалистами по данным и инженерами по машинному обучению. Иногда некоторые из них просто хотят быстро запустить Jupyter Notebook. Имея это в виду, мы могли бы наткнуться на следующие проблемы:

  1. Все результаты эксперимента распределены по нескольким компьютерам. Возможно, в вашей команде есть член команды, проводящий эксперимент на своем личном ноутбуке, ПК, облачном экземпляре, Google Colab или даже в ядре Kaggle. Будет сложно управлять всеми метаданными в разных местах.
  2. Анализ их может оказаться намного более сложным, если не невозможным. То, как вы и члены вашей команды что-то отслеживаете, может различаться. Вы также можете забыть включить что-то, представляя свои эксперименты.
  3. Меньше сотрудничества и синергии внутри команды. Поскольку мы работаем в команде, очень важно делиться тем, что работает для вас и для кого-либо еще. Вы также можете попробовать различные настройки, которые пробует ваша команда, и выяснить, почему они работают.
  4. Невозможно наблюдать за экспериментами вживую. Во время экспериментов вы и ваша команда можете посмотреть, каковы потери и точность во время обучения модели (и, возможно, немедленно остановить прогон, если модель не сходится, чтобы не тратить часы GPU). Что еще более важно, вы можете напрямую отслеживать текущее потребление памяти, процессора и графического процессора (если вы его используете).

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

Стандартная практика отслеживания экспериментов

Я только начал работать Data Scientist в профессиональной рабочей среде год назад, и я приложил руку к различным проектам, связанным с рекомендательными системами, обучением ранжированию, компьютерным зрением, НЛП и т. д. Я замечаю, что каждая область имеет свои уникальные особенности. и общие компоненты. В целом за этими артефактами стоит следить:

  • Сценарии и коды (скрипты предварительной обработки, сценарии обучения и оценки, блокноты и т. д.)
  • Данные (обучающие и тестовые данные, поскольку вы можете использовать разные данные между прогонами)
  • Гиперпараметры
  • Метрики
  • И не забывайте об используемой среде (например, dockerfile, requirements.txt, config.yaml и т. д.).

Теперь вы можете спросить: «Что еще мы можем отслеживать?» В зависимости от типа проекта, над которым вы работаете, вы можете добавить несколько вещей для отслеживания:

  • Глубокое обучение: контрольные точки модели, лучшие веса модели, аппаратные ресурсы
  • Структурированные данные: графики SHAP, важность признаков
  • Оптимизация гиперпараметров: лучшие комбинации гиперпараметров
  • Компьютерное зрение: CAM (карты активации классов)
  • НЛП: объяснения прогнозов

Настройка отслеживания экспериментов

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

Таблицы

Очень распространенный рабочий процесс при работе с электронными таблицами:

  1. Начнем с большой таблицы.
  2. Пригласите соавторов.
  3. Поместите всю информацию из того, что мы получили в результате наших экспериментов, в электронную таблицу (что-то вроде копирования-вставки).
  4. Промыть и повторить.

Плюсы:

  • Легко настроить.
  • В некоторых случаях это работает.

Минусы:

  • Трудно установить версию (хотя в Google Spreadsheets есть собственная функция просмотра истории версий).
  • Нет механизма резервного копирования артефактов.
  • Когда он становится больше (больше экспериментов и больше членов команды), это становится проблемой.
  • Вы и ваша команда должны прийти к соглашению об именовании того, как заполнять таблицу. Например, вы придумали название модели: resnet16_freeze_linearlayer3_sgd_momentum_beta_0.98_lr001_acc082.pt. Отлично, теперь сделайте это снова с еще 5 гиперпараметрами и еще 3 метриками. Удачи в этом 🤣
  • Люди могут случайно изменить что-то в таблице и даже не узнают об этом!

Гитхаб

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

Плюсы:

  • Теперь мы можем версионировать наши метаданные.
  • Более организованный по сравнению с электронными таблицами

Минусы:

  • Хотя мы можем версионировать метаданные, сравнение более чем двух экспериментов будет болезненным.
  • GitHub не предназначен для отслеживания экспериментов.
  • Невозможно увидеть эксперименты вживую.

Собственные инструменты отслеживания экспериментов

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

Плюсы:

  • Адаптирован под функции, необходимые для вашей организации.
  • Более организованный по сравнению с электронными таблицами и Github.

Минусы:

  • Более требовательный, так как дополнительные функции всегда будут добавляться по пути.
  • Необходимо иметь специальную команду для его обслуживания (непрерывное обслуживание).

Современные инструменты отслеживания экспериментов

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

Плюсы:

  • Организованное и централизованное хранилище.
  • Более гибкий.
  • Сравнение между экспериментами проще.
  • Сохраните все свои метаданные.

Минусы:

  • Цена (ну… не совсем, если вам это действительно нужно для организации всех ваших экспериментов, несмотря на все проблемы, о которых я упоминал ранее)

Время для шоу!

Хватит теории! Теперь я покажу вам, как использовать один из существующих современных инструментов отслеживания экспериментов (поскольку мы видели, что современные инструменты отслеживания, вероятно, являются лучшим вариантом для отслеживания наших экспериментов). Инструмент отслеживания, который я буду использовать, называется neptune.ai. Вы также можете попробовать другие инструменты, которые вам больше всего подходят. Я считаю, что большинство современных инструментов отслеживания следуют следующим шагам:

  1. Конечно, вам необходимо зарегистрировать учетную запись (в данном случае neptune.ai). Вы можете получить бесплатно 200 часов мониторинга каждый месяц для отдельного рабочего пространства (на момент написания этой статьи). Однако, если вам нужно командное рабочее пространство, вам будет предоставлен бесплатный доступ на 14 дней (опять же, на момент написания этой статьи), а после этого вам нужно будет оплатить план подписки.

2. Далее устанавливаем зависимости:

pip install neptune-client

3. Запустите запуск мониторинга neptune.ai с вашим собственным именем проекта и токеном API из учетной записи neptune.ai:

import neptune.new as neptune
run = neptune.init_run(
    project="YOUR-PROJECT",
    api_token="YOUR-TOKEN",
)

4. Укажите, что вы хотите отслеживать:

# log important hyperparameters
parameters = {"n_estimators": 10, "criterion": "squared_error", "max_depth": 10, "min_samples_leaf": 5}
run["parameters"] = parameters
clf = RandomForestRegressor(**parameters)
clf.fit(X, y)

scores = cross_val_score(clf, X, y, cv=5)
# log the important metrics
run["val/mse"] = scores.mean()

run.stop()

5. Запустите сценарий обучения, как обычно, и задание будет отправлено на вашу панель управления. Устройтесь поудобнее и наслаждайтесь чашечкой кофе! ☕

python your_training_script.py

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

В этой статье мы обсудили, как инструменты отслеживания экспериментов могут улучшить наш рабочий процесс. Существует множество методов, с помощью которых мы можем попробовать начать отслеживать наши эксперименты. Однако, учитывая плюсы и минусы, кажется, что нужны как внутренние (если вы работающий специалист по данным или инженер по машинному обучению в большой команде), так и современные инструменты отслеживания экспериментов. Надеюсь, после прочтения этой статьи вы сможете весело провести время и начать собственное путешествие по отслеживанию собственных экспериментов. Удачных экспериментов! 😁

Рекомендации