Кризис воспроизводимости в машинном обучении реален — вот что мы можем с этим поделать

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

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

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

Или как мы отслеживаем, оцениваем и оцениваем наши модели?

Или о том, как мы можем обеспечить воспроизводимость?

Как мы принимаем во внимание различные другие вещи, которые мы пробуем, такие как n-граммы всех размеров, TF-IDF, удаление стоп-слов, специальные символы, все гиперпараметры, которые мы в конечном итоге настраиваем ниже по течению, и все другие вещи, которые мы строчишь в нашем молескине?

Зачем нам нужно управление экспериментом?

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

CACE Принцип

Cвисит Aничего Cвисит Eвсе

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

Вот почему нам нужно управление экспериментом.

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

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

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

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

Как мы должны управлять нашими экспериментами?

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

Однако большинство специалистов по данным, с которыми я разговаривал… этого не делают.

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

"Что?!

Что не так с Git'ом?

Разве я не могу просто использовать Git для всего этого?

Git недостаточно?»

Смотри, Git это круто. Это наверняка сохранит весь ваш код.

Но иногда самого кода недостаточно… так что же нам делать?

Гит. Совершить. Все.

В лучшем случае мы можем пометить ветку, чтобы, скажем, оставить сообщение коммита, в котором говорится что-то загадочное вроде «Эта ветка сработала» или «Final Final v2.2, 3-gram, TF-IDF, HuggingFace».

Однако Git создавался не для этого.

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

Конечно, у вас есть код, но вы получите доступ к самой важной для вас информации только в том случае, если прогоните код от начала до конца.

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

Если вы немного более дисциплинированы, вы можете использовать электронную таблицу для отслеживания всего, как эта (которая, честно говоря, не такая уж впечатляющая или сложная):

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

Мы не обязаны так работать.

Настройка и обслуживание ваших моделей прокладывает путь к более быстрой итерации моделей и более плавному развертыванию. Узнайте больше в нашей серии вебинаров по управлению экспериментами.

Управление экспериментами помогает управлять логистической логикой, присущей итеративному характеру разработки машинного обучения

«Харприт… Слушай, чувак, все в порядке. Но у меня есть наука, братан.

Я понимаю, вы не хотите все это слышать.

Как ученые, мы хотим сосредоточиться на науке!

Не инженерная.

Или воспроизводимость.

Или переменные окружения.

Или файлы конфигурации.

Или все другие артефакты и прочее, что отслеживается.

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

Вы, вероятно, чувствуете, что вам не нужны многие из этих фрагментов информации… пока вы не нуждаетесь.

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

И когда это произойдет, как этот человек (будущий вы или нынешний сотрудник) должен выяснить сквозной процесс проведения эксперимента?

У меня нет ответов на все вопросы, но я думаю, что важно начать этот разговор.

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

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

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

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

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

Если вам интересно, с чего начать стандартизацию вашего экспериментального процесса, обязательно ознакомьтесь с этой бесплатной электронной книгой от Comet.

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

Дайте мне знать ваши мысли в комментариях.

Также обязательно ознакомьтесь с нашими полными сеансами рабочего времени на YouTube!

И помните, друзья мои: у вас одна жизнь на этой планете, почему бы не попробовать сделать что-то большое?

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

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

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