Соавторы: Анушка Датта, Манси Гоял.

В наши дни модели машинного обучения повсюду, от вашего голосового помощника (Siri, Alexa) до потрясающих рекомендаций по песням, сделанных вашим Spotify! Создание успешных моделей машинного обучения - это искусство. Это итеративный процесс, в котором инженеры и ученые собираются вместе, чтобы научить компьютеры учиться на своем опыте. Эти модели требуют значительного количества времени и усилий для достижения оптимальной производительности.

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

Что такое "Вес и предубеждения"?

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

Проще говоря: Weights & Biases (wandb) - это общий журнал командного прогресса. Универсальный пункт назначения для всего, что связано с вашей следующей моделью машинного обучения. Отслеживайте эксперименты вашей команды с машинным обучением, регистрируйте гиперпараметры и визуализируйте результаты. Вот список их модульных инструментов (взятых с их веб-сайта):

  • Панель управления: отслеживание экспериментов
  • Артефакты: управление версиями наборов данных, управление версиями моделей.
  • Sweep: оптимизация гиперпараметров.
  • Отчеты: сохраняйте воспроизводимые результаты и делитесь ими.

Wandb нацелен на следующие категории пользователей:

  • Практики: обучите и оцените модельный конвейер; поделитесь результатами.
  • Команды: документируйте прогресс и сотрудничайте внутри и вне команды; выявлять проблемы с производительностью и устранять их;
  • Enterprise: помогает защитить данные; повысить производительность и эффективность; централизованное управление и мониторинг моделей в производстве;

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

Наши эксперименты с wandb

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

  • wandb можно легко настроить для любого проекта Python. Для этого мы должны сначала установить пакет с помощью нашего установщика пакетов. Мы использовали pip:
 $ pip install wandb
  • Затем мы должны войти в нашу учетную запись wandb.ai, чтобы получить доступ к журналам.

  • Затем мы можем импортировать библиотеку в файл .py, который мы используем. wandb.init () порождает новый фоновый процесс для регистрации данных для запуска, а также по умолчанию синхронизирует данные с wandb.ai, чтобы вы могли видеть живые визуализации. Параметры можно установить, как показано здесь.
import wandb
wandb.init(project=”Movie recommendation”, name=”L3", notes= “For AI Engg”, reinit= True, save_code=True)
  • После этого наша среда настроена, и мы сможем увидеть домашнюю страницу нашей учетной записи, перейдя по адресу https://wandb.ai/ ‹username›

Теперь, когда наша среда настроена, мы готовы к визуализации!

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

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

table = wandb.Table(data = tsne, columns = [“Feature1”, “Feature2”])
wandb.log({“Users” : wandb.plot.scatter(table, “Feature1”, “Feature2”)})

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

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

wandb.log({‘recommendation time’ : (response_time — request_time)})

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

times = np.hstack((times, np.asarray([(response_time — request_time)])))
wandb.log({“time”: wandb.Histogram(times)})

Вот окончательные рекомендации по фильму, возвращенные нашей моделью, как показано на панели инструментов wandb:

table = wandb.Table(data=user_recs, columns=[“User”, “Recommendations”])
wandb.log({“User recommendations” : table})

Сильные стороны и ограничения wandb

Наши эксперименты с Wandb дали нам хорошее представление о многих особенностях WandB. Вот наш взгляд на то, что сработало для нас, а что нет:

Сильные стороны:

  1. Дружественный пользовательский интерфейс: мы обнаружили, что им легко пользоваться! Этот инструмент похож на github для ML-разработки!
  2. Панель инструментов для отслеживания прогресса команды.
  3. Хороший инструмент для отслеживания обучения моделей глубокого обучения с течением времени. Например: мы можем использовать его для отслеживания скорости обучения, потерь, точности в нейронной сети с течением времени, а также визуализировать гистограммы весов и смещений (так глупо).
  4. Расширяет возможности сотрудничества между командами. Например, есть прозрачность в том, кто пробует какой подход, и, следовательно, избегать лишней работы.
  5. Позволяет управлять версиями данных и записных книжек.
  6. Поддерживает интеграцию для ряда языков и фреймворков! (Полный список здесь.)
  7. Автоматическое создание отчетов и журналов. Эти отчеты фиксируют все, от результатов модели до оптимизации системы, гарантируя, что ваша следующая командная презентация станет большим успехом!

Ограничения:

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

Кроме того, wandb не поддерживает R и Scikit-Optimize.

Вывод

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

Пссш .. Студенты получают одну бесплатную команду! Подпишитесь на это!