Netflix TechBlog | Medium на русском
Подписаться
Демократизация машинного обучения в Netflix: построение графа жизненного цикла моделей
Netflix использует машинное обучение в различных областях бизнеса, таких как персонализация, студийное производство, платежи и реклама. По мере роста использования машинного обучения возникла проблема: фрагментированная среда, где модели и данные были изолированы, что препятствовало сотрудничеству и обнаружению. Специалисты по машинному обучению испытывали трудности с пониманием происхождения моделей, источников признаков и их влияния в различных системах. Эта фрагментация мешала получить простые ответы на вопросы о существующих признаках, источниках данных, зависимостях конвейеров и последствиях изменений.Основная трудность заключалась в соединении разрозненных компонентов инфраструктуры машинного обучения, которые генерировали метаданные. Десятки систем, от оркестраторов конвейеров до платформ экспериментов и хранилищ признаков, производили данные в различных форматах. Решение этой задачи требовало сбора разнородных метаданных, преобразования их в единую модель и построения связанного графа для исследования.Решением является Сервис Метаданных (MDS), который строит Граф Жизненного Цикла Модели для взаимосвязи сущностей машинного обучения в Netflix. MDS в реальном времени обрабатывает метаданные машинного обучения, позволяя выполнять междоменные запросы, такие как идентификация экспериментов, использующих определенную модель, или моделей, имеющих общие признаки. Цель состоит в том, чтобы сделать все активы машинного обучения обнаруживаемыми, понятными и повторно используемыми по всей компании.MDS работает на основе основных абстракций: Компоненты, каждый с уникальным AIP URI; Сущности, которые являются специфичными для машинного обучения активами со свойствами; Типы Сущностей, определяющие формы данных; Домены, которые группируют связанные типы сущностей; и Поставщики, конкретные реализации доменов из исходных систем. Такое адресование на основе URI позволяет любой службе универсально ссылаться на любой актив машинного обучения. Процесс построения графа включает несколько этапов.Во-первых, MDS интегрируется с исходными системами через Kafka и AWS SNS/SQS для потребления легких событий, указывающих на изменения. Специальные обработчики событий обрабатывают события из таких систем, как Оркестратор Конвейеров, Реестр Моделей, Хранилище Признаков, Платформа Экспериментов и Платформа Идентификации. Во-вторых, MDS реализует контракт гидратации, проверяя события и вызывая API исходных систем для получения полного состояния, которое затем преобразуется в нормализованную сущность. Эта модель "уведомления об изменении" обеспечивает надежность против проблем с порядком событий, но создает нагрузку на чтение исходных систем.В-третьих, необработанные события преобразуются в единую модель сущностей со стандартизированными полями, создавая согласованный интерфейс для последующих потребителей. Нормализованные сущности стандартизируют имена полей, форматы и преобразуют идентификаторы, специфичные для платформы, в глобальные AIP URI. Наконец, нормализованные сущности сохраняются в Datomic для кэширования и хранения связей, и одновременно индексируются в Elasticsearch. Datomic, с его неизменяемой моделью фактов, поддерживает сложные обходы графа и связи сущностей, позволяя выполнять запросы по нескольким доменам без неэффективных паттернов запросов N+1.