Управление версиями моделей, отслеживание и электронные таблицы.

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

Искусственный интеллект и машинное обучение становятся неотъемлемой частью каждого продукта, будь то Ежедневные новости, терапия с использованием искусственного интеллекта или Автоматизированные инвестиции. Поскольку мы прямо или косвенно делегируем больше принятия решений моделям AI & ML, возникает вопрос:

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

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

Построение модели машинного обучения

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

В то время как при традиционной разработке программного обеспечения цель состоит в том, чтобы правильно и эффективно реализовать известную функцию, в AI & ML цель состоит в том, чтобы изучить функцию. В результате разработка модели машинного обучения - это экспериментирование. Специалист по обработке данных будет обрабатывать данные, создавать функции, обучать и тестировать модель и, в зависимости от результатов, вернуться и обновить данные или модель. Промыть и повторить.

Итак, сколько моделей в среднем строят специалисты по данным?

Чтобы определить количество моделей, построенных в ходе типичного проекта моделирования, во время моей докторской диссертации мы проанализировали данные соревнований Kaggle. В таблице ниже показано количество заявок, поданных командами-победителями в десяти различных соревнованиях Kaggle.

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

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

Так почему именно версии моделей?

  • Никогда не теряйте знания: если в команде AI & ML все знания о модели принадлежат одному человеку или его ноутбуку, все эти знания мгновенно исчезают, когда этот человек покидает компанию или проект. Кому-то еще в команде приходится часами повторять всю свою тяжелую работу. Напротив, наличие центральной системы управления версиями позволяет централизованно отслеживать работу и легко передавать знания.
  • Воспроизводимость модели. Учитывая эмпирический характер разработки машинного обучения, почти невозможно вспомнить «Какую версию набора данных я использовал для этого результата?», «Какую инициализацию я использовал для весов этого нейронного сеть? »или« Какие функции я применил к этим данным? » Эта информация приобретает решающее значение при воссоздании модели, например, когда необходимо откатить производственную модель до предыдущей версии или результаты исследовательской работы должны быть расширены до нового набора данных. Без надежного управления версиями воспроизводимость - несбыточная мечта.
  • Метаанализ. Поскольку проект длится несколько месяцев, команда AI & ML построит сотни моделей. Централизованная система управления версиями позволяет команде получать информацию о проведенных экспериментах, выявлять тенденции и выбросы, а также стратегии, которые остаются неизученными.
  • Отладка. Как и код, модели нуждаются в отладке. За исключением этого момента, отладка включает не только код, но также функции, параметры и знания предметной области. Система управления версиями дает вам инструменты для вычисления различий между моделями, изучения похожих моделей из прошлого и формулирования гипотез о том, почему модель не ведет себя так, как ожидалось.
  • Аудит: об этом можно много сказать! Как появилась эта модель? Какие итерации он прошел? А если вы работаете в регулируемой отрасли, то для ответа на запрос аудита важно составить документальный список, объясняющий, почему вы выбрали эту модель и набор функций среди множества других. Система управления версиями, которая отслеживает все эксперименты по моделированию, может значительно сократить или, если все сделано правильно, устранить накладные расходы на подготовку документов для аудита.

Какие сегодня распространенные хаки для управления версиями?

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

1. Структура папок как система управления версиями

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

2. Надежная таблица

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

3. Комментарии. Чисто и просто.

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

Но разве Git не решает проблему управления версиями моделей?

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

Модель = Код + Набор данных + Конфигурация + Среда

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

Будущее: специализированные системы управления версиями моделей

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

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

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

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

Так же, как Git и GitHub / GitLab / BitBucket в корне изменили способ разработки программного обеспечения, так и системы управления версиями моделей изменят способ разработки моделей.

TL; DR: Итак, что вы можете сделать?

  • Обучите свою команду управлению версиями моделей: этот блог, статьи здесь и здесь.
  • Ознакомьтесь с Open Source ModelDB здесь или подпишитесь на пробную версию Verta здесь.
  • У вас уже есть доморощенная система? Напишите нам, и мы будем рады помочь в оптимизации. Если ваша система уже работает, мы будем рады разместить вас в нашем блоге!
  • Если вы живете в районе залива Сан-Франциско, присоединяйтесь к нам на новой встрече Agile AI & ML и помогите продвигать стандарты сообщества в этой сфере.

Если вы нашли этот контент интересным, подпишитесь на рассылку новостей Verta!

О Манаси:

Манаси Вартак является основателем и генеральным директором Verta.ai, дочерней компании MIT, занимающейся производственным машинным обучением. Верта вырос из доктора Манаси. работа в MIT CSAIL на ModelDB. Ранее Манаси работал над глубоким обучением в составе команды рейтинга каналов в Twitter и над динамическим таргетингом рекламы в Google. Манаси увлечен созданием интуитивно понятных инструментов обработки данных, таких как ModelDB и SeeDB, которые помогают компаниям ориентироваться в первую очередь на ИИ и выясняют, как специалисты по обработке данных и организации, которые они поддерживают, могут быть более эффективными. Она получила степень бакалавра компьютерных наук и математики в WPI.

О Verta:

Verta.ai создает программное обеспечение для полного жизненного цикла модели машинного обучения, начиная с управления версиями модели и заканчивая развертыванием и мониторингом модели. Все это связано с возможностями совместной работы, поэтому ваши команды ИИ и машинного обучения могут работать быстро, не нарушая работу. Мы являемся отделением MIT CSAIL, где мы создали ModelDB, одну из первых систем управления моделями с открытым исходным кодом.