Многое уже было сказано о современном стеке данных (MDS), но ситуация значительно более разбросана по стороне забора машинного обучения: после того, как данные правильно преобразованы, как они используются ниже по течению для создания ценности для бизнеса. ?

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

TL;DR

  • После принятия современного стека данных (MDS) организации все еще находятся на ранней стадии перехода к «управлению данными», и для достижения успеха MDS необходимо сочетать с MLOps и реальным программным обеспечением на основе данных;
  • Вы узнаете о проблемах работы с данными в растущей организации и о том, как их преодолеть, включая сквозной код, показывающий, как можно объединить DataOps и MLOps с современными инструментами с открытым исходным кодом. , такие как Metaflow и dbt;
  • Ключевым моментом является уровень абстракции, на котором работает: от данных до обслуживания, весь конвейер не нуждается ни в каком специальном человеке DevOps, работе с инфраструктурой или файлах yaml. SQL и Python — единственные языки в репозитории.
  • В следующем посте мы покажем, как хорошие инструменты позволяют лучше думать о разделении работы и производительности, тем самым предоставляя организационный шаблон для менеджеров и руководителей данных.

От современного стека данных к MLOps

Современный стек данных (MDS) был объединен в виде серии передовых методов сбора, хранения и преобразования данных. В частности, MDS включает в себя три столпа:

  • Масштабируемый механизм приема либо через инструменты (например, Fivetran, Airbyte), либо через инфраструктуру;
  • Хранилище данных (например, Snowflake), в котором хранятся все источники данных вместе;
  • Инструмент преобразования (например, dbt), обеспечивающий версионные, подобные DAG операции с необработанными данными с использованием SQL.

Уже много было сказано о MDS как таковой, но ситуация более разбросана по другую сторону забора: после того, как данные правильно преобразованы, как они потребляются ниже по течению для создания ценности для бизнеса ? В конце концов, прием и преобразование данных не является (для большинства компаний) самоцелью: в то время как технологические гиганты уже давно выяснили, как запустить модели в производство, большинство компаний все еще борются за производство модели с меньшими затратами. чем 3 месяца.

Подход, который мы использовали, заключался в том, чтобы принять тот факт, что не каждой компании требуется сложная и бесконечно масштабируемая инфраструктура, подобная той, что развернута Google и Metas по всему миру, и это совершенно нормально: выполнение машинного обучения в «разумном масштабе более полезно. и эффективнее, чем когда-либо, благодаря большой экосистеме поставщиков и решениям с открытым исходным кодом. В сопутствующем репозитории мы используем конвейеры глубокого обучения для обучения модели последовательным рекомендациям: если вы видите покупателя, взаимодействующего с k продуктами, что он собирается делать дальше? Мы…

  • целенаправленно избегайте игрушечных наборов данных и локальных развертываний;
  • предоставить готовый к облаку проект «разумного масштаба»;
  • показать, как обучение, тестирование и обслуживание (этапы MLOps) естественным образом встроены в конвейер, который начинается с данных и функций (этапы DataOps).

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

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

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

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

Вы можете найти видеоруководство в репозитории, руководящее этим постом, здесь:

Использование современного стека данных для машинного обучения

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

  • Данные хранятся и преобразуются в Snowflake, который обеспечивает базовые вычисления для SQL, включая преобразования данных, управляемые таким инструментом, как dbt;
  • Обучение происходит в AWS Batch с использованием абстракций, предоставляемых Metaflow;
  • Обслуживание осуществляется на SageMaker с использованием предложения PaaS от AWS;
  • Планирование выполняется в AWS Step Functions, снова используя Metaflow (не показано в репозитории, но просто достичь).

Важным моментом в дизайне является уровень абстракции, который мы выбрали для работы: весь конвейер не нуждается в каком-либо специальном специалисте DevOps, работе с инфраструктурой или файлах yaml. SQL и Python — единственные языки в репозитории: инфраструктура либо невидима (например, Snowflake прозрачно выполняет наши запросы dbt), либо декларативна (например, вы указываете тип необходимых вычислений, например GPU, и Metaflow делает это возможным).

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

Наш стек использует SQL DAG — созданную dbt — для выполнения необходимого преобразования необработанных событий покупок в последовательности взаимодействий с продуктами для нашей модели рекомендаций, и с помощью SQL мы достигаем двух важных целей:

  • во-первых, команда машинного обучения может работать непосредственно вне работы инженера-аналитика в единой среде (SQL — это, так сказать, язык межнационального общения данных);
  • во-вторых, мы перекладываем в Snowflake все (распределенные) вычисления, что упрощает работу с Python, поскольку на самом деле мы не привязаны к машинной памяти для агрегирования и фильтрации строк данных.

Сама обучающая часть представляет собой ванильную глубокую модель для сессионных репетиций, и от ее деталей ничего не зависит: те же принципы применимы и к более сложным моделям. Интересная часть заключается в том, что простой SQL-запрос, легко читаемый и поддерживаемый, — это все, что нужно для подключения подготовки функций и обучения глубокому обучению на графическом процессоре в облаке. Обучение модели создает артефакт (то есть готовую к использованию модель!), который теперь может генерировать прогнозы: рекомендуется проверить модель на невидимых данных перед ее развертыванием на реальном трафике, мы демонстрируем в test_model черновик продвинутой методики поведенческого тестирования.

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

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

Этот стек также можно запускать во все более сложных конфигурациях, в зависимости от того, сколько инструментов/функций вы хотите включить: даже при полной сложности это удивительно простой и автоматический стек для обработки терабайтного масштаба; Кроме того, все довольно развязано, поэтому, если вы хотите поменять SageMaker на Seldon или Comet на Weights & Biases, вы сможете сделать это на одном дыхании.

Полный стек содержит готовые подключения к платформе отслеживания экспериментов и (заглушку) пользовательской карты DAG, показывающей, как работает рекомендательная система в соответствии с RecList, открытой структурой команды Якопо для поведенческого тестирования. Мы могли бы написать статью только об этом (ну, мы на самом деле написали это, плюс две научные статьи): даже в качестве очень небольшой процедуры тестирования мы хотели обязательно включить ее в качестве общего напоминания о насколько важно понимать поведение модели перед развертыванием и насколько удобочитаемая, общедоступная документация с минимальным вмешательством имеет решающее значение для конвейеров машинного обучения в производственной среде.

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

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

Примечание.

Этот пост в блоге является результатом сотрудничества между Coveo, давним пользователем Metaflow, и Outerbounds. В Outerbounds мы несколько раз сотрудничали с Coveo в таких проектах, как Карты Metaflow и недавняя беседа у камина на тему Машинное обучение в разумных масштабах — вы не Google, и все в порядке. Для этого поста мы с Якопо из Coveo обсудили, как они используют Metaflow для соединения DataOps с MLOps, чтобы ответить на вопрос: после того как данные правильно преобразованы, как они используются в дальнейшем для создания ценности для бизнеса?

Благодарности

Особая благодарность: Сунг Вон Чунг из dbt Labs, Патрик Джон Чиа, Лука Бигон, Андреа Полониоли и Чиро Греко из Coveo. Все это было бы невозможно без фантастического набора данных, выпущенного Coveo в прошлом году, содержащего миллионы реальных анонимных покупок.

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

Первоначально опубликовано на https://outerbounds.com 28 июля 2022 г.