Записки из промышленности

Уроки по платформам машинного обучения - от Netflix, DoorDash, Spotify и других

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

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

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

«Впитывай то, что полезно, отбрасывай бесполезное и добавляй то, что конкретно твое»

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

Этот пост содержит:

  • Общий обзор распространенных компонентов платформы машинного обучения
  • Таблица инструментов, используемых каждой компанией
  • Замечания о компонентах
  • Пользовательский опыт платформы
  • Сводка возможностей, уникальных для определенных компаний

Общие компоненты платформы ML

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

Объяснение общих компонентов:

  • Магазин функций: сервис, который хранит пакетные и потоковые функции и обслуживает функции как для автономного, так и для онлайн-использования. Хранилище функций обычно поддерживает обслуживание с малой задержкой, гарантирует согласованность между автономными и онлайн-функциями, а также позволяет вносить вклад и получать доступ к функциям для разных команд. Если вы хотите узнать больше о магазинах функций, прочтите статью Юджина Яна Магазины функций - Иерархия потребностей.
  • Оркестровка рабочего процесса: задания по обучению моделей часто представлены в виде ориентированного ациклического графа (DAG) и нуждаются в инструменте, который организует выполнение задач. Группы DAG могут варьироваться от простого двухэтапного DAG (обучение модели) - ›(проверка модели) до сложных структур, включающих настройку гиперпараметров и несколько моделей. Я не буду вдаваться в конвейер обучения модели в качестве компонента, потому что обычно платформа обрабатывает оркестровку, а то, что происходит при обучении модели, зависит от специалистов по данным.
  • Реестр моделей: здесь хранятся обученные модели. Также записываются метаданные модели об обучающем наборе, гиперпараметрах, показателях производительности и т. Д. Обычно существует пользовательский интерфейс, с помощью которого пользователи могут проверять свои модели.
  • Обслуживание модели: эта система извлекает модели из реестра моделей, извлекает функции из хранилища функций и выводит прогнозы. Прогнозы отправляются в другую производственную систему (например, в службу рекомендаций по продуктам) или сохраняются в базе данных в случае пакетной оценки. В качестве альтернативы, иногда модели встраиваются в производственные службы, чтобы минимизировать задержку, и отдельной службы обслуживания моделей не существует.
  • Мониторинг качества модели: жизнь модели начинается с момента ее развертывания. Чтобы убедиться, что он живет осмысленной жизнью, вам необходимо отслеживать его эффективность на основе данных в реальном времени. Не показано на схеме, система мониторинга может передавать метрики обратно в реестр модели или некоторый пользовательский интерфейс и подключаться к системе предупреждений.

Инструменты, используемые каждой компанией

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

IH означает, что они создали компонент собственными силами, а названные инструменты имеют открытый исходный код.

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

Предостережение: это необъективный образец. Большинство из этих компаний - крупные, B2C, базирующиеся в США, и у них есть многочисленные возможности для решений машинного обучения. Их требования к системам машинного обучения могут не соответствовать требованиям вашей организации. Все это означает, что вам могут не понадобиться все компоненты, которые у них есть.

Примечания к вышеприведенной таблице

У каждого есть модельный реестр

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

2021: Год Feature Store FOMO

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

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

Оркестровка рабочего процесса

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

Модель сервировки

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

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

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

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

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

Мониторинг качества модели

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

Некоторые возможности мониторинга качества моделей, предоставляемые платформами:

  • Отслеживайте распределение входных и выходных данных модели во времени. У DoorDash, Booking.com и Uber есть такая возможность. Когда прогнозы не соответствуют действительности, легче определить, является ли это проблемой с данными и какие входные данные вызвали проблему, визуализируя изменение распределений. Эта возможность также включает предупреждения о сдвигах в распределении функций.
  • Обнаружение дрейфа концепции. Дрейф может вызвать переобучение модели на более свежем наборе данных.
  • Прогнозирующая производительность вычислительной модели при появлении меток. Некоторые платформы обеспечивают вычисление и мониторинг предопределенных показателей, таких как AUC и точность / отзыв.

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

Пользовательский опыт платформы

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

Как пользователи взаимодействуют с платформой

Пользователи обычно взаимодействуют с компонентами посредством:

  • Пользовательские интерфейсы
  • Файлы конфигурации
  • API / библиотеки

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

Файлы конфигурации упрощают выполнение определенных задач. Например, пользователи платформы Intuit могут определять задания по обучению модели в конфигурации YAML и указывать такие параметры, как источник данных обучения, источник данных проверки и вычислительные ресурсы. Платформа Intel позволяет пользователям определять графы вывода моделей в YAML как абстракцию над Seldon Core.

Заметное использование API / библиотек заключается в упрощении доступа к функциям. Общей для нескольких магазинов функций является возможность переключаться с пакетных на онлайн-функции с помощью одной смены строки. Например. От client.get_batch_features до client.get_online_features. В качестве еще одного примера библиотек Spotify имеет интерфейс командной строки, который помогает пользователям создавать образы Docker для компонентов Kubeflow Pipelines. Пользователям редко нужно писать файлы Docker.

Специалисты по анализу данных от начала до конца решают проблему машинного обучения

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

Поддержка модели Python

Python - это язык науки о данных, и компании в конечном итоге понимают, что им нужно предоставить дорогу для развертывания моделей Python. Экосистема Uber и Booking.com изначально была основана на JVM, но расширилась за счет поддержки моделей / скриптов Python. Spotify интенсивно использовали Scala на первой итерации своей платформы, пока не получили такие отзывы:

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

Уникальные возможности платформы

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

Простое тестирование производительности и предложения по вычислительным ресурсам

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

Отслеживание последующих потребителей

В документе «Скрытый технический долг в системах машинного обучения» от Google показаны проблемы с необъявленными потребителями нижестоящего уровня - системами, которые потребляют результаты вашей модели, не сообщая вам об этом. Цитировать:

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

Связанная с этим проблема в разработке программного обеспечения - это изменение контракта API. Если у вашего сервиса есть несколько потребителей, вы должны быть очень осторожны, чтобы не изменить свой API обратно несовместимыми способами. Для моделей машинного обучения не так ясно, что представляет собой «обратно несовместимое» изменение данных. Незначительное изменение в определении ввода (скажем, при возникновении нулей) может вызвать неожиданное поведение.

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

Поощряйте идемпотентность

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

Регистрируйте входные и выходные данные ваших онлайн-моделей

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

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

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

Состав модели

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

Механизм вывода Paypal поддерживает гибкую композицию моделей. Например, модель A передается в модель B, и в зависимости от вывода вызываются модели C или D. Другая схема - запускать разные модели на одних и тех же данных для сравнения производительности. Seldon Core, используемый Intel, предоставляет аналогичные возможности для построения моделей.

Заключение

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

использованная литература