Netflix TechBlog | Medium на р... Заметка

Netflix TechBlog | Medium на русском

Блог Netflix Tech Blog рассказывает о том, как Netflix работает с технологиями. Они проводят исследования в области науки о данных, инженерии, дизайна и технологических инноваций. Они демонстрируют свои инновации, такие как собственная сеть доставки контента, и рассказывают о своих усилиях по обеспечению надежности сервиса.

Трэд заметок

Netflix стремится предоставлять участникам контент, который им понравится, с помощью персонализированных визуальных материалов, таких как обложки и видеопревью. Значительная проблема возникает с новыми названиями, где недостаток данных о взаимодействии препятствует эффективной персонализации, что известно как проблема холодного старта. Традиционно модели рассматривали материалы как непрозрачные идентификаторы, полагаясь на эвристику популярности до накопления достаточного количества данных. Это означало, что персонализация для нового контента задерживалась, влияя на опыт обнаружения.Решение Netflix заключается в использовании мультимодальных вложений, позволяющих моделям "видеть" и "слышать" материалы. Кодируя обложки с помощью CLIP, предварительно обученной модели изображения-текста, материалы приобретают визуальное понимание. Это вложение CLIP объединяется с вложением идентификатора материала, создавая более богатое представление, которое улавливает визуальные темы и таланты. Это позволяет персонализировать контент на основе предпочтений участников в отношении визуальных стилей, еще до того, как у материала появится история взаимодействий, способствуя передаче знаний между названиями.Этот подход также позволяет консолидировать модели, объединяя отдельные модели для разных холстов обложек в одну унифицированную модель. Поскольку вложения CLIP в значительной степени инвариантны к обрезке и изменению размера, почти идентичные рендеринги обложек отображаются в схожие векторы. Это объединение сигналов взаимодействия по холстам, особенно выгодное для холстов с малым количеством данных, позволяет одной модели персонализировать все размещения обложек. Для решения проблемы дисбаланса данных по холстам используется взвешивание на основе вознаграждения, при котором взаимодействия приоритизируются на основе их долгосрочной ценности, а не объема показов.Эффективность этого подхода была подтверждена в ходе офлайн-оценок с использованием обратного взвешивания по вероятности и крупномасштабных A/B-тестов. Объединение вложений изображений с унифицированной моделью (V3) значительно превзошло модели, имеющие только одно из этих улучшений. Этот комбинированный подход оказался решающим во время крупного редизайна домашней страницы Netflix, где был представлен доминирующий холст с минимальными историческими данными. Унифицированная модель с вложениями CLIP успешно персонализировала контент для этого нового макета, показав статистически значимые улучшения в метриках обнаружения и часах просмотра, подчеркнув силу мультимодальных вложений для преодоления проблемы холодного старта.
Netflix в настоящее время использует два автоскейлера Flink, стремясь перейти к одному решению с открытым исходным кодом. Изначально они разработали собственный автоскейлер для управления тысячами заданий Flink, который оказался эффективным, но имел ограничения в обработке сложных заданий с несколькими операторами. Эта самодельная система полагалась на внешние метрики, которые могли быть неточными или упускать внутренние проблемы заданий. Позже сообщество Apache Flink разработало более совершенный автоскейлер, который анализирует данные непосредственно из самого задания. Этот второй автоскейлер оценивает фактическую скорость обработки оператора для определения оптимальной параллельности на вершину. Netflix склоняется к этому решению с открытым исходным кодом из-за его способности масштабировать задания с состоянием и обеспечивать гранулированную настройку. Внедрение автоскейлера OSS в Netflix потребовало значительной адаптации, включая интеграцию его в существующую плоскость управления. Они также внесли изменения в среду выполнения Flink для лучшего сбора метрик и обработки специфических структур заданий, таких как графы с прямыми связями и ограничения приемников. Приняв автоскейлер OSS, Netflix добился существенной экономии средств и улучшил использование ресурсов. Извлеченные уроки подчеркивают, что качество метрик имеет решающее значение, настраиваемые значения по умолчанию полезны, а принятие существующих решений перед их расширением является мудрой стратегией. Они планируют полностью перейти на автоскейлер на базе OSS для оптимизации операций.
CdXz5zHNQW_HJCpS7bDND.png
Netflix создала распределенный граф в реальном времени для предоставления аналитики в реальном времени своим внутренним партнерам, а третья часть этой серии статей посвящена эффективному запросу к графу. Граф представляет собой сложную сеть из миллиардов узлов и ребер, и для запроса к нему требуется быстрый и гибкий слой обслуживания. Авторы обсуждают проблемы запроса к графу, включая обработку широкого спектра шаблонов доступа и поддержку как "мелких-широких", так и "глубоких-узких" запросов. Они объясняют, как спроектировали слой обслуживания для эффективного запроса к графу, используя обход в ширину и асинхронную композицию для минимизации задержки. Авторы также обсуждают важность кэширования, опциональных обогащений и конечной согласованности при проектировании слоя запросов. Слой запросов состоит из трех уровней: Сервис запросов к графу, Слой абстракции хранения и Слой обогащения, которые работают вместе для эффективного выполнения запросов. Авторы подробно рассматривают пример запроса, чтобы продемонстрировать, как слой запросов работает на практике, подчеркивая важность чтения и интерпретации запроса, эффективного чтения из хранилища, выполнения обхода с уровнями обхода в ширину, параллельного выполнения многих операций, умной фильтрации и ускорения повторных запросов с помощью кэширования. Цель слоя запросов — завершать запросы менее чем за 100 мс, и авторы демонстрируют, как их дизайн достигает этой цели. Слой запросов разработан для обработки десятков тысяч запросов в секунду, каждый из которых потенциально отличается, и авторы обсуждают компромиссы, на которые они пошли при проектировании слоя запросов для достижения такого уровня производительности. В целом, авторы предоставляют подробный обзор проектирования и реализации слоя запросов, подчеркивая проблемы и компромиссы, связанные с созданием высокопроизводительного слоя запросов для крупномасштабного распределенного графа. Слой запросов является критически важным компонентом распределенного графа в реальном времени, а дизайн и реализация авторов позволили Netflix предоставлять аналитику в реальном времени своим внутренним партнерам.
CdXz5zHNQW_1lL53FS8TQ.png
Netflix предлагает широкий спектр функций и типов контента на различных устройствах, но аппаратные ограничения могут ограничивать определенные функции на конкретных устройствах. Для решения этой проблемы компания разработала комплексную модель данных о возможностях устройств, чтобы понимать их и обеспечивать наилучший пользовательский опыт. Модель данных интегрирует флаги функций из внутренних систем, что позволяет более эффективно управлять функциями в глобальном ландшафте устройств. Для хранения информации о возможностях устройств, таких как разрешение экрана, видеопрофили и объем оперативной памяти, используется накопительная таблица, что делает ее идеальной для аналитики и отчетности. Таблица структурирована таким образом, чтобы фиксировать последнее состояние каждого устройства и связанные с ним возможности, обеспечивая эффективную обработку информации. Для агрегированной аналитики используется гистограммная таблица для подсчета активных устройств за последние 28 дней, с разбивкой по моделям устройств и версиям программного обеспечения. Эта таблица также записывает количество устройств, поддерживающих определенные возможности, что позволяет проводить детальный анализ распределения. Данные гистограммы могут использоваться для анализа распределения возможностей внешних дисплеев, таких как процент устройств, поддерживающих профили HD или UHD. Используя эти наборы данных, Netflix создала аналитические продукты для предоставления полного обзора охвата функций, включая 4K Ultra HD, Netflix Spatial Audio и Cloud Gaming. Компания использует аналитические данные, основанные на данных, для принятия обоснованных решений о том, какие функции включать на конкретных устройствах, обеспечивая как производительность, так и надежность.
Рекомендации — важнейшая часть работы Netflix, и компания использовала сложные производственные модели, основанные на тысячах вручную созданных функций и специализированных архитектур. Однако эти модели дороги в обслуживании и обновлении, и компания ищет более эффективные решения. Большие языковые модели показали многообещающие результаты в этой области, но они еще не готовы к производству и часто имеют ограничения, такие как чрезмерное рекомендование популярного контента и игнорирование бизнес-ограничений. Для решения этой проблемы Netflix создал GenRec, систему ранжирования рекомендаций на основе LLM, которая дообучает внутреннюю базовую LLM на данных и целях, специфичных для Netflix. GenRec вербализует историю пользователя, метаданные элементов и контекст в виде текста и использует головку оценки, осведомленную о каталоге, для ранжирования элементов. Модель обучается с использованием многоцелевой функции потерь, которая объединяет сигналы ранжирования, языка и вознаграждения для соответствия бизнес-целям и долгосрочному удовлетворению участников. GenRec продемонстрировал статистически значимые улучшения как в краткосрочных, так и в долгосрочных онлайн-метриках по сравнению с хорошо настроенным производственным ранжировщиком, используя при этом лишь небольшую часть размеченных данных и входных сигналов. Модель обслуживается на внутреннем стеке LLM Netflix с использованием vLLM, и компания внедрила стратегии для контроля затрат на обслуживание, такие как использование меньших моделей, агрессивное сжатие контекста и вывод только предварительного заполнения. В целом, GenRec представляет собой значительный шаг к более LLM-центричному будущему рекомендаций в Netflix, и его успех может трансформировать подход компании к рекомендациям и персонализации. Способность модели обучаться на входах на естественном языке и генерировать персонализированные ранжирования может улучшить пользовательский опыт и повысить вовлеченность. Используя мощь больших языковых моделей, Netflix может создавать более эффективные и действенные системы рекомендаций, которые способствуют успеху бизнеса.
CdXz5zHNQW_VHtw7eOaqU.png
Netflix самостоятельно управляет всем стеком больших языковых моделей, осуществляя развертывание и инференс напрямую. Они интегрировали это в существующую производственную среду, а не в отдельный "силос" машинного обучения. Этот подход включал тщательный выбор движка инференса, решение о том, как будут упаковываться модели, проектирование интерфейса API, определение стратегий развертывания и обеспечение ограничений на вывод.Выбранный движок инференса — vLLM, отобранный за его операционную пригодность, способность загружать пользовательские архитектуры, расширяемость, отлаживаемость и знакомство среди специалистов. Модели упаковываются с использованием бэкенда vLLM в Triton для обеспечения динамической спецификации входных/выходных тензоров, способствуя независимому развитию моделей и фронтендов. Наряду с существующим gRPC-интерфейсом был добавлен HTTP-фронтенд, совместимый с OpenAI, для более широкой совместимости с экосистемой.Для развертывания Netflix использует стратегию версионирования для обработки потенциальных изменений схемы между версиями моделей, позволяя потребителям обновляться независимо. Когда интерфейсы моделей стабильны, применяется менее затратная стратегия развертывания "красное-черное". Одной из ключевых операционных проблем было медленное время запуска моделей, которое они решили путем материализации больших моделей на Amazon FSx для более быстрого доступа.Наблюдаемость была улучшена путем создания унифицированной конечной точки /metrics, которая агрегирует данные как из vLLM, так и из Triton. Важной функцией является масштабируемое ограниченное декодирование, реализованное с помощью пользовательского процессора логитов vLLM. Это позволяет моделям напрямую генерировать соответствующие требованиям выходные данные, избегая коррекции после инференса.Первоначальная реализация ограниченного декодирования на чистом Python столкнулась с проблемами масштабирования из-за Global Interpreter Lock (GIL) и последовательной обработки на ЦП. Это стало очевидным только при высокой конкуренции, что привело к значительным задержкам в хвосте. Система полагается на Java-площадку управления для управления развертыванием, версионированием и автоматическим масштабированием. Система обслуживания поддерживает как пути инференса в пакетном режиме в реальном времени, так и с кэшированием. Эта унифицированная система обрабатывает полный поток потребителей, включая маршрутизацию, генерацию кандидатов и логирование.
CdXz5zHNQW_CmjJjU7Bih.png
Netflix разработала карту зависимостей сервисов в реальном времени, чтобы помочь инженерам в устранении неполадок и понимании их распределенной архитектуры. Система объединяет сетевые потоки eBPF, метрики IPC и распределенное трассирование в независимые слои графа. Хотя первоначальная версия работала локально, в производственной среде выявились значительные проблемы с масштабированием, включая отставание потребителей Kafka и проблемы с памятью.Основным архитектурным решением стал подход, ориентированный на потоковую передачу, обеспечивающий обновления топологии практически в реальном времени вместо ежечасной пакетной обработки. Это было критически важно для реагирования на инциденты и мониторинга событий в реальном времени. Для обработки миллионов записей потоков в секунду без потери данных система использует реактивные потоки с обратным давлением, сигнализируя вышестоящим компонентам замедлиться, когда нижестоящие системы перегружены. Это обеспечивает плавное снижение производительности, а не сбои или потерю данных.Архитектура использует многослойную конструкцию с физической изоляцией хранилища для сетевых, IPC и трассировочных слоев, что позволяет проводить независимую оптимизацию. Прием данных в сетевом слое основан на трехэтапном распределенном конвейере агрегации. Этап 1 выполняет первоначальную агрегацию из Kafka, Этап 2 разрешает сетевые посредники (такие как балансировщики нагрузки) в прямые зависимости на уровне приложений, а Этап 3 выполняет окончательную агрегацию, обогащение внешними данными и сохранение в графовой базе данных.Трехэтапный конвейер стал критическим развитием по сравнению с первоначальной двухэтапной конструкцией, которая страдала от "горячих узлов" из-за концентрации данных во время разрешения посредников и обогащения. Разделение этих обязанностей между тремя этапами распределяет рабочую нагрузку, предотвращая узкие места. Server-Sent Events (SSE) заменили gRPC для межэтапной связи из-за накладных расходов на производительность gRPC, которые потребляли чрезмерное количество ЦП и памяти в масштабе.
CdXz5zHNQW_FXxC4JJL7E.png
Главная страница Netflix представляет собой высокоперсонализированный и структурированный интерфейс для поиска контента. Традиционно ее генерация включала сложный многоэтапный конвейер. GenPage, новый подход, использует единую генеративную трансформерную модель для авторегрессивного построения всей главной страницы. Эта сквозная модель принимает контекст пользователя в качестве подсказки и одновременно генерирует строки, сущности и макет. Основные цели включают упрощение стека рекомендаций, обеспечение оптимизации всей страницы с помощью обучения с подкреплением, а также повышение масштабируемости и гибкости. Производственные проблемы включали задержку обслуживания в реальном времени, проблему холодного старта сущностей и поддержание актуальности модели. GenPage продемонстрировал значительные улучшения во вовлеченности пользователей и сокращении задержки обслуживания в A/B-тестах. Данные токенизируются на токены контекста, представляющие информацию о пользователе, и токены страницы для структуры главной страницы. Доменно-специфичная токенизация повышает вычислительную эффективность и контроль над продуктом по сравнению с общей текстовой токенизацией. История пользователя, профиль и контекст запроса формируют подсказку, в то время как сущности и строки представлены в виде токенов в сгенерированной странице. Система использует систему вознаграждений, основанную на обратной связи с пользователем, для количественной оценки ценности рекомендаций и управления обучением. GenPage использует стандартную архитектуру трансформера только с декодером и следует рецепту обучения, похожему на LLM, включающему предварительное обучение и последующее обучение. Предварительное обучение использует предсказание следующего токена, чтобы научить модель языку главной страницы, за которым следует последующее обучение с взвешенной бинарной классификацией или обучением с подкреплением. Этот генеративный подход предлагает более интегрированный и прямой путь к оптимизации всего пользовательского опыта на главной странице Netflix.
CdXz5zHNQW_XlipK7GYZj.gif
Исследователи Netflix разработали два инструмента на базе искусственного интеллекта для помощи видеоредакторам в создании рекламных материалов. Первый инструмент, Vera, представляет собой многослойную диффузионную модель для видео, предназначенную для редактирования с сохранением контента. Vera генерирует правки в виде отдельных слоев, оставляя нетронутыми части оригинального видеоряда, тем самым сохраняя идентичность и детали. Для обучения Vera был создан специализированный набор данных и использована архитектура Mixture-of-Transformers для эффективной генерации выходных данных. Оценки показали, что Vera значительно превосходит существующие методы в сохранении контента при сопоставимом качестве видео. Второй инструмент, VOID, представляет собой фреймворк для удаления объектов и взаимодействий в видео. VOID решает проблему физически неправдоподобных результатов при удалении объектов со значительными взаимодействиями. Он использует двухэтапный конвейер вывода, где первый этап генерирует физически правдоподобное контрфактическое видео. Второй этап уточняет результат, чтобы предотвратить артефакты, такие как искажение объектов. VOID обучался с использованием синтетических данных, сгенерированных из симуляций, и данных реальной захвата движения. Эксперименты показывают, что VOID лучше сохраняет согласованную динамику сцены по сравнению с предыдущими подходами. Эти исследовательские работы направлены на ответственное развитие редактирования видео с помощью ИИ, одновременно расширяя возможности художников. Оба инструмента, Vera и VOID, подробно описаны в общедоступных исследовательских работах.
CdXz5zHNQW_YZ3adN1Eip.gif
Netflix переводит свою вычислительную инфраструктуру на модель, основанную на Kubernetes, интегрируя такие компоненты, как Kueue, в свою платформу Titus. Kueue — облачная система очередей заданий — в значительной степени заменила пользовательскую логику собственного решения для пакетной обработки Compute Managed Batch (CMB). Среди причин для этой миграции были устаревание CMB, развитие Kubernetes и растущие сложности с добавлением таких функций, как преемпция, в существующую систему. Kueue был выбран из числа альтернатив благодаря совместимости с существующими профилями планирования Titus, динамике внедрения и встроенной поддержке таких функций, как преемпция.Миграция, получившая название Netflix Batch, была направлена на то, чтобы не оказать никакого влияния на пользователей и не снизить пропускную способность. Процесс включал перенаправление отправленных заданий в ячейки Titus с поддержкой Kueue, при этом распределением заданий занималась федерация Titus. Настройки со стороны операторов были минимальными и сводились в основном к простому переключению в пользовательском интерфейсе для подключения арендаторов к Kueue. Это подключение преобразует существующую иерархию арендаторов и конфигурации мощностей CMB в концепции Kueue: Cohorts, ClusterQueues и LocalQueues.Ключевые извлеченные уроки включают поддержание совместимости API со старой системой для обеспечения плавного пользовательского опыта, а также раннюю миграцию сложных сценариев использования для укрепления доверия. Также было крайне важно провести нагрузочное тестирование Kueue, чтобы убедиться в его способности справляться с высокими требованиями Netflix к пропускной способности, что потребовало корректировки конфигураций по умолчанию. В настоящее время Kueue работает в полном объеме, управляя миллионами пакетных рабочих нагрузок, и обеспечивает расширенные функции справедливого распределения ресурсов и преемственности. Эти усовершенствования позволяют более эффективно использовать зарезервированные ресурсы, сократить количество задержек в выполнении заданий и ускорить обработку критически важных рабочих нагрузок, что значительно повышает средний коэффициент использования ресурсов.
CdXz5zHNQW_CNU9jjDeMi.png
Абстракция TimeSeries от Netflix обрабатывает и запрашивает петабайты временных данных событий с миллисекундной задержкой, используя Apache Cassandra в качестве хранилища. Широкие разделы, где один раздел накапливает большой объем событий с течением времени, представляют собой серьезную проблему для рабочих нагрузок TimeSeries. Это приводит к высоким задержкам чтения, тайм-аутам, увеличению загрузки ЦП и паузам сборки мусора в кластерах Cassandra. Для решения этой проблемы данные TimeSeries разделяются на дискретные временные блоки, создавая управляемые сегменты.Первоначальная стратегия предоставления ресурсов полагалась на указанные пользователем характеристики рабочей нагрузки и симуляции Монте-Карло для определения оптимальной инфраструктуры и конфигураций разделов. Однако этот подход оказался недостаточным, когда рабочие нагрузки были неизвестны, неточно оценены, менялись со временем или содержали выбросы данных. Для автоматизации корректировок был введен фоновый рабочий процесс для мониторинга гистограмм разделов и динамического перераспределения будущих временных срезов на основе наблюдаемой плотности данных. Эта стратегия перераспределения временных срезов эффективно снижает задержки чтения и тайм-ауты, когда большинство данных демонстрирует схожее поведение широких разделов.Однако эта стратегия не решает проблемы, когда только небольшой процент идентификаторов в таблице является широким. Для таких случаев, а также когда вызывающие стороны требуют все данные, даже при повышенных задержках, была разработана динамическая разбивка по идентификаторам. Этот асинхронный конвейер обнаруживает широкие разделы во время операций чтения и прозрачно разбивает их на оптимальные размеры. Процесс включает обнаружение, планирование и разбиение, а также обслуживание чтений путем перенаправления запросов на разбитые разделы.Обнаружение происходит, когда операция чтения превышает заданный пороговый объем байтов, отправляя событие в Kafka. Система изначально фокусируется на неизменяемых разделах для простоты. Этап планирования считывает весь раздел для создания плана разбиения, используя контрольные точки для обработки сбоев. Разбиение включает делегирование разделения данных конкретным стратегиям, например, назначение большего количества корзин событий временной корзине. Проверка разбиений имеет решающее значение, при этом контрольные суммы обеспечивают целостность данных перед завершением разбиения. Наконец, серверы TimeSeries используют встроенные в память фильтры Блума для эффективного перенаправления запросов на чтение на разбитые разделы, делая перенаправление практически незаметным для вызывающих сторон.
CdXz5zHNQW_JhVMWuRvRR.png
Netflix разработал абстракцию графа для обработки операций с графами с высокой пропускной способностью и низкой задержкой, особенно для случаев использования, таких как распределенные графы в реальном времени и социальные графы. Он работает в двух категориях: OLAP для глубокого анализа и OLTP для потоковых пользовательских опытов. Абстракция использует модель графа свойств с узлами и ребрами сильной типизации, организованными в изолированные пространства имен. Каждое пространство имен имеет предварительно определённую схему графа, управляемую через контрольную плоскость шлюза данных. Эта схема позволяет оптимизации, такие как обеспечение качества данных и эффективное планирование запросов. Реальное индексирование использует хранилище ключ-значение для узлов и ребер, используя отдельные индексы для ссылок и свойств. Ссылки ребер индексируются по отношениям источник-назначение. Чтобы обеспечить доступ независимо от направления, это организует идентификаторы лексикографически. Кэширование используется для минимизации усиления записи и чтения. Архитектура абстракции отдает приоритет высокой производительности и включает стратегии, такие как кэширование write-aside.
CdXz5zHNQW_cFaJPOpvqm.png
Netflix разработал "динамическую карту" своей распределенной инфраструктуры, называемую Service Topology, чтобы помочь инженерам понять зависимости между сервисами и устранять проблемы. Карта решает проблему более быстрого определения отношений между сервисами и потенциального воздействия во время простоев. Она дает ответы на важные вопросы, такие как какие сервисы зависят друг от друга и где находится источник проблем. Они собрали данные из трех источников: сетевых потоков eBPF, метрик IPC и трассировки от конца до конца. Каждый источник данных дает уникальную перспективу - сетевое подключение, детали на уровне приложения и фактические потоки запросов. Эта многослойная архитектура объединяет эти представления в единую, реальную карту. Система использует отдельные графические базы данных для каждого источника данных, чтобы сохранять независимость и обеспечивать параллельные запросы. Инженеры могут просматривать каждый граф отдельно или объединять их для всестороннего понимания взаимодействия сервисов. Система получает журналы потоков из Kafka в нескольких регионах, обрабатывает их и хранит данные в графических базах данных. Эта динамическая карта помогает инженерам Netflix быстро диагностировать и решать проблемы, обеспечивая бесперебойный просмотр потокового видео.
CdXz5zHNQW_fZOTLLTM4l.png
Netflix использует стратегию polyrepo с тысячами Java-репозиториев, требующую эффективного обмена логикой сборки. Они создали набор плагинов Gradle Nebula, включая ArchRules, для управления зависимостями и обеспечения соблюдения стандартов кодирования. Эта инициатива возникла из-за необходимости улучшить управление жизненным циклом Java-библиотек после инцидента с обратно несовместимыми изменениями. Netflix использует аннотации жизненного цикла API (@Deprecated, @Public, @Experimental) для выявления потенциальных проблем с устаревшим кодом. ArchUnit, популярная библиотека для обеспечения соблюдения архитектурных правил, была выбрана для обнаружения неправильного использования этих аннотаций и других проблем с техническим долгом. Плагины Nebula ArchRules позволяют обмениваться правилами ArchUnit и применять их в нескольких репозиториях, предоставляя расширенные возможности. ArchRules использует анализ байт-кода (ASM) для поддержки нескольких языков и простой в использовании шаблон builder, упрощающий создание правил. Правила могут быть включены в библиотеки или определены в отдельных библиотеках правил, автоматически обнаруживаться и запускаться плагином. Плагин ArchRules Runner оценивает правила по наборам исходных кодов и генерирует отчеты в формате JSON и консоли, обеспечивая улучшенные возможности отчетности. Используя ArchRules, Netflix предоставляет платформу для авторов библиотек, позволяющую отслеживать использование API и обнаруживать использование устаревших API.
CdXz5zHNQW_UkqZEpugr5.png
Netflix использует машинное обучение в различных областях бизнеса, таких как персонализация, студийное производство, платежи и реклама. По мере роста использования машинного обучения возникла проблема: фрагментированная среда, где модели и данные были изолированы, что препятствовало сотрудничеству и обнаружению. Специалисты по машинному обучению испытывали трудности с пониманием происхождения моделей, источников признаков и их влияния в различных системах. Эта фрагментация мешала получить простые ответы на вопросы о существующих признаках, источниках данных, зависимостях конвейеров и последствиях изменений.Основная трудность заключалась в соединении разрозненных компонентов инфраструктуры машинного обучения, которые генерировали метаданные. Десятки систем, от оркестраторов конвейеров до платформ экспериментов и хранилищ признаков, производили данные в различных форматах. Решение этой задачи требовало сбора разнородных метаданных, преобразования их в единую модель и построения связанного графа для исследования.Решением является Сервис Метаданных (MDS), который строит Граф Жизненного Цикла Модели для взаимосвязи сущностей машинного обучения в Netflix. MDS в реальном времени обрабатывает метаданные машинного обучения, позволяя выполнять междоменные запросы, такие как идентификация экспериментов, использующих определенную модель, или моделей, имеющих общие признаки. Цель состоит в том, чтобы сделать все активы машинного обучения обнаруживаемыми, понятными и повторно используемыми по всей компании.MDS работает на основе основных абстракций: Компоненты, каждый с уникальным AIP URI; Сущности, которые являются специфичными для машинного обучения активами со свойствами; Типы Сущностей, определяющие формы данных; Домены, которые группируют связанные типы сущностей; и Поставщики, конкретные реализации доменов из исходных систем. Такое адресование на основе URI позволяет любой службе универсально ссылаться на любой актив машинного обучения. Процесс построения графа включает несколько этапов.Во-первых, MDS интегрируется с исходными системами через Kafka и AWS SNS/SQS для потребления легких событий, указывающих на изменения. Специальные обработчики событий обрабатывают события из таких систем, как Оркестратор Конвейеров, Реестр Моделей, Хранилище Признаков, Платформа Экспериментов и Платформа Идентификации. Во-вторых, MDS реализует контракт гидратации, проверяя события и вызывая API исходных систем для получения полного состояния, которое затем преобразуется в нормализованную сущность. Эта модель "уведомления об изменении" обеспечивает надежность против проблем с порядком событий, но создает нагрузку на чтение исходных систем.В-третьих, необработанные события преобразуются в единую модель сущностей со стандартизированными полями, создавая согласованный интерфейс для последующих потребителей. Нормализованные сущности стандартизируют имена полей, форматы и преобразуют идентификаторы, специфичные для платформы, в глобальные AIP URI. Наконец, нормализованные сущности сохраняются в Datomic для кэширования и хранения связей, и одновременно индексируются в Elasticsearch. Datomic, с его неизменяемой моделью фактов, поддерживает сложные обходы графа и связи сущностей, позволяя выполнять запросы по нескольким доменам без неэффективных паттернов запросов N+1.
CdXz5zHNQW_EXeyjNVmx8.png
Пост в блоге обсуждает технические аспекты того, как инфраструктура обслуживания моделей машинного обучения (ML) Netflix обеспечивает персонализированные trải nghiệm в масштабе различных доменов. Центральная платформа обслуживания моделей ML предоставляет доменно-независимое абстрактное API и возможности маршрутизации трафика для нескольких доменно-специфических микросервисов для вывода моделей. Это единственное API увеличило скорость инноваций для итерации новых версий существующих trải nghiệm ML и включения новых trải nghiệm продуктов с ML.Успех инфраструктуры обслуживания моделей ML зависит от того, чтобы обеспечить исследователям возможность быстро экспериментировать с новыми гипотезами и безопасно выпускать свои модели в производство. Платформа обслуживает сотни типов и версий моделей, обрабатывая 1 миллион запросов в секунду, и работает на уровне рабочих процессов, а не только отдельных функций оценки.Определение модели содержит список фактов, которые необходимо вычислить для вычисления признаков, и оно полагается на платформу обслуживания моделей для предоставления этих фактов во время обслуживания, вызывая несколько других микросервисов. Вызывающие сервисы только cần предоставить стандартный контекст запроса и соответствующий доменный контекст, и модель может сама вычислить признаки и выполнить вывод как часть потока выполнения.Платформа действует как средство быстрой инновации ML и ограничивает воздействие итераций моделей ML на клиентские приложения. Ключевые принципы платформы включают инновации моделей, независимые от клиентских приложений, декуплинг клиентов от шардирования моделей и гибкие правила маршрутизации трафика.Платформа использует пользовательский сервис под названием Switchboard, который служит гибким прокси-слоем для всего трафика, обрабатывая более 1 миллиона запросов в секунду при сохранении высокой доступности и надежности. Switchboard предоставляет единую точку контакта для всех потребностей моделей клиентов и может маршрутизировать запрос на основе богатого набора контекстных признаков.Платформа также вводит понятие "Цель", которое является перечислением, определенным платформой обслуживания, которое каждый запрос в систему должен предоставить. Цель декуплирует клиентов от конкретных моделей и руководит решениями платформы по маршрутизации и выбору моделей.Правила Switchboard - это конфигурация на JavaScript, которая позволяет исследователям присоединять варианты моделей, эксперименты и разделы трафика к Целям без изменения кода клиента. Правила диктуют модель по умолчанию для использования для данной Цели, эксперименты A/B для настройки для набора Целей и настройки для постепенного перенаправления трафика на новую модель.Правила потребляются как Switchboard, так и кластерами обслуживания моделей, и компоненты платформы обслуживания могут выполнять различные действия на основе этих правил. В целом, платформа обеспечивает масштабируемое и гибкое решение для обслуживания моделей ML в Netflix, обеспечивая быструю инновацию и экспериментирование при минимизации воздействия на клиентские приложения.
CdXz5zHNQW_XdCPf6klQA.png
Netflix создала свой пакет для производства медиа (MPS), чтобы оптимизировать рабочие процессы медиа для глобальных производств, стремясь к эффективности и последовательности. Основа MPS использует API FilmLight (FLAPI) для обработки изображений, что является результатом сотрудничества, позволяющего избежать создания всего с нуля. MPS решает такие проблемы, как управление файлами и непоследовательная обработка медиа, автоматизируя задачи и минимизируя ошибки. FLAPI используется для проверки метаданных файлов камер, их нормализации и обеспечения возможности поиска, гарантируя последовательность. FLAPI также генерирует VFX-пластины и конечные продукты с точным управлением цветом и дебайерингом. MPS интегрирован с облаком с использованием Cosmos, что позволяет использовать экземпляры только с ЦП в контейнеризированной среде, максимизируя эффективность. Производственные нагрузки обрабатываются эластично, масштабируясь по требованию, что обеспечивает быстрое выполнение заказов. MPS разработан как для опытных команд, так и для тех, кому нужна помощь, при этом FLAPI берет на себя сложности. Это партнерство обеспечивает открытое общение, совместную валидацию и способствует развитию экосистемы стандартизации. Общий результат — сокращение задержек, ускорение выполнения заказов и повышение эффективности производственных процессов.
CdXz5zHNQW_aUoM5pxXdJ.jpeg
Операции Netflix по прямой трансляции быстро расширились с момента их первого прямого шоу, теперь транслируя несколько событий ежедневно. Первоначальные прямые шоу полагались на инженеров и импровизированные настройки, не имея специальных операционных команд. Эволюция требовала создания специальных Центров вещательных операций (BOC), чтобы управлять процессом прямой трансляции. Чтобы обеспечить надежность сигнала, Netflix устанавливает строгие спецификации для видео- и аудиопотоков от площадок. Операционная модель Netflix прошла через несколько фаз, от инженерно-ориентированных операций до специализированных инженерных команд. Была разработана модель Центра передачи (TOC), чтобы повысить эффективность и управлять большим объемом событий одновременно. В рамках модели TOC отдельные роли, такие как операторы передачи, потоковой передачи и управления вещанием, имеют решающее значение. Для высокопрофильных событий специализированная модель "Большой риск" предоставляет выделенные ресурсы. Центр управления прямой трансляцией (LCC) отслеживает всю цепочку прямой трансляции, предоставляя операторам данные в режиме реального времени. LCC использует индивидуальный стек наблюдаемости для управления огромными объемами данных и оперативно реагировать на проблемы. Руководители операций LCC и технические менеджеры запуска отвечают за реагирование на инциденты.
CdXz5zHNQW_kK6Y54I9YV.jpeg
Netflix стремится улучшить процесс выбора краткого содержания для своей огромной библиотеки контента. Тысячи названий усложняют выбор пользователя, делая краткие содержания важными для принятия решений. Высококачественные краткие содержания повышают вовлеченность пользователей, а плохие приводят к разочарованию и отказу. Проблема заключается в масштабировании проверки качества на сотни тысяч кратких содержаний. Netflix разработала подход на основе модели крупномасштабного языка (LLM) для оценки качества кратких содержаний по четырем ключевым направлениям. Эта система достигает более 85% согласия с творческими писателями, обеспечивая стандарты качества, основанные на мнении экспертов. Качество краткого содержания оценивается как через творческую ценность, определяемую писателями, так и через неявную обратную связь пользователей посредством метрик потокового вещания. Система LLM-as-a-Judge использует методы, такие как многоуровневые обоснования, оценка консенсуса и агенты фактичности, для оптимизации точности. Эти баллы качества, полученные из LLM, коррелируют с ключевыми метриками потокового вещания, такими как доля просмотра и коэффициент отказа. Это позволяет Netflix проактивно выявлять и исправлять проблемы с краткими содержаниями, улучшая опыт пользователя и открытие контента.
CdXz5zHNQW_s8spGD1mD0.png
Netflix внедрила экспериментальный слой кэширования для повышения производительности запросов Druid в огромном масштабе. Эта система кэширования решает проблему избыточных запросов с панелей мониторинга, особенно во время громких событий. Основная идея заключается в кэшировании частей результатов и запросе Druid только для самых свежих данных, что приводит к небольшому компромиссу со степенью устаревания. Используются значения времени жизни (TTL) по экспоненте, при этом более старые данные кэшируются дольше для обработки поздних событий. Система кэширования использует структуру "карта-карт" для эффективного сканирования диапазонов кэшированных данных. Кэш перехватывает запросы в Druid Router, обслуживая результаты или запрашивая Druid по мере необходимости. Решение объединяет кэшированные и свежие данные, возвращая полный результат и асинхронно кэшируя свежие данные. Отрицательное кэширование используется для пустых сегментов, с мерами предосторожности против кэширования конечных пустых сегментов. Система использует слой абстракции данных "ключ-значение" (KVDAL) Netflix, поддерживаемый Cassandra, который предлагает независимые TTL для каждой точки данных. Слой кэширования значительно снизил нагрузку на запросы Druid и улучшил время запросов, особенно во время событий с большим объемом. Система кэширования все еще экспериментальная, и будущие цели включают интеграцию в сам Druid.
CdXz5zHNQW_ZIJYgW0wPc.png
В статье обсуждаются проблемы и решения для создания продвинутой системы поиска видео. Основная проблема заключается в огромном объеме видеоматериалов и сложности извлечения релевантных моментов. Решение предполагает мультимодальный подход, интегрирующий различные модели ИИ для анализа различных аспектов видеоконтента. Этот подход требует объединения разнообразных данных из специализированных моделей в целостную систему интеллекта реального времени. Архитектура системы ориентирована на обработку в масштабе, эффективную обработку миллиардов точек данных. Трехэтапный процесс, включающий транзакционное сохранение, автономное объединение данных и индексирование для поиска в реальном времени, обеспечивает целостность данных и оперативность. Процесс использует разделенный конвейер, чтобы избежать узких мест во время процесса приема данных. Служба поиска предлагает такие функции, как предварительная обработка запросов, точная настройка семантического поиска и расширенный текстовый анализ для получения точных результатов. Она также включает сопоставление фраз, анализ N-грамм и нечеткое сопоставление для повышения точности поиска. Система предоставляет агрегации и гибкую группировку, чтобы обеспечить более нюансированный поиск. В целом, цель состоит в том, чтобы расширить возможности кинематографистов, предоставив мощный инструмент для обнаружения релевантного видеоконтента.
CdXz5zHNQW_YdZx5oYSdr.png
Netflix перешла от постоянной скорости битовой передачи (CBR) к переменной скорости битовой передачи (VBR) для кодирования своих прямых трансляций, что улучшило эффективность. VBR динамически регулирует скорость битовой передачи в зависимости от сложности сцены, что приводит к уменьшению среднего трафика и улучшению качества обслуживания. Основной проблемой VBR является непредсказуемость трафика, которая может привести к перегрузке сервера и нестабильности из-за больших колебаний скорости битовой передачи. Чтобы решить эту проблему, Netflix реализовала новую систему резервирования емкости на основе номинальных скоростей битовой передачи, смягчив риски, связанные с переменной природой VBR. Они также скорректировали номинальные скорости битовой передачи по всей своей потоковой лестнице, чтобы они соответствовали качеству потоков CBR, используя VMAF в качестве руководящего показателя. Переход на VBR позволил достичь таких преимуществ, как снижение задержек буферизации и начальных задержек запуска. Теперь Netflix работает над улучшением своих алгоритмов адаптивной скорости битовой передачи и резервирования емкости, чтобы еще больше оптимизировать VBR. Реализация VBR была проектом компании, в котором участвовали несколько команд и участников.
CdXz5zHNQW_f7OyE9DYza.png
Три года назад Netflix задался вопросом, как они могут развлекать мир с помощью прямой трансляции – формата, который почти так же стар, как и само телевидение. Этот вопрос привел к разработке сотен прямых трансляций, включая комедийные шоу, спортивные мероприятия и события WWE. В серии под названием "За кулисами стримов" Netflix расскажет о техническом пути создания возможностей для прямой трансляции. Прямая трансляция потребовала новых подходов к архитектуре и выбору технологий, а также значительных усилий для ее эффективной работы на Netflix. Ключевые составляющие архитектуры прямой трансляции Netflix включают выделенные студии вещания, облачные резервные конвейеры для транскодирования и упаковки, масштабирование доставки живого контента, оптимизацию воспроизведения в реальном времени и облачные сервисы управления обнаружением и воспроизведением. Netflix также централизовал в облаке метрики в реальном времени с помощью специализированных инструментов и средств. Создание функционала для прямой трансляции принесло новые вызовы и возможности для обучения, и Netflix продолжает ежедневно учиться тому, как более эффективно доставлять прямые трансляции. Основные уроки, полученные на данный момент, включают важность всестороннего тестирования, регулярных тренировок, прогнозирования просмотров, поэтапного снижения нагрузки и "штормов повторных попыток". Netflix добился значительного прогресса в создании надежной системы прямой трансляции, но еще многое предстоит узнать и улучшить.
CdXz5zHNQW_JBiedm3Ejv.png
Tudum.com - это официальное место для фанатов Netflix, предлагающее эксклюзивный контент, информацию из-за кулис и интерактивные опыты более чем 20 миллионам пользователей каждый месяц. Архитектура платформы спроектирована для обеспечения поддержки, масштабируемости и гибкости, используя подход серверного интерфейса пользователя, похожий на Command Query Responsibility Segregation (CQRS). Команда редакторов Tudum создает контент, который хранится в базе данных для записи, а затем преобразуется в формат, оптимизированный для чтения, для потребления пользователями. Первоначальная архитектура использовала Kafka для разделения баз данных для записи и чтения, что позволяло масштабировать независимо и обеспечивать консистентность в конечном счете. Однако этот подход ввел задержку между редактированием контента и его отражением на сайте. Команда определила источник задержки как Сервис данных страницы, который использовал кэш для ускорения сборки страниц. Чтобы решить эту проблему, Netflix разработала RAW Hollow, базу данных объектов в памяти, ко-локализованную и сжатую, которая обеспечивает сильную консистентность чтения после записи и низкую задержку. Tudum был идеальным местом для тестирования RAW Hollow, который значительно уменьшил ввод-вывод и обеспечил синхронный доступ к данным за время O(1). Обновленная архитектура устранила необходимость в инфраструктуре Kafka и уменьшила время распространения данных, позволяя писателям и редакторам просматривать изменения в течение секунд. Миграция также привела к более быстрым временам запросов, время сборки домашней страницы уменьшилось с 1,4 секунды до 0,4 секунды.
CdXz5zHNQW_0cHOBDLN2F.jpeg
Программа Open Connect Netflix - это сеть доставки контента (CDN), которая стремится обеспечить лучшее качество опыта (QoE) для своих членов путем локализации доставки контента через партнерства с интернет-провайдерами (ISP) по всему миру. Программа использует серверы с.custom-разработанными серверами, называемыми аппаратными устройствами Open Connect (OCAs), которые спроектированы для эффективности и экономичности. Чтобы оценить эффективность Open Connect, Netflix использует фреймворк для выявления источников неэффективности, а именно пропусков кэша, которые возникают, когда байты не обслуживаются из лучшего доступного OCA для данного клиента. Пропуски кэша классифицируются на три категории: пропуски контента, пропуски здоровья и другие пропуски. Пропуски контента возникают, когда файлы не найдены на OCA в локальном сайте, а пропуски здоровья возникают, когда аппаратные ресурсы OCA в локальном сайте насыщены. Netflix регистрирует два критических компонента данных для вычисления пропусков кэша: журналы манифеста воспроизведения и журналы сервера OCA. Эти журналы объединяются для вычисления подробных метрик пропусков кэша на различных уровнях агрегации. Архитектура системы для вычисления пропусков кэша включает в себя эмиссию журналов, консолидацию журналов, обогащение журналов и соединения на основе потокового окна. Модель данных, используемая для оценки пропусков кэша, позволяет повторять логику офлайн и в симуляциях с переменными параметрами для тестирования новых условий и функций без влияния на производственный трафик.
CdXz5zHNQW_u3pdU106U1.png
Netflix представила потоки AV1 Film Grain Synthesis (FGS), которые сохраняют художественную целостность зерна пленки, оптимизируя при этом эффективность использования данных. Зерно пленки является ключевым элементом в рассказывании историй, добавляя глубину и реализм фильмам, но его трудно сжимать с помощью традиционных алгоритмов. Инструмент AV1 FGS моделирует зерно пленки через два компонента: узор зерна пленки и интенсивность зерна пленки. Узор зерна пленки воспроизводится с помощью авторегрессивной модели, а интенсивность зерна пленки контролируется функцией масштабирования. Процесс кодирования удаляет зерно пленки из видео, сжимает его и передает узор и интенсивность зерна вместе с сжатыми видеоданными. Во время воспроизведения зерно пленки воссоздается и повторно интегрируется в видео с помощью блочного метода. Включение AV1 FGS привело к значительному уменьшению битрейта, что позволяет осуществлять высококачественное потоковое видео с меньшим количеством данных. Эта технология также улучшила визуальное качество, поскольку синтезированный шум эффективно маскирует артефакты сжатия. Netflix внедрила FGS на всей своей платформе, и пользователи теперь могут наслаждаться потоками с поддержкой FGS на поддерживаемых устройствах. Внедрение FGS привело к более гладкому и надежному качеству обслуживания для членов Netflix, с более низким битрейтом, уменьшением ошибок воспроизведения и улучшением стабильности воспроизведения.
CdXz5zHNQW_VP7NReszvY.png
По мере роста предложений Netflix растет и сложность систем, поддерживают его, что приводит к дублированию и несовместимости моделей, несовместимости терминологии, проблемам качества данных и несовместимости отношений между данными. Для решения этих задач требуется новая основа, которая позволяет определить модель один раз и использовать эти определения везде, связывая концепции с реальными системами и проецируя эти определения наружу, генерируя схемы и обеспечивая согласованность по всей системе. Это привело к разработке UDA - Единая Архитектура Данных), которая позволяет моделировать домены один раз и представлять их постоянно по всей системе, обеспечивая автоматизацию, обнаружение и семантическую совместимость. UDA позволяет пользователям и системам регистрировать и связывать модели доменов, каталогизировать и сопоставлять модели доменов с контейнерами данных, транслировать модели доменов в языки определения схем, перемещать данные надежно между контейнерами данных, обнаруживать и исследовать концепции доменов и программно просматривать граф. UDA - это граф связей, который связывает бизнес-концепции с схемами и контейнерами данных, основанный на внутренней метамодели под названием Upper, который определяет язык для моделирования доменов в UDA. Upper - это язык для описания доменов и их концепций, и он используется для моделирования представлений контейнеров данных и сопоставлений. UDA использует модель графа с именованными графами, обеспечивая разрешение, модульность и управление по всему графу.
CdXz5zHNQW_aXb9bCvUTK.png
Системы рекомендаций являются неотъемлемыми компонентами электронной коммерции, потокового медиа и социальных сетей, оказывая значительное влияние на продукт и бизнес. В Netflix эти системы соединяют членов с релевантным контентом в нужное время. Модель фундамента рекомендаций достигла значительного прогресса в понимании предпочтений пользователей, но есть возможность дальнейшего улучшения ее возможностей. Расширив модель фундамента для включения прогнозирования скрытых намерений пользователей, модель может обогатить свое понимание сессий пользователей за пределами прогнозирования следующий элемент. Недавние исследования подчеркнули важность понимания намерений пользователей на онлайн-платформах, что приводит к более точным и персонализированным рекомендациям. FM-Intent, новая модель рекомендаций, улавливает скрытые намерения пользовательской сессии с помощью краткосрочных и долгосрочных неявных сигналов в качестве прокси, а затем использует это прогнозирование намерений для улучшения рекомендаций следующего элемента. Модель устанавливает иерархические отношения между прогнозированием намерений и рекомендациями следующего элемента, создавая более согласованный и эффективный pipeline рекомендаций. FM-Intent вносит три основных вклада: новую модель рекомендаций, иерархический подход к многозадачному обучению и всестороннюю экспериментальную валидацию, демонстрирующую значительные улучшения по сравнению с моделями уровня искусства. FM-Intent была успешно интегрирована в экосистему рекомендаций и может быть использована для нескольких приложений, включая оптимизацию пользовательского интерфейса, аналитику и усиленные сигналы рекомендаций.
CdXz5zHNQW_QduYXjmsjM.png
В Netflix была разработана мощная платформа обработки событий для мониторинга, измерения и оптимизации рекламных кампаний. Система показа рекламы опирается на стабильный поток рекламных событий для корректировки решений, ограничения частоты показов, темпа и персонализации. Изначальная система обработки рекламных событий состояла из трех основных компонентов: Microsoft Ad Server, Netflix Ads Manager и Ad Event Handler. Система была разработана для обеспечения эффективной работы петли обратной связи, предоставляя информацию об показах, ограничении частоты показов и процессах монетизации. По мере расширения бизнеса был введен новый уровень персистентности с использованием Key-Value абстракции для решения таких задач, как рост объема данных и URL-адресов сторонних систем отслеживания. Конвейер обработки событий был дополнительно усовершенствован для поддержки собственной рекламной технологии, включая такие функции, как ограничение частоты показов, информация о ценах и надежная система отчетности. Было запланировано создание централизованной системы сбора рекламных событий, предоставляющей единый унифицированный контракт данных для потребителей и разделяющей зоны ответственности между восходящими системами и потребителями. Новый конвейер поддерживал различные функции, такие как измерение, финансы/биллинг, отчетность, ограничение частоты показов и поддержание важной петли обратной связи с рекламным сервером. Разработка систем обработки рекламных событий стала тщательно организованным путешествием, демонстрирующим командную работу, планирование и координацию между различными командами. Новая система значительно ускорила возможность запуска новых возможностей для бизнеса, поддерживая возможности программной закупки, обмена сигналами отказа от отслеживания и обеспечивая точную отчетность и измерения.
CdXz5zHNQW_x4VyedRjxa.png
Netflix уделяет первостепенное внимание улучшению пользовательского опыта, сотрудничая с технологическими партнерами для совершенствования инструментов и рабочих процессов. Это сотрудничество направлено на повышение разборчивости диалогов на протяжении всего производственного процесса, решая проблемы от съемочной площадки до экрана. Ключевой инициативой является Pipeline целостности диалогов (Dialogue Integrity Pipeline), который выявляет и смягчает факторы, влияющие на ясность, такие как шумная обстановка и сведение звука. Netflix использует стандартные для отрасли измерители громкости и разработала систему измерений на основе eSTOI для анализа разборчивости диалогов. Чтобы улучшить оптимизацию перед доставкой, Netflix сотрудничал с Fraunhofer IDMT и Nugen Audio для создания плагина DialogCheck. Этот плагин, интегрированный в цифровые звуковые рабочие станции (DAW), обеспечивает обратную связь в реальном времени для звукоинженеров. Сотрудничество использует решение Fraunhofer по разборчивости речи на основе машинного обучения и опыт Nugen Audio в области аудиоплагинов. Плагин DialogCheck позволяет рано выявлять и устранять проблемы с ясностью диалогов, гарантируя, что художественный замысел не будет нарушен. Конечная цель - предоставление захватывающего и доступного повествования для всех зрителей, независимо от условий прослушивания. Этот совместный подход подчеркивает приверженность Netflix к совершенству звука и инновациям в повествовании.
CdXz5zHNQW_u9iv4wSU0L.png
Netflix использует eBPF для захвата журналов потоков TCP в крупном масштабе для улучшения сетевых сведений, но точная атрибуция IP-адресов потоков к идентификаторам рабочей нагрузки была значительной проблемой. Первоначальный подход к атрибуции основывался на Sonar, внутренней службе отслеживания IP-адресов, но он привел к неправильной атрибуции из-за задержек и сбоев в распределенных системах. Неправильная атрибуция сделала данные потоков ненадежными для принятия решений, а обходной путь, при котором полученные потоки сохранялись в течение 15 минут перед атрибуцией, не решил проблему. Чтобы решить эту проблему, Netflix разработал новый метод атрибуции, который атрибутирует локальные IP-адреса, определяя локальную идентификатор рабочей нагрузки из ее окружения. Для контейнерных рабочих нагрузок Netflix использовал IPMan, службу назначения IP-адресов контейнеров, для атрибуции локальных IP-адресов. Как только локальные IP-адреса атрибутируются, удаленные IP-адреса можно атрибутировать, изучая временные диапазоны, в течение которых каждая рабочая нагрузка владеет данным IP-адресом. FlowCollector поддерживает в памяти хэш-карту для представления этих знаний и делится изученными временными диапазонами с другими узлами с помощью Kafka. Новый метод обеспечивает точную атрибуцию и корректно обрабатывает временные проблемы, и он также экономически эффективен благодаря своей простоте и поиску в памяти. Метод расширен для атрибуции межрегиональных IP-адресов путем перенаправления потоков на узлы в соответствующем регионе. Наконец, метод еще больше расширен для атрибуции IP-адресов, не принадлежащих рабочим нагрузкам, таких как те, которые принадлежат сети доставки контента Netflix.
CdXz5zHNQW_ODQpwXb03K.png
"Переход киноиндустрии на облачные рабочие процессы сталкивается с проблемами при глобальном внедрении. Netflix стремится решить эти проблемы с помощью своего Media Production Suite (MPS), предназначенного для кинематографистов. MPS упрощает управление медиа, устраняя скучные задачи и повышая творческий потенциал. Традиционные рабочие процессы, использующие физические кассеты, медленные и неудобные, препятствующие сотрудничеству. Цифровые рабочие процессы также сталкиваются с проблемами в распространении и стандартизации. Облачные технологии предлагают решения, но требуют преодоления операционных и технологических барьеров. Netflix решает эти проблемы, привлекая людей и приложения к медиа, а не наоборот. MPS решает глобальные различия в технологиях и стандартизации, учитывая различные потребности рынка. Этот пакет автоматизирует процессы, такие как управление цветом и кадрирование, используя отраслевые стандарты. Инфраструктура сочетает облачные и физические возможности, оптимизированные для производительности пользователя. MPS включает инструменты для ингеста, медиа-библиотеки, дневных съёмок, удалённых рабочих станций и многое другое. Более 350 тайтлов использовали инструменты MPS, с отзывами из разных глобальных регионов. Бразильский сериал "Сенна" принял MPS, продемонстрировав свою способность преодолеть географические барьеры."
Netflix разрабатывает базовую модель для рекомендаций, чтобы централизовать изучение предпочтений пользователей и повысить эффективность различных моделей рекомендаций. Существующая система использует специализированные модели, которые дорого поддерживать и в которых сложно делиться инновациями. Базовая модель направлена на извлечение знаний из обширной истории взаимодействия пользователей и данных о контенте, а также на распространение этих знаний на другие модели. Вдохновленный большими языковыми моделями, подход переходит к стратегии, ориентированной на данные, с использованием полу-автоматического обучения. Netflix токенизирует взаимодействие пользователей, балансируя между детализацией данных и сжатием последовательности для обработки длительной истории взаимодействия. Для управления вычислительной эффективностью во время обучения используются механизмы разреженного внимания и выборка скользящим окном. Каждый токен содержит богатую, разнородную информацию о действии и контенте, используя признаки, полученные как во время запроса, так и после действия. Модель использует авторегрессивную цель предсказания следующего токена, аналогичную GPT, но с модификациями, учитывающими различную важность взаимодействия. Модель предсказывает несколько токенов и использует вспомогательные цели предсказания для захвата долгосрочных зависимостей и повышения точности. Для решения проблемы "холодного старта" новых объектов, модель построена с использованием инкрементного обучения и возможностью делать выводы о ранее невидимых объектах, используя метаданные объектов и входных данных.
CdXz5zHNQW_VZmJPzyqeS.png
Netflix начал транслировать контент HDR10+ на устройствах с поддержкой AV1, обеспечивая лучший просмотровой опыт для сертифицированных устройств HDR10+. Это улучшение существующего контента HDR10, который использовал только статические метаданные. Динамические метаданные в HDR10+ улучшают качество и точность изображения. Netflix всегда была пионером в внедрении технологии HDR, и за последние пять лет потоковая передача HDR увеличилась более чем на 300%. Компания теперь имеет более 11 000 часов HDR-контента.Netflix включил поддержку HDR10+ с помощью видеокодека AV1, который является одним из самых эффективных кодеков. AV1 уже является вторым по популярности кодеком на Netflix, и с добавлением потоков HDR10+ ожидается, что он скоро станет самым популярным кодеком. Компания добавляет потоки HDR10+ как к новым релизам, так и к существующим популярным HDR-тайтлам, с целью обеспечения HDR10+-опыта для всех HDR-тайтлов к концу года.HDR10+ является одним из трёх распространённых форматов HDR, наряду с Dolby Vision и HDR10. HDR10+ и Dolby Vision используют динамические метаданные, которые обеспечивают статистику изображения контента на основе каждого кадра, позволяя оптимизировать коррекцию тона для каждой сцены. Это достигает большей перцептивной точности исходного изображения, сохраняя творческий замысел. Чтобы получить HDR10+, члены должны иметь подписку на тарифный план Netflix Premium, тайтл должен быть доступен в формате HDR10+, а устройство члена должно поддерживать AV1 и HDR10+.Запуск HDR10+ был совместным усилием нескольких команд в Netflix, и компания благодарна всем, кто внёс свой вклад в реализацию этой идеи. Комитет к инновациям и качеству подчеркивает приверженность Netflix к обеспечению погружающего и аутентичного просмотрового опыта для всех своих членов.
CdXz5zHNQW_x7iQNmTXt1.png
Чтобы достичь всеобъемлющей наблюдаемости названий на Netflix, компания ввела конечные точки наблюдаемости во всех сервисах внутри своего стека персонализации и обнаружения. Каждый микросервис, участвующий в стеке, должен был ввести новую конечную точку "Здоровье названия", которая соответствует принципам точного отражения поведения в производстве, стандартизации и ответа на триаду прозрачности. Триада прозрачности требует от конечной точки ответа на вопросы, подходит ли название для продвижения, почему оно не подходит, и что можно сделать, чтобы исправить проблемы.Была разработана стабильная формат запроса/ответа протокола для стандартизации связи между сервисом наблюдаемости и конечными точками наблюдаемости стека персонализации. Высокоуровневая архитектура решения включает в себя создание конечных точек наблюдаемости, активное мониторинг, отслеживание реального времени показов названий, хранение данных в оптимизированном хранилище данных и предоставление простых в интеграции API для панели управления.Микросервис "Здоровье названия" запускает запланированную задачу сбора данных каждые 30 минут для получения соответствующей информации о здоровье названия из назначенных сервисов. Реальные данные о показах названий обрабатываются из очереди Kafka, которая опрашивается каждые две минуты для получения данных о показах. Данные затем агрегируются и представляются в качестве дополнительного индикатора состояния здоровья для заинтересованных сторон.Данные хранятся в выделенном потоке Hollow для каждого сбора, что позволяет обеспечить высокопроизводительный доступ только для чтения и позволяет отслеживать общее состояние здоровья и историю названий. Панель управления наблюдаемости использует сервис "Здоровье названия" для представления состояния названий заинтересованным сторонам, а система также имеет функцию "Путешествие во времени", которая имитирует трафик заранее, чтобы обнаружить и исправить проблемы до того, как они повлияют на членов.Архитектура системы и стратегии позволили Netflix улучшить наблюдаемость запуска названий, обеспечив захватывающий просмотровый опыт и укрепив доверие с создателями контента и партнерами. Решение также закладывает основу для будущих инноваций, обеспечивая то, чтобы каждая история достигла своей целевой аудитории и чтобы каждый член наслаждался своими любимыми названиями на Netflix.
CdXz5zHNQW_bbTwixEEHc.png
В Netflix изображения на платформе называются "впечатлениями" (impressions) и играют решающую роль в персонализации пользовательского опыта. Захват и обработка этих впечатлений - сложная задача, требующая сложной системы. Система отслеживает и обрабатывает миллиарды впечатлений ежедневно, сохраняя подробную историю воздействия на каждый профиль. Эта история впечатлений имеет решающее значение для улучшения персонализации, ограничения частоты показа, выделения новых релизов и аналитических данных. Первым шагом в управлении впечатлениями является создание набора данных "Источник истины" (Source-of-Truth, SOT), который поддерживает различные рабочие процессы и позволяет использовать несколько сценариев. Сырые события впечатлений собираются с клиентской стороны и обрабатываются с помощью пользовательского извлекателя событий, Apache Kafka и Apache Iceberg. Затем данные фильтруются, обогащаются и структурируются с помощью Apache Flink, что устанавливает определенный источник истины для данных о впечатлениях Netflix. Система обеспечивает высокое качество впечатлений, собирая подробные метрики и оповещая команду о потенциальных проблемах. Архитектура разработана для обработки огромного объема событий впечатлений в реальном времени, с упором на масштабируемость, гибкость и высокую доступность. Будущая работа включает в себя решение проблемы несхематизированных событий, автоматизацию настройки производительности и улучшение оповещений о качестве данных.
Чтобы обеспечить бесперебойный запуск названий и их обнаружение на Netflix, важно сделать шаг назад и понять более широкий контекст, прежде чем приступить к поиску решений. Такой вдумчивый подход создает устойчивость и масштабируемость для будущего. Первым шагом является понимание общей картины путем определения заинтересованных сторон, картографирования текущего ландшафта, уточнения основной проблемы и оценки бизнес-приоритетов. Основными заинтересованными сторонами являются операторы запуска названий, инженеры персонализации, менеджеры продукта и творческие представители.Картографирование текущего ландшафта показало, что не существует установленного решения для наблюдаемости запуска названий, что представляет как проблемы, так и возможности. Основная проблема заключалась в том, чтобы обеспечить справедливое отношение к каждому названию со стороны персонализации. Для решения этой проблемы была введена общая концепция "Здоровье названия", охватывающая различные метрики и индикаторы, отражающие производительность названия в плане обнаружения и вовлечения пользователей.Здоровье названия предоставило основу для мониторинга и оптимизации жизненного цикла каждого названия, позволяя согласовывать принципы и требования с партнерами до создания решений. Чтобы разработать прочный план наблюдаемости запуска названий, проблемы были категоризированы в три основные области: настройка названия, системы персонализации и алгоритмы. Категоризируя проблемы, можно систематически решать проблемы и предоставлять надежный, персонализированный опыт для каждого названия.Анализ проблем показал, что проблемы настройки являются наиболее распространенными, но также самыми легкими для исправления, в то время как проблемы алгоритмов редки, но трудны для решения. Оценка вариантов привела к решению сосредоточиться на проактивном обнаружении проблем, выявлении проблем до запуска для обеспечения более гладких запусков, лучшего опыта пользователей и более сильной надежности системы. Это решение заложило основу для масштабируемой, прочной системы, которая может расти вместе с сложностями постоянно развивающейся платформы.
CdXz5zHNQW_aUcN7HOcn2.png
Статья завершает многочастную серию об инженерии аналитики в Netflix, фокусируясь на техническом мастерстве. Она обсуждает советы по дизайну панелей мониторинга, подчеркивая важность понимания потребностей пользователей и использования существующих шаблонов. Статья также охватывает дизайн панелей мониторинга, включая то, как структурировать приложения, чтобы они соответствовали психологическим моделям пользователей, и предоставляет рекомендации по компоновке страниц, интерактивным графикам и вводу в эксплуатацию. Кроме того, она делится выводами из развертывания аналитического API в Netflix, подчеркивая ключевые выводы, такие как измерение воздействия и необходимости результатов в реальном времени, изучение всех доступных решений, согласование ожиданий производительности и важность тщательного тестирования и сотрудничества.
CdXz5zHNQW_QJdCCQ1JwJ.png
Команда инженеров по аналитике Netflix работает над различными проектами, включая анализ игровой метрики для оценки эффективности рекламных кампаний по привлечению пользователей в игры Netflix. Команда использует метод синтетического контроля для оценки контрфактического сценария этих кампаний и разработала интерактивный инструмент для анализа результатов прироста. Они также работают над моделью прироста рентабельности инвестиций (ROI), чтобы направлять проектирование и бюджетирование будущих кампаний. Кроме того, команда сосредоточена на измерении и подтверждении прироста регистраций в играх Netflix, используя подход, который оценивает прирост регистраций, опираясь на другие модели, такие как оценка прироста пожизненной ценности аккаунта. Путь игрока в играх Netflix также моделируется с помощью машины состояний для отслеживания ежедневного состояния и вероятности переходов между состояниями аккаунта. Эта модель помогает оценить прогресс в достижении целей вовлеченности и выявить области для увеличения числа ежемесячно активных аккаунтов. Статья также рассматривает моделирование денежных потоков контента, где Netflix прогнозирует потребность в денежных средствах для слотов "To Be Determined" (TBD), моделируя ежедневные расходы до и после даты запуска проекта. Наконец, команда работает над повышением эффективности процесса транскрипции в процессах дубляжа, используя технологию вспомогательного распознавания речи, с многоуровневой системой оценки производительности.
CdXz5zHNQW_x65HF2Cxou.png
Metaflow наделяет команды Netflix эффективностью в разработке и управлении проектами ML/AI. Новая функция Metaflow, Configs, позволяет пользователям определять параметры потока, требования к ресурсам и настройки, специфичные для приложений, в файлах конфигурации,-readable человек. Configs расширяют существующие артефакты Metaflow и параметры, предоставляя большую гибкость и варианты настройки. Они могут быть динамически загружены и изменены, даже при использовании удаленной выполнения или развертывания в производстве. Configs открывают передовые случаи использования, такие как смешивание фиксированных развертываний с runtime-конфигурируемостью, валидация конфигураций, управление иерархиями файлов конфигурации и генерация конфигураций на лету. В сочетании с менеджерами конфигураций, такими как Hydra, Configs позволяют оркестровать эксперименты над несколькими конфигурациями и сканировать пространство параметров. Metaboost, внутренний инструмент Netflix, является примером практического использования Configs, предоставляя единый интерфейс для управления проектами ML на различных платформах, чтобы улучшить согласованность проектов и уменьшить риски.
Команда инженеров-аналитиков Netflix работает над тем, чтобы дать компании возможность эффективно создавать и предоставлять высококачественные, применимые на практике аналитические данные по всей компании. Недавно они провели ежегодную внутреннюю конференцию по инженерной аналитике, на которой были затронуты различные темы, такие как DataJunction, LORE и использование данных базовой платформы для обеспечения эффективности аналитики в облаке. DataJunction — это решение с открытым исходным кодом, позволяющее стандартизировать и предоставлять доступ к определениям метрик, а LORE — это чат-бот, использующий большие языковые модели (LLM) для предоставления конечным пользователям реальных аналитических данных. Команда также фокусируется на демократизации аналитики с помощью таких инициатив, как «Внедрение аналитики» (Analytics Enablement), направленных на то, чтобы дать практикующим аналитикам Netflix возможность эффективно создавать и предоставлять высококачественные аналитические данные. Цель команды — дать инженерному подразделению возможность принимать решения, учитывающие эффективность, при создании и обслуживании сервисов, обеспечивающих работу Netflix как потокового сервиса.
Netflix использует Amazon Web Services (AWS) для удовлетворения потребностей в облачной инфраструктуре, включая вычислительную технику, хранение и сетевые технологии. Диверсифицированный технологический ландшафт компании генерирует обширные данные из различных инфраструктурных сущностей, которые инженеры данных и аналитики используют для предоставления инженерной организации четких рекомендаций. Отдел данных и аналитики сотрудничает с инженерными командами для обмена ключевыми показателями эффективности, что дает возможность заинтересованным сторонам принимать обоснованные деловые решения. Команда специалистов по платформе DSE разработала решение из двух компонентов: Foundational Platform Data (FPD) и Cloud Efficiency Analytics (CEA). FPD предоставляет централизованный слой данных для всех данных платформы, характеризующийся единообразной моделью данных и стандартизированной методологией обработки данных. CEA предлагает слой аналитических данных, который обеспечивает последовательные временные показатели эффективности для различных вариантов использования в бизнесе. Команда стремится продолжить интеграцию платформ в FPD и CEA, стремясь к практически полному охвату затрат в следующем году. Они также планируют расширить FPD на другие области бизнеса, такие как безопасность и доступность, и перейти к упреждающим подходам с помощью предиктивной аналитики и машинного обучения для оптимизации использования и обнаружения аномалий в расходах.
Для Netflix управление запуском более тысячи новых продуктов по всему миру каждый месяц является приоритетной задачей, требующей прочных систем, обеспечивающих всестороннюю наблюдаемость. Компания стремится связать каждую историю с нужной аудиторией, но традиционные системные показатели, такие как частота ошибок и загрузка ЦП, не учитывают нюансы успешности названия. Чтобы преодолеть этот разрыв, Netflix необходимо разработать системы, которые распознают эти нюансы и позволят каждому названию блистать.В первые дни существования Netflix Originals команда запуска вручную проверяла размещение названий, но такой подход не мог масштабироваться с учетом глобальной экспансии компании. В результате Netflix столкнулась с операционными проблемами, связанными с предоставлением точных и своевременных ответов на сложные вопросы об эффективности названий и их обнаруживаемости. Компании требовалось масштабируемое решение, гарантирующее безупречный запуск каждого названия, с правильной настройкой метаданных и ресурсов, бесперебойным потоком данных и алгоритмами, функционирующими в соответствии с замыслом.Чтобы решить эти задачи, Netflix рассмотрела два варианта: обработка логов и точки наблюдаемости в системах персонализации. Обработка логов предлагает простое решение для мониторинга и анализа запуска названий, но у нее есть ограничения, например, в обнаружении проблем до их возникновения и обеспечении точности. С другой стороны, точки наблюдаемости обеспечивают мониторинг в режиме реального времени, упреждающее обнаружение проблем и повышенную точность, но требуют значительных первоначальных инвестиций и синхронизации усилий.В конечном счете Netflix приняла всеобъемлющую стратегию наблюдаемости, которая включает мониторинг в реальном времени, упреждающее обнаружение проблем и сопоставление с источником истины. Этот подход значительно повысил способность компании обеспечивать успешные запуски названий и их обнаружение на всей платформе. В следующей части этой серии Netflix поделится ключевыми техническими знаниями и подробностями о том, как им удалось этого добиться.
Пользователь сообщил, что интерфейс JupyterLab на его рабочем столе становится медленным и нереспонсивным при запуске определенных тетрадей. Чтобы оценить медлительность, мы удерживали клавишу в течение 15 секунд, запуская тетрадь пользователя, и наблюдали задержки от 1 до 10 секунд, в среднем 7,4 секунды. Мы исключили из списка возможных причин перегрузку CPU и сетевые проблемы. Используя py-spy, мы обнаружили, что много времени CPU тратилось на функцию __parse_smaps_rollup в процессе jupyter-lab. Эта функция является частью расширения jupyter_resource_usage, используемого для получения информации о потреблении ресурсов. Функция вызывается периодически из UI через API-эндпоинт. Код получает всех дочерних процессов процесса jupyter-lab рекурсивно, включая как процесс ipykernel Notebook, так и все процессы, созданные тетрадью. Стоимость работы этой функции линейна по отношению к количеству всех дочерних процессов. В коде для воспроизведения мы создаем 96 процессов, что больше 64 CPU, выделенных контейнеру. Это несоответствие делает родительский процесс медленным.
Netflix разработала TimeSeries Abstraction для эффективного хранения и запроса больших объемов временных данных событий с низкими задержками в несколько миллисекунд. Эта система предназначена для обработки высокопроизводительных записей, эффективного запроса в больших наборах данных, глобальных чтений и записей, настраиваемой конфигурации и экономической эффективности. TimeSeries Abstraction построена на основе основных принципов проектирования, включая разделение данных, гибкое хранение, настраиваемость, масштабируемость и шардированную инфраструктуру.Модель данных состоит из элементов событий, событий, идентификаторов временных рядов и пространств имен. Элементы событий представляют собой пары ключ-значение, которые хранят данные для конкретного события, в то время как события представляют собой структурированные коллекции одного или нескольких элементов событий. Идентификаторы временных рядов представляют собой коллекции событий за период хранения набора данных, а пространства имен представляют собой коллекции идентификаторов временных рядов и данных событий.TimeSeries Abstraction предоставляет API для взаимодействия с данными событий, включая WriteEventRecordsSync, WriteEventRecords, ReadEventRecords, SearchEventRecords и AggregateEventRecords. Слой хранения состоит из основного хранилища данных и необязательного индексного хранилища данных, с Apache Cassandra и Elasticsearch в качестве предпочтительных вариантов для хранения долговременных данных и индексации соответственно.Основное хранилище данных использует временную схему разделения для разделения данных на управляемые фрагменты на основе временных интервалов, что позволяет эффективно запрашивать конкретные временные диапазоны и оптимизировать производительность хранения и запросов. Данные дополнительно разделены на временные корзины и корзины событий для эффективного сканирования диапазонов и управления высокопроизводительными операциями записи.TimeSeries Abstraction предназначена для решения проблем хранения и запроса временных данных событий в масштабе, включая высокую производительность, эффективный запрос, глобальные чтения и записи, настраиваемую конфигурацию и экономическую эффективность. Используя уникальную модель данных событий и масштабируемый слой хранения, TimeSeries Abstraction предоставляет универсальное и экономически эффективное решение для управления временными данными в Netflix.
Слой абстракции ключ-значение (KV) Netflix Data Abstraction Layer (DAL) - это фундаментальный сервис абстракции, упрощающий доступ к данным и улучшающий надежность инфраструктуры. Он предлагает единый интерфейс разработчикам, независимо от базы данных.Слой KV использует архитектуру двойного картографирования, поддерживая как простые, так и сложные модели данных. Он предоставляет четыре основных CRUD-API (PutItems, GetItems, DeleteItems) и сложные API MutateItems и ScanItems для разнообразных случаев использования.Пространство имен (namespace) определяет, где и как хранятся данные, обеспечивая логическое и физическое разделение. Это позволяет разным случаям использования быть направленными к наиболее подходящей системе хранения на основе конкретных требований к производительности, долговечности и согласованности.API PutItems и DeleteItems используют токены идемпотентности, чтобы обеспечить целостность данных и гарантировать правильный порядок операций. Предпочтительными являются клиентские монотонные токены для надежности.Для работы с большими blob-объектами слой KV использует технологию chunking. Она разбивает большие данные на меньшие части, которые затем стадируются и фиксируются с соответствующими метаданными.Пагинация является ключевым аспектом для работы с большими наборами данных. API GetItems поддерживает пагинацию с помощью next_page_token, обеспечивая эффективный доступ к данным в несколько запросов.Могилы (tombstones), указывающие на удаленные данные, могут влиять на производительность. KV оптимизирует удаление записей и диапазонов, генерируя одиночную могилу, что уменьшает пиковые нагрузки и поддерживает стабильную производительность.Удаление на уровне элементов обрабатывается с помощью удалений на основе TTL с джиттером. Это скрывает сложность движка хранения и минимизирует влияние удалений на пагинацию чтения.Идемпотентность и chunking являются ключевыми для работы с хвостовыми задержками и обеспечения предсказуемой низколатентной производительности. Эти философии проектирования способствуют надежности и производительности, требуемым для глобальных операций Netflix.
Pushy - это сервер WebSocket Netflix, поддерживающий постоянные соединения с устройствами, на которых запущено приложение Netflix. Он эволюционировал из службы доставки сообщений в неотъемлемую часть экосистемы Netflix. Pushy обрабатывает сотни миллионов одновременных соединений WebSocket, доставляя сотни тысяч сообщений в секунду, с уровнем надежности доставки сообщений 99,999%. Initially разработанный для FireTV, охват Pushy распространился почти на миллиард устройств, включая мобильные устройства и старые устройства с ограниченными возможностями. Чтобы справиться с этим ростом, Pushy претерпел несколько улучшений, включая переписывание процессора сообщений с использованием компонентов Netflix paved-path, миграцию реестра Push в KeyValue для лучшей производительности и масштабируемости, и реализацию экспоненциальных политик масштабирования на основе количества соединений. Эти улучшения сделали Pushy более надежным, стабильным и эффективным, позволив ему поддерживать растущее количество устройств и удовлетворять требованиям новых функций.
Netflix использует eBPF для непрерывного мониторинга задержки очереди запуска, показателя шумных соседей (контейнеров, интенсивно использующих ресурсы сервера, ухудшающих производительность в соседних контейнерах).eBPF хуки (sched_wakeup, sched_wakeup_new, sched_switch) используются для захвата задержки очереди запуска и ассоциирования ее с контейнерами (идентификаторами cgroup) с помощью kfuncs (функций ядра) для безопасного доступа к данным, защищенным RCU.Ограничитель скорости в eBPF сбалансирует наблюдаемость с производительностью, ограничивая количество отправляемых в пользовательское пространство данных.Процессы в пользовательском пространстве обрабатывают события из кольцевого буфера eBPF и отправляют метрики в Atlas, включая задержку очереди запуска (runq.latency) и количество прерываний (sched.switch.out) по идентификатору cgroup.Обе метрики runq.latency и sched.switch.out необходимы для выявления шумных соседей, поскольку runq.latency сама по себе может быть вводящей в заблуждение, когда контейнеры достигают своего лимита ЦП.Изучение конкретного случая демонстрирует проблему шумного соседа, вызывающую всплеск задержки очереди запуска и прерываний, когда новый контейнер полностью использует ресурсы хоста.Системные процессы были выявлены как шумные соседи с помощью метрики sched.switch.out.Оптимизации кода eBPF, включая использование BPF_MAP_TYPE_HASH, прямой доступ к членам структуры задачи и игнорирование задач ядра, минимизируют накладные расходы.Патч для ядра Linux был отправлен и принят для улучшения расчета статистики в ядре.BPFtop, инструмент мониторинга процессов eBPF с открытым исходным кодом, был использован для измерения накладных расходов кода eBPF.
Netflix использует алгоритмы персонализации, чтобы рекомендовать контент своим подписчикам, стремясь улучшать долгосрочное удовлетворение. Рекомендации рассматриваются как задача контекстуального бандита, где система выбирает действия на основе контекста и обратной связи от подписчиков. Традиционные системы рекомендаций оптимизируются для короткосрочных метрик, таких как клики, которые могут не полностью отражать долгосрочное удовлетворение. Оптимизация только для удержания имеет недостатки, поэтому Netflix использует прокси-функции вознаграждения, выровненные с долгосрочным удовлетворением подписчиков. Коэффициент клика (CTR) является простым прокси-вознаграждением, но Netflix расширяет его, чтобы учитывать разные действия пользователей и их влияние на удовлетворение. Инженерия вознаграждения - это итеративный процесс уточнения прокси-функции вознаграждения для соответствия долгосрочному удовлетворению подписчиков, включая формирование гипотез, определение вознаграждения, обучение политики бандита и тестирование A/B. Netflix решает проблему задержки обратной связи, прогнозируя отсутствующую обратную связь, что позволяет использовать всю обратную связь в прокси-функции вознаграждения. Несмотря на улучшения оффлайн-модели, разрыв между онлайн- и оффлайн-метриками может возникать, когда прокси-вознаграждение не полностью соответствует долгосрочному удовлетворению подписчиков. Netflix решает это, уточняя определение прокси-вознаграждения. Остаются открытые вопросы, такие как автоматизация процесса обучения прокси-функции вознаграждения, определение оптимального времени ожидания для задержанной обратной связи и использование обучения с подкреплением для соответствия долгосрочному удовлетворению.