Сэмюэл Паттерсон, Никлас Хёниг, Атеф Аттиа, Мануэль Хеллер, Зузанна Чеховска и Крис Ликуриноу
Как команда инженеров по машинному обучению (ML) и специалистов по данным, работающих в медиа-компании, мы создаем и поддерживаем множество инновационных решений, начиная от создания контента и рекомендательных систем и заканчивая оптимизацией программ.
Часто нам поручают протестировать новые идеи для вариантов использования в масштабах всей компании, и мы несем ответственность за превращение наших успешных доказательств концепции в продукты с добавленной стоимостью для бизнеса.
Один конкретный продукт мы разрабатываем, анализируем и оптимизируем телевизионные рекламные кампании. Это позволяет нашим клиентам принимать решения на основе данных о своих рекламных стратегиях и оптимизировать свои телевизионные кампании для достижения максимального эффекта.
Недавно нам нужно было оценить и настроить новую модель машинного обучения в рамках этого продукта, а затем развернуть ее в производственной среде с гарантией качества и без огромных усилий на разработку или эксплуатацию.
Здесь нам и пригодится Metaflow. Metaflow – это библиотека Python, упрощающая разработку, развертывание и масштабирование рабочих процессов машинного обучения.
В этой статье мы покажем вам, как мы используем Metaflow для оценки и производства новой модели машинного обучения для пакетного прогнозирования трафика веб-сайта в нашем продукте для оптимизации кампаний. Мы также расскажем о некоторых ключевых проблемах, с которыми мы столкнулись, и о том, как мы их преодолели с помощью Metaflow.
Как мы используем Metaflow
Наша работа над новой моделью проводилась в два основных этапа: этап оценки и выбора модели и этап производства модели.
Эти этапы можно увидеть в высокоуровневом процессе MLOps, за которым мы следим ниже. Здесь вы также можете увидеть, где мы используем Metaflow для наших трех основных конвейеров: оценка модели, обучение модели и вывод.
На конвейере оценки модели мы решили основную сложность разработки нашей новой модели. Решение этой сложности на раннем этапе проекта в рамках такого продукта, как Metaflow, означало, что более поздняя работа по разработке конвейеров обучения и логического вывода для производства стала довольно простой, но об этом позже.
Сложность оценки модели возникает из-за необходимости сравнивать множество различных конфигураций, которые может иметь модель, от выбора признаков, импутации и выбора алгоритма до гиперпараметров, а также перекрестной проверки для различных обучающих и тестовые сплиты и разные наборы независимых данных о клиентах.
Цель сравнения всего этого — найти оптимальную конфигурацию модели для использования в производстве. Это также помогает нам понять компромиссы в этих вариантах, таких как минимальный объем обучающих данных, необходимых для нового клиента, и уменьшающееся улучшение качества модели по мере того, как мы используем больше обучающих данных.
Для этого мы использовали функциональность Metaflow for-each-loop для параллельного запуска и оценки нескольких экспериментов, что значительно ускорило цикл разработки. На диаграмме ниже показано, как выглядит получившийся конвейер.
В конфигурации оценки, входной для конвейера, мы можем указать несколько параметров для каждого параметра. Например, мы можем указать продолжительность обучения в одну неделю, две недели, четыре недели или шесть недель.
Затем на шаге кросс-продукта конвейера Metaflow мы объединяем все настройки параметров обучения модели друг с другом, чтобы создать набор обучающих экспериментов для выполнения. Например, если мы хотим протестировать две разные модели с четырьмя разными продолжительностями обучения в течение десяти временных промежутков между обучением и тестированием, то шаг перекрестного произведения приведет к 2x4x10=80 различным экспериментам для каждого шага. Использование Metaflow для этого означало, что потенциальные проблемы с масштабированием экспериментов, подобных этому, стали легко решаемыми.
Наконец, поскольку не все эксперименты можно прямо и осмысленно сравнивать друг с другом, мы реализовали специальный этап оценки и агрегирования, чтобы объединить все эксперименты для расчета соответствующих показателей, которые нас интересуют. step также отвечает за публикацию агрегированных результатов в формате, который мы затем можем использовать для нашего ручного обзора результатов, чтобы выбрать лучшие варианты для использования в производстве.
Проблемы, которые мы преодолели с помощью Metaflow
Переход от проверки концепции к модели в производстве
Производство прототипа концепции может быть трудным переходом для любого продукта. В частности, в отношении продуктов машинного обучения необходимо учитывать множество факторов, таких как масштабируемость конвейеров, надежность модели, а также инфраструктура, необходимая для ее запуска.
Metaflow упрощает этот процесс, предоставляя гибкую структуру для создания и развертывания конвейеров машинного обучения, которые можно тестировать локально, легко адаптировать и повторно развертывать без ручных усилий и с минимальными различиями между средами.
Реализовав нашу логику оценки модели в пакете Python и используя ее в конвейере оценки, мы смогли повторно использовать основные функции при разработке конвейеров обучения и логического вывода, уменьшив усилия по их реализации и избежав возможных ошибок. от, скажем, копирования кода из Jupyter Notebook в продуктивную кодовую базу.
Локальная разработка и разработка на AWS без накладных расходов
Работа с моделью и логикой конвейера как локально, так и на AWS может занимать много времени и ресурсов. Удобство локальной работы может быть полезно для начала, но масштабирование для одновременного запуска нескольких экспериментов довольно сложно без возможности передать выполнение в облачную среду.
С Metaflow этот процесс упрощается за счет предоставления стандартного интерфейса для запуска рабочих процессов как на локальных компьютерах, так и в инфраструктуре AWS. Это позволяет нам разрабатывать новую логику локально, тестировать ее работу как локально, так и в AWS, а затем, наконец, развертывать ее как продуктивную пошаговую функцию в AWS.
Стандартизация повторяемых экспериментов
Чтобы гарантировать воспроизводимость наших оценочных экспериментов и то, что результирующая конфигурация модели будет работать одинаково в продуктивных конвейерах, мы стандартизируем способ обучения и тестирования модели.
Как упоминалось выше, мы использовали функциональность Metaflow для каждого цикла, чтобы запустить одну и ту же логику эксперимента с несколькими конфигурациями моделей и наборами данных для обучения. Кроме того, мы использовали конвейерную структуру scikit-learn, которая позволяет нам легко подключать альтернативные модели с различными функциями, нормализацией данных и этапами импутации.
После того, как мы были довольны оценкой модели, результатом наличия стандартизированной логики для обучения и тестирования многих экспериментов стало то, что одна и та же логика стала легко переноситься в конвейеры продуктивного обучения и логического вывода.
Регулярная оценка моделей на новых данных
Чтобы наши модели машинного обучения оставались точными с течением времени, нам необходимо регулярно оценивать их на новых данных.
Metaflow упрощает этот процесс, предоставляя способ планирования рабочих процессов для запуска через регулярные промежутки времени. Вместо того, чтобы проводить нашу оценку в Jupyter Notebook, или в другой кодовой базе, или в другой инфраструктурной среде, наш конвейер оценки работает с использованием точно такой же базовой кодовой базы с модульным тестированием, что и наше продуктивное решение, а через Metaflow он работает в эквивалентном среда развертывания, а также.
Это позволяет нам регулярно оценивать наши модели на новых данных, чтобы убедиться, что они по-прежнему точны, и определить потенциальные возможности для улучшения нашей конфигурации, будучи уверенными, что любые необходимые изменения в модели будут так же легко переносятся в рабочую среду, как и в первый раз.
Следующие шаги
Мониторинг обучения и вывод
Теперь, когда модель стабильно работает в производственной среде, мы настраиваем мониторинг для отслеживания качества результатов обучения и логического вывода, чтобы убедиться, что они остаются такими, как ожидалось. Как и в случае с другими действиями от перехода к производству, поскольку мы упаковали код из оценки, используемой для оценки экспериментов, это оказывается простым процессом повторного использования логики с гарантией того, что показатели качества эквивалентны тому, что мы используется в первоначальной оценке.
Оценка новых вариантов
Наряду с регулярным повторным запуском конвейера оценки для новых данных, чтобы убедиться, что выбор конфигурации нашей модели по-прежнему верен, мы также планируем использовать конвейер оценки для изучения новых идей для алгоритмов или функций ML и легко сравнивать их с нашей текущей моделью в качестве основы. . Если мы сможем показать, что новая идея для настройки модели превосходит текущую производственную модель, то все, что нам нужно будет сделать, — это переключить конфигурацию производственной модели на использование улучшенной настройки.
Заключение
Metaflow — это мощный инструмент для разработки, запуска и масштабирования рабочих процессов машинного обучения.
Используя Metaflow в сочетании с хорошо организованной кодовой базой для размещения базовой логики, мы смогли преодолеть некоторые распространенные проблемы при разработке новой модели за короткий промежуток времени, при этом рассматривая множество различных вариантов ее обучения.
Затем это решение помогло нам перенести нашу принятую конфигурацию модели в конвейеры производственного обучения и логических выводов с гарантией качества модели и без особых усилий или неожиданностей.
Попутно использование Metaflow также помогло ускорить разработку, позволив нам разрабатывать локально и на AWS без дополнительных затрат, стандартизировав наши эксперименты для получения воспроизводимых и сопоставимых результатов.
Наконец, конвейер оценки, который мы использовали при разработке исходной модели, можно использовать для регулярной оценки наших моделей на новых данных с четким путем к производству новых конфигураций моделей, если мы обнаружим улучшение.
Исходя из нашего опыта того, как он помог нам перейти от идеи к производству, мы, безусловно, рекомендуем Metaflow другим командам и рады продолжать использовать его в нашем продукте.
Мы надеемся, что вам понравился этот взгляд на мир машинного обучения на ProSiebenSat.1, и вы получили новые знания. 💡
Если вас интересуют другие темы, связанные с данными, ознакомьтесь с другими статьями нашего блога Применение моделей машинного обучения в медиакомпании или Две недели из жизни специалиста по данным. 🙌