Работа над любой проблемой машинного обучения - это процесс творческой итерации. Помимо разработки программного обеспечения, он включает в себя, среди прочего, исследования, эксперименты и анализ результатов.

Написанный в псевдокоде, он будет выглядеть примерно так:

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

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

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

Запись каждой итерации креатива - это огромная ценность, так что вы можете отслеживать, что было сделано, что сработало, а что нет.

Что, если бы это был простой способ?

Как вы уже догадались, есть 😃

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

Ладно, давай перейдем к делу, ладно?

Злобно используйте теги

Добавление тегов - это глупо просто, поэтому не использовать эту функцию на самом деле ... ну, просто используйте ее, хорошо?

Вы можете добавить их в файл neptune.yamlconfig (подробнее о файле конфигурации здесь):

или добавьте его в команду терминала (подробнее об интерфейсе командной строки здесь):

или даже сделать это в браузере:

Трудно найти оправдание, чтобы не использовать его, да?

Теперь, когда у нас есть «как», давайте поговорим о «что». Что нужно добавить через теги?

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

Почему бы не пометить параметры? Вы могли бы, но эта информация легко доступна в столбцах, поэтому нет необходимости дублировать ее. Подробнее об использовании параметров в колонках читайте в этом посте.

Итак, у нас есть «как» и «что», давайте погрузимся в «почему», ладно?

Разделить и… отфильтровать

Настроить теги и параметры - это хорошо, но, в конце концов, вы делаете это, чтобы облегчить фильтрацию ваших экспериментов.

Давайте посмотрим, как это сделать на приборной панели Neptune.

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

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

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

Например, во время работы над проектом Salt-Detection (кстати, вы можете изучить этот общедоступный проект здесь) во время одной из творческих итераций мы поняли, что наша модель испытывает большие проблемы с обнаружением небольших объектов, которые находятся близко к граница изображения. Мы изучили различные идеи решения этой проблемы, такие как расширение цели и функция потерь, адаптированная для небольших объектов. Давайте создадим фильтр, который показывает наши усилия в этой области:

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

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

Вывод

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

P. S.

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

Не стесняйтесь задавать вопросы или делиться своими панелями в комментариях ниже.