Flux RSS Netflix TechBlog - Me... Note

Flux RSS Netflix TechBlog - Medium

Le blog technique de Netflix propose des aperçus sur la manière dont Netflix gère la technologie. Ils fournissent des recherches sur la science des données, l'ingénierie, la conception et les innovations technologiques. Ils mettent en avant leurs innovations, comme leur réseau de distribution de contenu propriétaire, et offrent des aperçus sur leurs efforts pour assurer la fiabilité de leur service.

Fil de notes

Derrière les écrans : En direct sur Netflix. Partie 1

"Il y a trois ans, Netflix s'est demandé comment divertir le monde entier grâce à la diffusion en direct, un format presque aussi ancien que la télévision elle-même. Cette question a conduit au développement de centaines d'événements en direct, notamment des spectacles de comédie, des sports et des événements de la WWE. Dans une série intitulée "Derrière les flux", Netflix partagera le parcours technique de la mise en place de capacités de diffusion en direct. La diffusion en direct a introduit de nouvelles considérations pour l'architecture et les choix technologiques, nécessitant une construction importante pour fonctionner correctement sur Netflix. Les piliers clés de l'architecture en direct de Netflix comprennent des installations de diffusion dédiées, des pipelines de transcodage et d'emballage redondants basés sur le cloud, la mise à l'échelle de la livraison de contenu en direct, l'optimisation de la lecture en direct et l'exécution de services de découverte et de contrôle de lecture dans le cloud. Netflix a également centralisé les métriques en temps réel dans le cloud avec des outils et des installations spécialisés. La mise en place de la fonctionnalité en direct a apporté de nouveaux défis et opportunités d'apprentissage, et Netflix apprend encore chaque jour comment livrer des événements en direct de manière plus efficace. Les enseignements clés jusqu'à présent incluent l'importance des tests exhaustifs, de la pratique régulière, des prédictions de fréquentation, de la dégradation gracieuse et des tempêtes de réessai. Netflix a fait des progrès significatifs dans la mise en place d'un système de diffusion en direct robuste, mais il y a encore beaucoup à apprendre et à améliorer."
CdXz5zHNQW_JBiedm3Ejv.png

Architecture Tudum de Netflix : du CQRS avec Kafka au CQRS avec RAW Hollow

Tudum.com est la destination officielle des fans de Netflix, offrant du contenu exclusif, des aperçus en coulisses et des expériences interactives à plus de 20 millions de membres chaque mois. L'architecture de la plateforme est conçue pour être maintenable, extensible et flexible, en utilisant une approche d'interface utilisateur pilotée par le serveur similaire à la ségrégation de la commande de requête et de la responsabilité (CQRS). L'équipe éditoriale de Tudum crée du contenu, qui est stocké dans une base de données d'écriture, puis converti en un format optimisé pour la lecture pour être consommé par les utilisateurs. L'architecture initiale utilisait Kafka pour séparer les bases de données d'écriture et de lecture, permettant une mise à l'échelle indépendante et une cohérence éventuelle. Cependant, cette approche a introduit un délai entre les éditions de contenu et leur réflexion sur le site web. L'équipe a identifié la source du délai comme étant le service de données de page, qui utilisait un cache près pour accélérer la construction de page. Pour résoudre ce problème, Netflix a développé RAW Hollow, une base de données d'objets compressés, en mémoire, co-localisée, qui fournit une forte cohérence de lecture après écriture et une faible latence. Tudum était un cas d'essai idéal pour RAW Hollow, qui a considérablement réduit les E/S et a permis un accès aux données synchrone en temps O(1). L'architecture mise à jour a éliminé la nécessité d'infrastructure Kafka et a réduit les temps de propagation des données, permettant aux rédacteurs et aux éditeurs de prévisualiser les modifications en quelques secondes. La migration a également entraîné des temps de requête plus rapides, avec un temps de construction de la page d'accueil passant de 1,4 seconde à 0,4 seconde.
CdXz5zHNQW_0cHOBDLN2F.jpeg

Améliorer l'efficacité de la livraison de contenu en classifiant les erreurs de cache

Le programme Open Connect de Netflix est un réseau de diffusion de contenu (RDC) qui vise à offrir la meilleure qualité d'expérience (QdE) à ses membres en localisant la diffusion de contenu grâce à des partenariats avec des fournisseurs de services internet (FSI) dans le monde entier. Le programme utilise des serveurs personnalisés appelés appareils Open Connect (AOC) conçus pour être efficaces et économiques. Pour évaluer l'efficacité d'Open Connect, Netflix utilise un cadre pour identifier les sources d'inefficacités, notamment les erreurs de cache, qui se produisent lorsque les octets ne sont pas servis à partir du meilleur AOC disponible pour un client donné. Les erreurs de cache sont classées en trois catégories : erreurs de contenu, erreurs de santé et autres erreurs. Les erreurs de contenu se produisent lorsque les fichiers ne sont pas trouvés sur les AOC du site local, tandis que les erreurs de santé se produisent lorsque les ressources matérielles du matériel AOC du site local sont saturées. Netflix enregistre deux composants de données critiques pour calculer les erreurs de cache : les journaux de manifeste de lecture et les journaux de serveur AOC. Ces journaux sont joints pour calculer des métriques d'erreurs de cache détaillées à différents niveaux d'agrégation. L'architecture du système pour calculer les erreurs de cache implique l'émission de journaux, la consolidation de journaux, l'enrichissement de journaux et les joints basés sur des fenêtres de diffusion en continu. Le modèle de données utilisé pour évaluer les erreurs de cache permet de répéter la logique hors ligne et dans des simulations avec des paramètres variables pour tester de nouvelles conditions et fonctionnalités sans affecter le trafic de production.
CdXz5zHNQW_u3pdU106U1.png

AV1 à grande échelle : Synthèse de grain de film, Le Réveil

Netflix a introduit les flux de synthèse de grain de film AV1 (FGS), qui préservent l'intégrité artistique du grain de film tout en optimisant l'efficacité des données. Le grain de film est un élément clé dans la narration, ajoutant de la profondeur et du réalisme aux films, mais il est difficile à compresser en utilisant des algorithmes traditionnels. L'outil AV1 FGS modèle le grain de film à travers deux composants : le motif de grain de film et l'intensité de grain de film. Le motif de grain de film est répliqué à l'aide d'un modèle auto-régressif, tandis que l'intensité de grain de film est contrôlée par une fonction d'échelle. Le processus d'encodage retire le grain de film de la vidéo, le compresse et transmet le motif et l'intensité du grain avec les données vidéo compressées. Lors de la lecture, le grain de film est recréé et réintégré dans la vidéo à l'aide d'une méthode basée sur des blocs. L'activation de AV1 FGS a entraîné une réduction significative du débit binaire, permettant une diffusion vidéo de haute qualité avec moins de données. La technologie a également amélioré la qualité visuelle, avec du bruit synthétisé masquant efficacement les artefacts de compression. Netflix a déployé FGS sur sa plateforme, et les utilisateurs peuvent maintenant profiter de flux FGS activés sur les appareils pris en charge. Le déploiement a entraîné une expérience de qualité plus lisse et plus fiable pour les membres de Netflix, avec un débit binaire plus faible, moins d'erreurs de lecture et une stabilité de lecture améliorée.
CdXz5zHNQW_VP7NReszvY.png

Modéliser une fois, représenter partout : UDA (Architecture de données unifiée) chez Netflix

Alors que les offres de Netflix grandissent, la complexité des systèmes qui les soutiennent augmente également, entraînant des modèles dupliqués et incohérents, une terminologie incohérente, des problèmes de qualité des données et des relations incohérentes entre les données. Pour relever ces défis, une nouvelle fondation est nécessaire pour définir un modèle une seule fois et réutiliser ces définitions partout, reliant les concepts aux systèmes réels et projetant ces définitions vers l'extérieur, générant des schémas et imposant la cohérence à travers les systèmes. Cela a conduit au développement de l'UDA (Architecture de Données Unifiée), qui permet de modéliser les domaines une seule fois et de les représenter de manière cohérente à travers les systèmes, alimentant l'automatisation, la découverte et l'interopérabilité sémantique. L'UDA permet aux utilisateurs et aux systèmes d'enregistrer et de connecter les modèles de domaine, de cataloguer et de mapper les modèles de domaine aux conteneurs de données, de transpiler les modèles de définition de domaine en langages de définition de schéma, de déplacer les données de manière fidèle entre les conteneurs de données, de découvrir et d'explorer les concepts de domaine, et d'inspecter de manière programmatique le graphique de connaissances. L'UDA est un graphique de connaissances qui relie les concepts commerciaux aux schémas et aux conteneurs de données, ancré dans un métamodèle maison appelé Upper, qui définit le langage pour la modélisation de domaine dans l'UDA est un langage pour décrire formellement les domaines et leurs concepts, et il est utilisé pour modéliser les représentations et les mappages des conteneurs de données. L'UDA adopte un modèle d'information de graphique nommé en premier, garantissant la résolution, la modularité et la gouvernance à travers tout le graphique.
CdXz5zHNQW_aXb9bCvUTK.png

FM-Intent : Prédire l'intention de l'utilisateur pendant une session avec un apprentissage hiérarchique à tâches multiples

Les systèmes de recommandation sont des composants essentiels du commerce électronique, des médias de streaming et des réseaux sociaux, générant un impact produit et commercial significatif. Chez Netflix, ils connectent les membres avec du contenu pertinent au bon moment. Le modèle de base de recommandation a fait des progrès substantiels dans la compréhrence des utilisateurs, mais il y a une opportunité de renforcer encore ses capacités. En étendant le modèle de base pour inclure la prédiction des intentions sous-jacentes des utilisateurs, le modèle peut enrichir sa compréhension utilisateur au-delà de la prédiction de l'élément suivant. Des recherches récentes ont mis en évidence l'importance de comprendre l'intention de l'utilisateur sur les plateformes en ligne, ce qui conduit à des recommandations plus précises et personnalisées. FM-Intent, un modèle de recommandation novateur, capture l'intention latente de session utilisateur en utilisant des signaux implicites à court et à long terme comme des proxy, puis exploite cette prédiction d'intention pour améliorer les recommandations d'éléments suivants. Il établit une relation hiérarchique entre les prédictions d'intention et les recommandations d'éléments suivants, créant un pipeline de recommandation plus cohérent et efficace. FM-Intent apporte trois contributions clés : un modèle de recommandation novateur, une approche d'apprentissage multi-tâche hiérarchique, et une validation expérimentale exhaustive montrant des améliorations significatives par rapport aux modèles de pointe. FM-Intent a été intégré avec succès dans l'écosystème de recommandation de Netflix et peut être exploité pour plusieurs applications en aval, notamment l'optimisation d'interface utilisateur personnalisée, l'analytique et les signaux de recommandation améliorés.
CdXz5zHNQW_QduYXjmsjM.png

Coulisses : Construction d'un pipeline de traitement d'événements publicitaires robuste

À Netflix, une plateforme de traitement d'événements robuste a été construite pour surveiller, mesurer et optimiser les campagnes publicitaires. Le système de diffusion des annonces repose sur un flux régulier d'événements publicitaires pour ajuster les décisions, la limitation de fréquence, le rythme et la personnalisation. Le système initial de traitement des événements publicitaires était composé de trois éléments clés : le serveur publicitaire Microsoft, le gestionnaire de publicités Netflix et le gestionnaire d'événements. Le système était conçu pour assurer que la boucle de rétroaction fonctionne efficacement, fournissant des informations sur les impressions, la limitation de fréquence et les processus de monétisation. Lorsque l'entreprise a grandi, une nouvelle couche de persistance utilisant l'abstraction de valeur-clé a été introduite pour répondre aux défis tels que la croissance du volume de données et les URL de suivi de tiers. Le pipeline de traitement des événements a été encore évolué pour prendre en charge la technologie publicitaire interne, intégrant des fonctionnalités telles que la limitation de fréquence, les informations de prix et un système de rapport robuste. Un système de collecte d'événements publicitaires centralisé a été planifié, fournissant un contrat de données unifié unique aux consommateurs et séparant les préoccupations entre les systèmes en amont et les consommateurs. Le nouveau pipeline a pris en charge diverses fonctions telles que la mesure, la facturation, la production de rapports, la limitation de fréquence et le maintien d'une boucle de rétroaction vers le serveur publicitaire. Le développement du système de traitement des événements publicitaires a été un parcours soigneusement orchestré, mettant en valeur l'équipe, la planification et la coordination entre les différentes équipes. Le nouveau système a considérablement accéléré la capacité de lancer de nouvelles fonctionnalités pour l'entreprise, soutenant les achats publicitaires programmatiques, partageant les signaux d'opt-out et assurant des rapports et des mesures précises.
CdXz5zHNQW_x4VyedRjxa.png

Mesurer l'intelligibilité des dialogues pour le contenu Netflix

Netflix donne la priorité à l'amélioration de l'expérience de ses membres en collaborant avec des partenaires technologiques pour améliorer les outils et les flux de travail. Cette collaboration se concentre sur l'amélioration de l'intelligibilité des dialogues tout au long du processus de production, en traitant les problèmes, du plateau à l'écran. Une initiative clé est le "Dialogue Integrity Pipeline", qui identifie et atténue les facteurs impactant la clarté, tels que les environnements bruyants et le mixage audio. Netflix utilise des compteurs de volume standard de l'industrie et a développé un système de mesure basé sur eSTOI pour analyser l'intelligibilité des dialogues. Pour améliorer l'optimisation avant la livraison, Netflix s'est associé à Fraunhofer IDMT et Nugen Audio pour créer le plugin DialogCheck. Ce plugin, intégré aux stations de travail audio numériques (DAW), fournit un retour d'information en temps réel aux ingénieurs du son. La collaboration s'appuie sur la solution d'intelligibilité vocale basée sur l'apprentissage automatique de Fraunhofer et sur l'expertise de Nugen Audio en matière de plugins audio. Le plugin DialogCheck permet une détection et une résolution précoces des problèmes de clarté des dialogues, garantissant que l'intention artistique n'est pas compromise. L'objectif ultime est de proposer une narration immersive et accessible à tous les spectateurs, quel que soit leur environnement d'écoute. Cette approche collaborative souligne l'engagement de Netflix envers l'excellence audio et l'innovation en matière de narration.
CdXz5zHNQW_u9iv4wSU0L.png

Comment Netflix attribue avec précision les journaux de flux eBPF

Netflix utilise eBPF pour capturer les journaux de flux TCP à grande échelle pour améliorer les informations réseau, mais attribuer avec précision les adresses IP de flux aux identités de charge de travail était un défi important. L'approche initiale d'attribution reposait sur Sonar, un service de suivi interne des adresses IP, mais elle a conduit à des erreurs d'attribution en raison de retards et d'échecs dans les systèmes distribués. Les erreurs d'attribution ont rendu les données de flux non fiables pour la prise de décision, et une solution de contournement consistant à conserver les flux reçus pendant 15 minutes avant l'attribution n'a pas éliminé le problème. Pour résoudre ce problème, Netflix a développé une nouvelle méthode d'attribution qui attribue les adresses IP locales en déterminant l'identité de la charge de travail locale à partir de son environnement. Pour les charges de travail en conteneur, Netflix a utilisé IPMan, un service d'attribution d'adresses IP de conteneur, pour attribuer les adresses IP locales. Une fois les adresses IP locales attribuées, les adresses IP distantes peuvent être attribuées en apprenant les plages de temps pendant lesquelles chaque charge de travail possède une adresse IP donnée. FlowCollector maintient une table de hachage en mémoire pour représenter ces connaissances et partage les plages de temps apprises avec d'autres nœuds à l'aide de Kafka. La nouvelle méthode atteint une attribution précise et gère les problèmes transitoires avec grâce, et elle est également rentable en raison de sa simplicité et de ses recherches en mémoire. La méthode est étendue pour attribuer les adresses IP inter-régionales en transférant les flux vers les nœuds de la région correspondante. Enfin, la méthode est encore étendue pour attribuer les adresses IP non liées aux charges de travail, telles que celles appartenant au réseau de diffusion de contenu de Netflix.
CdXz5zHNQW_ODQpwXb03K.png

Globaliser les productions avec la suite de production média de Netflix

La transition de l'industrie cinématographique vers des flux de travail basés sur le cloud se heurte à des défis dans le cadre d'une implémentation mondiale. Netflix vise à résoudre ces problèmes avec sa Media Production Suite (MPS), conçue pour les cinéastes. La MPS rationalise la gestion des médias, éliminant les tâches fastidieuses et stimulant la concentration créative. Les flux de travail traditionnels utilisant des bandes physiques sont lents et lourds, ce qui entrave la collaboration. Les flux de travail numériques rencontrent également des difficultés en matière de distribution et de standardisation. Le cloud offre des solutions, mais nécessite de surmonter des obstacles opérationnels et technologiques. Netflix s'attaque à ces problèmes en rapprochant les personnes et les applications des médias, au lieu de faire l'inverse. La MPS s'attaque aux disparités mondiales en matière de technologie et de standardisation, en tenant compte des divers besoins du marché. La suite automatise des processus tels que la gestion des couleurs et le cadrage en utilisant les normes de l'industrie. L'infrastructure combine des capacités cloud et physiques optimisées pour les performances de l'utilisateur. La MPS comprend des outils pour l'ingestion, la médiathèque, les "dailies" (rushes du jour), les stations de travail à distance, et plus encore. Plus de 350 titres ont utilisé les outils de la MPS, avec des retours d'information provenant de diverses régions du monde. La série brésilienne "Senna" a adopté la MPS, démontrant sa capacité à surmonter les barrières géographiques.

Titre : Lancer l'Observabilité à l'échelle de Netflix

"Pour assurer des lancements de titres sans heurt et une découverte efficace sur Netflix, il est essentiel de prendre un pas en arrière et de comprendre le contexte plus large avant de plonger dans les solutions. Cette approche réfléchie permet de construire la résilience et la scalabilité pour l'avenir. La première étape consiste à comprendre l'image d'ensemble en identifiant les parties prenantes, en cartographiant le paysage actuel, en clarifiant le problème central et en évaluant les priorités commerciales. Les principaux parties prenantes impliqués sont les opérateurs de lancement de titres, les ingénieurs de système de personnalisation, les gestionnaires de produits et les représentants créatifs. La cartographie du paysage actuel a révélé qu'il n'y avait pas de solution établie pour l'observabilité du lancement de titres, présentant à la fois des défis et des opportunités. Le problème central était de s'assurer que chaque titre était traité équitablement par la pile de personnalisation. Pour résoudre ce problème, une compréhension partagée de la "Santé du titre" a été introduite, englobant divers indicateurs et métriques qui reflètent les performances d'un titre en termes de découverte et d'engagement des membres. La Santé du titre a fourni un cadre pour surveiller et optimiser le cycle de vie de chaque titre, permettant d'aligner les partenaires sur les principes et les exigences avant de construire des solutions. Pour élaborer un plan solide pour l'observabilité du lancement de titres, les problèmes ont été catégorisés en trois domaines principaux : la configuration du titre, les systèmes de personnalisation et les algorithmes. En catégorisant les problèmes, les défis peuvent être abordés de manière systématique, et une expérience personnalisée fiable peut être livrée pour chaque titre. L'analyse des problèmes a révélé que les problèmes de configuration sont les plus courants mais les plus faciles à résoudre, tandis que les problèmes d'algorithme sont rares mais difficiles à résoudre. L'évaluation des options a conduit à la décision de se concentrer d'abord sur la détection proactive des problèmes, en détectant les problèmes avant le lancement pour assurer des lancements plus fluides, des expériences plus satisfaisantes pour les membres et une fiabilité du système plus forte. Cette décision a jeté les bases d'un système robuste et scalable qui peut grandir avec les complexités de la plateforme en constante évolution."
CdXz5zHNQW_aUcN7HOcn2.png

Partie 3 : Une étude sur le travail d'ingénierie d'analyse chez Netflix

L'article conclut une série en plusieurs parties sur l'ingénierie d'analyse chez Netflix, en se concentrant sur l'artisanat technique. Il discute des conseils de conception de tableaux de bord, en mettant l'accent sur l'importance de comprendre les besoins des utilisateurs et d'exploiter les modèles existants. L'article couvre également la conception des tableaux de bord, notamment la façon de structurer les applications pour correspondre aux modèles mentaux des utilisateurs, et fournit des lignes directrices pour les dispositions de page, les graphiques interactifs et l'intégration. De plus, il partage les enseignements tirés du déploiement d'une API d'analyse chez Netflix, en mettant en évidence les points clés tels que la mesure de l'impact et de la nécessité des résultats en temps réel, l'exploration de toutes les solutions disponibles, l'alignement sur les attentes de performance, et l'importance des tests rigoureux et de la collaboration.
CdXz5zHNQW_QJdCCQ1JwJ.png

Partie 2 : Étude du travail d’ingénierie analytique chez Netflix

L'équipe d'ingénierie analytique de Netflix travaille sur divers projets, notamment l'analyse de jeux pour mesurer l'efficacité des campagnes d'acquisition d'utilisateurs pour les jeux Netflix. L'équipe utilise un cadre de contrôle synthétique pour estimer le scénario contrefactuel de ces campagnes et a développé un outil interactif pour fournir des informations sur les résultats d'incrémentation. Ils travaillent également sur un modèle de retour sur investissement incrémental pour guider la conception et la budgétisation des futures campagnes. De plus, l'équipe se concentre sur la mesure et la validation des inscriptions incrémentales pour les jeux Netflix, en utilisant une approche qui estime les inscriptions incrémentales en exploitant d'autres cadres tels que la valorisation incrémentale de la durée de vie du compte. Le parcours du joueur de Netflix Games est également modélisé à l'aide d'une machine à états pour suivre la machine à états quotidienne montrant la probabilité de transitions de compte entre les états. Ce modèle aide à évaluer les progrès vers les objectifs d'engagement et à identifier les domaines à améliorer pour les comptes actifs mensuels. L'article traite également de la modélisation de la trésorerie du contenu, où Netflix prévoit les besoins en trésorerie pour les créneaux "À déterminer" en modélisant les dépenses en trésorerie par jour jusqu'à et au-delà de la date de lancement d'un titre. Enfin, l'équipe travaille à améliorer l'efficacité du processus de transcription dans les flux de travail de doublage en utilisant la technologie de reconnaissance vocale assistive, avec un cadre de mesure à plusieurs couches pour évaluer ses performances.
CdXz5zHNQW_x65HF2Cxou.png

Présentation de Metaflow Configurable

Metaflow confère aux équipes de Netflix la capacité de développement et de gestion des projets d'apprentissage automatique (IA) de manière efficiente. Configs, nouvelle fonctionnalité de Metaflow, permet aux utilisateurs de définir des paramètres de flux, des besoins en ressources et des réglages propres à l'application dans des fichiers de configuration lisibles par l'homme. Configs étendent les artefacts et les Paramètres de Metaflow existants, offrant une plus grande flexibilité et des options de personnalisation. Ils peuvent être chargés et modifiés dynamiquement, même en utilisant l'exécution à distance ou des déploiements de production. Configs débloquent des cas d'utilisation avancés comme le mélange de déploiements fixes avec une configurabilité à l'exécution, la validation des configurations, la gestion des hiérarchies de fichiers de configuration et la génération de configurations en vol. En combinaison avec des gestionnaires de configuration comme Hydra, Configs permettent d'orchestrer des expériences sur plusieurs configurations et de balayer des espaces de paramètres. Metaboost, outil interne de Netflix, illustre l'utilisation des Configs dans la pratique, en offrant une interface unique pour gérer les projets d'apprentissage automatique à travers les différentes plates-formes et en améliorant la cohérence des projets et en réduisant le risque.

Partie 1 : Une étude sur le travail d'ingénierie analytique chez Netflix

L'équipe d'ingénierie analytique de Netflix œuvre pour permettre à l'entreprise de produire efficacement et de fournir efficacement des informations exploitables et de grande qualité dans toute l'entreprise. Elle a récemment organisé une conférence annuelle interne sur l'ingénierie analytique, qui couvrait divers sujets tels que DataJunction, LORE et l'exploitation des données de plateforme fondamentales pour permettre des analyses d'efficacité dans le cloud. DataJunction est une solution open source qui permet de standardiser et de rendre accessibles les définitions de métriques, tandis que LORE est un chatbot qui utilise des LLM pour fournir des informations réelles aux utilisateurs finaux. L'équipe se concentre également sur la démocratisation de l'analyse grâce à des initiatives comme Analytics Enablement, qui vise à permettre aux praticiens de l'analyse de Netflix de produire efficacement et de fournir efficacement des informations de haute qualité. L'objectif de l'équipe est de permettre à l'organisation d'ingénierie de prendre des décisions soucieuses de l'efficacité lors de la création et de la maintenance de services qui permettent à Netflix de fonctionner en tant que service de streaming.

L'efficacité du Cloud chez Netflix

Netflix utilise les services web d'Amazon (AWS) pour ses besoins d'infrastructure cloud, notamment le calcul, le stockage et les réseaux. L'environnement technologique diversifié de l'entreprise génère des données considérables provenant de diverses entités d'infrastructure, que les ingénieurs et analystes de données utilisent pour fournir des informations exploitables à l'organisation d'ingénierie. L'organisation Data & Insights collabore avec les équipes d'ingénierie pour partager des indicateurs clés d'efficacité, permettant aux parties prenantes de prendre des décisions commerciales éclairées. L'équipe Platform DSE a développé une solution à deux composants : Foundational Platform Data (FPD) et Cloud Efficiency Analytics (CEA). FPD fournit une couche de données centralisée pour toutes les données de la plateforme, avec un modèle de données cohérent et une méthodologie de traitement des données standardisée. CEA offre une couche de données analytiques qui fournit des indicateurs d'efficacité en séries chronologiques pour divers cas d'utilisation métier. L'équipe vise à poursuivre l'intégration des plateformes à FPD et CEA, en visant une couverture presque complète des informations sur les coûts au cours de l'année à venir. Elle prévoit également d'étendre FPD à d'autres domaines de l'entreprise, tels que la sécurité et la disponibilité, et d'adopter des approches proactives via l'analyse prédictive et le ML pour optimiser l'utilisation et détecter les anomalies de coût.

Lancement de l'Observabilité à l'échelle de Netflix

Chez Netflix, la gestion de plus d'un millier de lancements de contenus dans le monde chaque mois est une priorité absolue, nécessitant des systèmes robustes qui offrent une visibilité complète. L'entreprise vise à relier chaque histoire au bon public, mais les mesures système traditionnelles telles que les taux d'erreur et l'utilisation du processeur ne saisissent pas les nuances du succès d'un titre. Pour combler cette lacune, Netflix doit concevoir des systèmes qui reconnaissent ces nuances et permettent à chaque titre de briller. Dans les débuts de Netflix Originals, l'équipe de lancement vérifiait manuellement les emplacements des titres, mais cette approche ne pouvait pas évoluer avec l'expansion mondiale de l'entreprise. En conséquence, Netflix a été confronté à des défis opérationnels pour fournir des réponses précises et opportunes à des questions complexes sur la performance et la découvrabilité des titres. L'entreprise avait besoin d'une solution évolutive pour garantir que chaque titre soit lancé sans problème, avec des métadonnées et des actifs correctement configurés, des données circulant de manière transparente et des algorithmes fonctionnant comme prévu. Pour relever ces défis, Netflix a envisagé deux options : le traitement des journaux et les points d'observation dans les systèmes de personnalisation. Le traitement des journaux offre une solution simple pour surveiller et analyser les lancements de titres, mais il présente des limites, comme le fait de détecter les problèmes à l'avance et de garantir l'exactitude. Les points d'observation, en revanche, offrent une surveillance en temps réel, une détection proactive des problèmes et une précision accrue, mais nécessitent des investissements initiaux et des efforts de synchronisation importants. Netflix a finalement adopté une stratégie d'observation complète qui comprend une surveillance en temps réel, une détection proactive des problèmes et un rapprochement de la source de vérité. Cette approche a considérablement amélioré la capacité de l'entreprise à garantir le succès des lancements de titres et leur découverte sur la plateforme. Dans la prochaine partie de la série, Netflix partagera des informations techniques clés et des détails sur la façon dont ils y sont parvenus.

L'abstraction de compteur distribué de Netflix

L'abstraction de compteur distribué de Netflix est un service conçu pour stocker et interroger de grands volumes de données d'événements temporels avec des latences de quelques millisecondes. Il prend en charge deux catégories principales d'utilisations : Effort maximal et Consistance éventuelle. Le compteur d'effort maximal utilise EVCache pour une haute throughput et une faible latence dans une seule région, mais manque de réplication et de garanties de cohérence inter-régions. Le compteur de consistance éventuelle utilise un système de files d'attente durable comme Apache Kafka pour des comptages précis et durables, mais peut entraîner des retards et des défis pour rééquilibrer les partitions. L'approche de Netflix combine l'enregistrement de chaque activité de comptage comme un événement et l'agrégation continue de ces événements pour répondre aux exigences d'audit et de recomptage.

Investigation d’un problème de latence de l’interface utilisateur de Workbench

Un utilisateur a signalé que l'interface utilisateur de JupyterLab sur son poste de travail devient lente et non réactive lors de l'exécution de certains carnets de notes. Pour quantifier la lenteur, nous avons maintenu une touche enfoncée pendant 15 secondes tandis que le carnet de notes de l'utilisateur était en cours d'exécution et avons observé des latences allant de 1 à 10 secondes, avec une moyenne de 7,4 secondes. Nous avons écarté la sur-subscription du CPU et les problèmes de réseau comme causes potentielles. En utilisant py-spy, nous avons trouvé que beaucoup de temps CPU était consacré à une fonction appelée __parse_smaps_rollup dans le processus jupyter-lab. Cette fonction fait partie de l'extension jupyter_resource_usage, qui est utilisée pour obtenir des informations sur l'utilisation des ressources. La fonction est déclenchée par un point d'entrée API appelé périodiquement à partir de l'UI. Le code récupère tous les processus enfants du processus jupyter-lab de manière récursive, y compris à la fois le processus de carnet de notes ipykernel et tous les processus créés par le carnet de notes. Le coût de cette fonction est linéaire par rapport au nombre de tous les processus enfants. Dans le code de reproduction, nous créons 96 processus, ce qui est plus que les 64 CPU alloués au conteneur. Cette disparité cause le processus parent à être lent.

Présentation de la couche d’abstraction des données Netflix TimeSeries

Netflix a développé l'abstraction TimeSeries pour stocker et interroger efficacement de grands volumes de données d'événements temporels avec des latences de quelques millisecondes. Ce système est conçu pour gérer des écritures à haute fréquence, des requêtes efficaces dans de grands ensembles de données, des lectures et des écritures mondiales, une configuration adaptable et une efficacité coût. L'abstraction TimeSeries est basée sur des principes de conception clés, y compris la partition des données, le stockage flexible, la configurabilité, la scalabilité et l'infrastructure en fragments. Le modèle de données se compose d'éléments d'événement, d'événements, d'identifiants de série temporelle et d'espace de noms. Les éléments d'événement sont des paires clé-valeur qui stockent des données pour un événement donné, tandis que les événements sont des collections structurées d'un ou plusieurs éléments d'événement. Les identifiants de série temporelle sont des collections d'événements sur la période de rétention d'un ensemble de données, tandis que les espaces de noms sont des collections d'identifiants de série temporelle et de données d'événement. L'abstraction TimeSeries fournit des API pour interagir avec les données d'événement, y compris WriteEventRecordsSync, WriteEventRecords, ReadEventRecords, SearchEventRecords et AggregateEventRecords. La couche de stockage se compose d'un magasin de données principal et d'un magasin d'index optionnel, Apache Cassandra et Elasticsearch étant les choix préférés pour stocker des données durables et indexer, respectivement. Le magasin de données principal utilise un schéma de partitionnement temporel pour diviser les données en morceaux gérables en fonction des intervalles de temps, ce qui permet des requêtes efficaces pour des plages de temps spécifiques et optimise les performances de stockage et de requête. Les données sont ensuite partitionnées en seaux de temps et en seaux d'événement pour faciliter les scans de plage efficaces et gérer les opérations d'écriture à haute fréquence. L'abstraction TimeSeries est conçue pour répondre aux défis de stockage et d'interrogation des données d'événements temporels à grande échelle, y compris la haute fréquence, les requêtes efficaces, les lectures et les écritures mondiales, la configuration adaptable et l'efficacité coût. En utilisant un modèle de données d'événement unique et une couche de stockage scalable, l'abstraction TimeSeries offre une solution versatile et rentable pour gérer les données temporelles à Netflix.

Présentation de la couche d'abstraction de données clés-valeurs de Netflix

La couche d'abstraction de données clés-valeurs (KV) de Netflix est un service d'abstraction fondamental qui simplifie l'accès aux données et améliore la fiabilité de l'infrastructure. Il offre une interface cohérente aux développeurs, indépendamment de la base de données sous-jacente. La couche d'abstraction KV emploie une architecture de carte à deux niveaux, prenant en charge à la fois les modèles de données simples et complexes. Elle fournit quatre API CRUD de base (PutItems, GetItems, DeleteItems) et des API MutateItems et ScanItems complexes pour divers cas d'utilisation. Un espace de noms définit où et comment les données sont stockées, offrant une séparation logique et physique. Cela permet aux différents cas d'utilisation d'être acheminés vers le système de stockage le plus approprié en fonction des besoins spécifiques de performance, de durabilité et de cohérence. Les API PutItems et DeleteItems utilisent des jetons d'idempotence pour garantir l'intégrité des données et assurer l'ordre correct des opérations. Les jetons monotones générés par le client sont préférés pour la fiabilité. Pour gérer les blobs volumineux, la couche d'abstraction KV utilise le découpage. Cette technique divise les données volumineuses en morceaux plus petits, qui sont ensuite mis en scène et validés avec des métadonnées appropriées. La pagination est une fonctionnalité critique pour gérer les grands ensembles de données. L'API GetItems prend en charge la pagination en utilisant un next_page_token, garantissant une récupération de données efficace sur plusieurs requêtes. Les tombstones, qui indiquent les données supprimées, peuvent affecter les performances. KV optimise les suppressions d'enregistrements et de plage pour générer un seul tombstone, réduisant les pics de charge et maintenant des performances cohérentes. Les suppressions d'éléments sont gérées en utilisant des suppressions TTL avec jitter. Cette technique cache la complexité du moteur de stockage et minimise l'impact des suppressions sur la pagination de lecture. L'idempotence et le découpage sont essentiels pour gérer les latences de queue et garantir des performances prévisibles à faible latence. Ces philosophies de conception contribuent à la fiabilité et aux performances nécessaires aux opérations mondiales de Netflix.

Pousser jusqu'à la limite : Évolution du proxy WebSocket de Netflix pour l'avenir

Pushy est le serveur WebSocket de Netflix, qui maintient des connexions persistantes avec les appareils exécutant l'application Netflix. Il a évolué d'un service de livraison de messages à une partie intégrante de l'écosystème Netflix. Pushy gère des centaines de millions de connexions WebSocket concurrentes, livrant des centaines de milliers de messages par seconde, avec un taux de fiabilité de livraison des messages de 99,999%. Initialement développé pour les FireTV, la portée de Pushy s'est étendue à près d'un milliard d'appareils, y compris les appareils mobiles et les anciens appareils à capacités limitées. Pour gérer cette croissance, Pushy a subi plusieurs améliorations, notamment la réécriture du processeur de messages en utilisant les composants Netflix paved-path, la migration du Registre de Push vers KeyValue pour une meilleure performance et une scalabilité accrue, et la mise en œuvre de politiques d'échelonnement exponentiel basées sur le nombre de connexions. Ces améliorations ont rendu Pushy plus fiable, stable et efficace, permettant de soutenir le nombre croissant d'appareils et de répondre aux besoins des nouvelles fonctionnalités.

Détection de voisin bruyant avec eBPF

Netflix utilise eBPF pour surveiller en continu la latence de la file d'attente d'exécution, un indicateur de voisins bruyants (conteneurs qui utilisent lourdement les ressources du serveur, dégradant les performances dans les conteneurs adjacents). Des hooks eBPF (sched_wakeup, sched_wakeup_new, sched_switch) sont utilisés pour capturer la latence de la file d'attente d'exécution et l'associer aux conteneurs (ID de cgroup) en utilisant des kfuncs (fonctions du noyau) pour accéder en toute sécurité aux données RCU-protégées. Un régulateur de débit dans eBPF équilibre l'observabilité avec les performances en limitant les points de données envoyés à l'espace utilisateur. Les processus de l'espace utilisateur traitent les événements du tampon d'anneau eBPF et émettent des métriques à Atlas, y compris la latence de la file d'attente d'exécution (runq.latency) et le compte de préemption (sched.switch.out) par ID de cgroup. Les métriques runq.latency et sched.switch.out sont toutes deux nécessaires pour identifier les voisins bruyants, car runq.latency seule peut être trompeuse lorsque les conteneurs sont à leur limite CPU. Une étude de cas démontre un problème de voisin bruyant provoquant une augmentation de la latence de la file d'attente d'exécution et des préemptions lorsque le nouveau conteneur utilise pleinement les CPU de l'hôte. Les processus système ont été identifiés comme les voisins bruyants en utilisant la métrique sched.switch.out. Les optimisations du code eBPF, y compris l'utilisation de BPF_MAP_TYPE_HASH, l'accès direct aux membres de la structure de tâche et l'ignorance des tâches du noyau, minimisent les coûts. Un correctif du noyau Linux a été soumis et accepté pour améliorer le calcul des statistiques dans le noyau. BPFtop, un outil de surveillance des processus eBPF open-source, a été utilisé pour mesurer le coût du code eBPF.

Recommander pour la satisfaction à long terme des membres chez Netflix

Netflix emploie des algorithmes de personnalisation pour recommander du contenu à ses membres, dans le but d'améliorer la satisfaction à long terme. Les recommandations sont considérées comme un problème de bandit contextuel, où le système sélectionne des actions en fonction du contexte et des retours des membres. Les systèmes de recommandation traditionnels optimisent pour des métriques à court terme comme les clics, qui ne capturent peut-être pas entièrement la satisfaction à long terme. L'optimisation pour la rétention seule présente des inconvénients, donc Netflix utilise des fonctions de récompense proxy alignées sur la satisfaction à long terme des membres. Le taux de clic (CTR) est une récompense proxy simple, mais Netflix va au-delà du CTR pour considérer diverses actions utilisateur et leurs implications sur la satisfaction. L'ingénierie de récompense est un processus itératif de raffinement de la fonction de récompense proxy pour aligner avec la satisfaction à long terme des membres, impliquant la formation d'hypothèses, la définition de récompense, la formation de politique de bandit et les tests A/B. Netflix répond au défi du feedback retardé en prédissant le feedback manquant, permettant l'utilisation de tout le feedback dans la fonction de récompense proxy. Malgré les améliorations offline du modèle, une disparité entre les métriques en ligne et hors ligne peut survenir lorsque la récompense proxy n'est pas entièrement alignée sur la satisfaction à long terme. Netflix résout cela en raffinant encore la définition de la récompense proxy. Des questions ouvertes persistent, telles que l'apprentissage automatique de la fonction de récompense proxy, la détermination du temps d'attente optimal pour le feedback retardé et l'utilisation de l'apprentissage par renforcement pour aligner avec la satisfaction à long terme.

Améliorez votre prochaine expérience en apprenant de meilleurs indicateurs de substitution à partir des expériences passées

Les chercheurs de Netflix présentent des méthodes pour établir la relation entre les métriques proxy à court terme et les métriques étoile du nord à long terme en utilisant des expériences historiques. Les approches naïves pour comprendre cette relation peuvent être trompeuses en raison de confounders et d'erreurs de mesure corrélées. L'estimateur de covariance totale (TC) calcule la pente OLS en soustrayant la covariance d'erreur de mesure échelonnée de la covariance des effets de traitement estimés. L'estimation des variables instrumentales par jackknife (JIVE) élimine l'erreur de mesure corrélée en excluant les données de chaque observation de la computation de ses valeurs de remplacement instrumentées. Un estimateur de maximum de vraisemblance à information limitée (LIML) est statistiquement efficace sous l'hypothèse qu'il n'y a pas d'effets directs entre le traitement et la métrique étoile du nord. Ces méthodes produisent des modèles structuraux linéaires des effets de traitement qui sont faciles à interpréter et facilitent la coordination et l'alignement vers l'étoile du nord. Ils permettent la gestion des compromis entre les métriques, l'innovation des métriques et le travail d'équipe indépendant. Malgré les défis actuels de l'architecture des données, ces méthodes ont été mises en œuvre avec succès à Netflix et sont actuellement utilisées pour développer des métriques proxy. Les chercheurs reconnaissent le besoin d'une architecture de données plus flexible pour simplifier leur application et accueillent les contributeurs potentiels via des annonces d'emploi ouvertes.

Enquête sur un problème de performance du réseau interrégional

Netflix exploite une vaste infrastructure cloud sur Amazon AWS dans plusieurs régions pour faciliter la livraison de contenu en continu. Lorsqu'une application a rencontré des problèmes de synchronisation de données entre les régions, la suspicion initiale s'est portée sur le réseau en raison des timeouts. Lors de l'enquête, les ingénieurs du réseau ont découvert des paquets TCP RST provenant du client, indiquant que le client mettait fin aux connexions de manière prématurée. Les captures de paquets ont confirmé que le serveur envoyait continuellement des données tandis que le client mettait abruptement fin aux connexions après 30 secondes. L'examen de l'application a révélé qu'elle avait un délai d'attente de 30 secondes pour recevoir les données initiales des serveurs, ce qui la conduisait à mettre fin aux connexions si les données n'étaient pas reçues dans ce délai. Malgré aucun changement récent dans l'application ou le serveur, le problème coïncidait avec une mise à jour du noyau Linux de la version 6.5.13 à 6.6.10. La bisection méthodique du noyau a révélé un commit responsable du problème, qui avait introduit un nouveau mécanisme pour calculer la taille de la fenêtre de réception TCP. Le calcul original supposait un overhead de 50%, tandis que le nouveau mécanisme calculait l'overhead de manière dynamique en fonction des caractéristiques réelles des données, ce qui aboutissait à une fenêtre de réception plus petite. Avec une fenêtre plus petite, l'application ne pouvait pas recevoir les données suffisamment rapidement dans le délai de 30 secondes, ce qui entraînait la fin des connexions. La cause profonde était le paramètre sysctl_tcp_adv_win_scale obsolète, qui a été remplacé par un ratio d'échelle plus précis pour calculer la taille de la fenêtre de réception. Le retour en arrière de la mise à jour du noyau a restauré le fonctionnement normal de l'application, démontrant que le changement de noyau était la cause sous-jacente du problème.

Java 21 - Les threads virtuels - Mec, où est mon verrou ?

Netflix, connu pour son utilisation intensive de Java, était ravi d'adopter les threads virtuels pour leurs avantages en matière de performances. Cependant, pendant la migration vers Java 21, les ingénieurs ont rencontré des timeouts intermittents et des instances non réactives dans les applications utilisant des threads virtuels avec SpringBoot 3 et Tomcat embarqué. Les enquêtes ont révélé une augmentation des sockets bloqués dans l'état closeWait, indiquant que les applications échouaient à fermer les connexions. Les dumps de threads ont initialement montré des JVM inactives, mais une analyse plus approfondie utilisant des commandes spécifiques a révélé un grand nombre de "threads vides" virtuels, qui sont des threads créés mais pas encore en cours d'exécution. Cela a pointé vers un problème avec l'exécution des threads virtuels, où Tomcat créait un nouveau thread virtuel pour chaque demande entrante, mais les threads du système d'exploitation sous-jacent étaient tous occupés. Une analyse plus approfondie des dumps de threads a montré que ces threads du système d'exploitation étaient verrouillés sur des threads virtuels bloqués en attente d'acquérir un verrou à l'intérieur d'un bloc synchronisé dans le code. Le coupable était un verrou détenu par un thread de plateforme régulier qui était incapable de réacquérir le verrou après avoir terminé une opération d'attente. Cette situation de deadlock empêchait les nouveaux threads virtuels d'être planifiés, ce qui entraînait les problèmes de performance observés.

Maestro : l'Orchestrateur de Flux de Travail de Netflix

Maestro, l'orchestrateur de flux de travail open-source de Netflix, est conçu pour les pipelines de données à grande échelle et les workflows d'apprentissage automatique. Il prend en charge à la fois les workflows acycliques et cycliques, y compris des modèles réutilisables comme les boucles foreach, les sous-workflows et les embranchements conditionnels. Maestro offre une scalabilité horizontale pour gérer un grand nombre de workflows et de travaux au sein d'un seul workflow. Il propose un format de définition de workflow flexible en JSON, combinant les champs fournis par l'utilisateur et gérés par Maestro. Les stratégies d'exécution des workflows de Maestro comprennent les modes séquentiel, strictement séquentiel, premier-seul, dernier-seul et parallèle avec des options de limitation de concurrence. Le langage d'expression et les paramètres de Maestro permettent des paramètres dynamiques, l'injection de code et la partage d'état entre les workflows et les étapes. Il fournit également des paramètres de sortie pour l'exécution d'étapes appelables et des workflows paramétrés pour une flexibilité et une facilité de gestion accrues. Maestro inclut des blocs de construction courants comme le support foreach, les sous-workflows et les embranchements conditionnels, permettant de définir facilement les modèles de flux de données et d'autres modèles de workflow.

Amélioration de la fiabilité de Netflix avec une gestion de charge priorisée par niveau de service

Netflix a mis en œuvre une technique de gestion de charge par palier pour améliorer l'expérience utilisateur et la résilience du système. Cette technique priorise les requêtes critiques initiées par l'utilisateur par rapport aux requêtes de pré-lecture non critiques au sein du même service. En mettant en place un limiteur de concurrence avec partitionnement, PlayAPI, un service backend critique, attribue 100% de la capacité de traitement aux requêtes critiques et utilise la capacité excédentaire pour les requêtes non critiques. Cette priorisation garantit que les requêtes initiées par l'utilisateur conservent une haute disponibilité même pendant les pics de trafic ou les hautes latences. Le succès de cette approche a conduit au développement d'une bibliothèque générique pour la priorisation des services, permettant aux services de définir plusieurs niveaux de priorité. Cette bibliothèque utilise l'utilisation du CPU comme mesure de la charge du système, éloignant progressivement le trafic de priorité inférieure pour maintenir l'expérience utilisateur et donner plus de temps pour l'auto-scaling. Les expériences ont montré que cette approche éloigne efficacement le trafic non critique et critique dans des conditions de charge extrêmes, maintenant des latences raisonnables et une stabilité de la capacité de traitement. Netflix souligne l'importance d'éviter les anti-modèles tels que l'absence de shedding ou la congestion de fail, qui peuvent détériorer l'expérience utilisateur ou provoquer une instabilité du système.

Un résumé du forum ouvert sur l'ingénierie des données chez Netflix

Le Forum Open de l'Ingénierie des Données 2024 à Netflix a réuni des experts pour partager des idées et des solutions face aux défis de l'ingénierie des données. Max Schmeiser a souligné l'importance de l'ingénierie des données dans la prise de décision basée sur les données. Stephanie Vezich Tamayo et Binbing Hou ont présenté un système de réparation automatique basé sur l'IA pour les échecs de travail sur la plateforme de données de Netflix. Jide Ogunjobi a parlé de l'utilisation de l'IA générative pour la modélisation et l'architecture des données d'entreprise. Tulika Bhatt a partagé comment Netflix gère 18 milliards d'impressions quotidiennes pour des recommandations adaptatives en temps réel. Jessica Larson a discuté des considérations pour la création de plateformes de données dans l'ère post-RGPD. Jason Reid a exploré les avantages et les inconvénients de la mise en bundle et de la débundle des entrepôts de données. Clark Wright a partagé l'approche d'Airbnb en matière de qualité des données à travers leur Score de Qualité des Données. Iaroslav Zeigerman a mis en avant les avantages de SQLMesh pour la gestion des pipelines de données. L'événement a été organisé par Chris Colburn, Xinran Waibel, Jai Balani, Rashmi Shamprasad et Patricia Ho.

Annotateur de vidéo : construction de classificateurs de vidéos à l'aide de modèles vision-langage et d'apprentissage actif

Annotateur de vidéo (AV) est un cadre qui répond aux défis de la formation des classificateurs de vidéo. Il exploite les modèles vision-langage et l'apprentissage actif pour une annotation efficace, permettant aux experts du domaine de guider le processus. L'AV suit un processus en trois étapes : recherche d'exemples initiaux à l'aide de la recherche text-to-video, apprentissage actif et raffinement des annotations à l'aide d'un système avec un humain dans la boucle, et examen et raffinement des annotations de manière itérative. L'AV améliore l'efficacité des échantillons, réduit les coûts et améliore la qualité du modèle. Il permet l'implication directe des experts du domaine dans l'annotation, favorisant la confiance et la propriété. L'apprentissage actif dans l'AV permet aux utilisateurs de se concentrer sur des exemples de plus en plus difficiles, réduisant le temps d'annotation et améliorant les performances du modèle. L'AV prend en charge l'annotation continue, permettant un déploiement rapide, une surveillance et une correction des cas limites. Il permet aux utilisateurs d'itérer et d'améliorer les modèles sans dépendre des scientifiques des données ou des annotateurs tiers. Les expériences montrent que l'AV conduit à des classificateurs de vidéo de qualité supérieure par rapport aux méthodes de base. L'AV permet l'annotation efficace de diverses tâches de compréhension de la vidéo. Il encourage la collaboration entre les experts du domaine et les ingénieurs en apprentissage automatique. Les auteurs fournissent un ensemble de données avec 153 000 étiquettes sur 56 tâches annotées à l'aide de l'AV, et publient le code pour la réplication. L'AV répond aux défis des techniques de formation des classificateurs conventionnels, améliorant l'efficacité, la qualité et l'implication des utilisateurs dans l'annotation de la vidéo. Il favorise un sentiment de propriété et de confiance dans le système, facilitant les améliorations itératives et le déploiement rapide de classificateurs de vidéo précis.

Tour 2 : Étude des applications de l'inférence causale chez Netflix

Chez Netflix, l'inférence causale est essentielle pour la prise de décision et l'amélioration de l'expérience des membres. Le sommet annuel sur l'inférence causale et l'expérimentation réunit des experts pour partager les développements méthodologiques et les applications innovantes. L'un des exposés a porté sur le développement d'une approche plus rapide et automatisée pour estimer l'impact annuel à partir de tests A/B, en abordant les défis liés aux périodes de facturation non observées et aux cohortes d'inscription non observées. Un autre exposé a présenté un cadre systématique pour évaluer les événements de jeu en utilisant des modèles de contrôle synthétique, en gérant les données limitées et les scénarios d'intervention où les tests A/B sont impraticables. La double machine learning a été appliquée pour comparer l'importance de différents métriques dans les tests A/B, en abordant les biais potentiels lorsque les effets de traitement sont hétérogènes. Les tests A/B de sondages avec biais de non-réponse hétérogène ont été analysés en utilisant les effets de traitement moyens conditionnels, les scores de propension et l'ajustement proportionnel itératif pour garantir une représentation précise des opinions des membres. La conception a été mise en avant comme partie intégrante de l'inférence causale chez Netflix, avec un focus sur l'optimisation des interfaces utilisateur et la présentation des données pour faciliter la prise de décision par l'expérimentation.

La création de VES : le microservice Cosmos pour l'encodage vidéo Netflix

La nouvelle plateforme de traitement vidéo de Netflix, Cosmos, utilise des microservices pour moderniser les pipelines de traitement des médias. Le service d'encodage vidéo (VES) est un microservice clé qui encode le contenu mezzanine en flux vidéo adaptés à la diffusion en continu ou à l'utilisation studio. VES prend en charge plusieurs codecs, résolutions et niveaux de qualité, et emploie l'encodage en tranches pour réduire la latence. Sa couche API, Optimus, garantit une interface stable pour les utilisateurs externes. La couche de workflow, Plato, orchestre les étapes d'encodage en utilisant un graphique acyclique dirigé (DAG) avec un parallélisme MapReduce. Les tâches consommant beaucoup de ressources sont déléguées à la couche de calcul, Stratum, qui utilise des fonctions Stratum empaquetées dans des images Docker. VES utilise plusieurs fonctions Stratum pour différents formats de codec pour permettre des mises à jour et des améliorations d'encodeur indépendantes. La plateforme fournit des abstractions pour les modèles d'accès aux médias, simplifiant le code des fonctions Stratum. Les besoins en ressources sont déterminés par le biais de benchmarks, et le "façonnage de conteneur" attribue des ressources en fonction du format de codec et de la résolution. La mise en production continue est facilitée par des pipelines de mise en production automatisés et des tests exhaustifs. Les métriques de production et les journaux sont utilisés pour la surveillance et l'alerte, y compris le rollback automatique du service si les métriques s'écartent significativement. Les leçons apprises de la construction de VES ont guidé les choix de conception ultérieurs dans le développement de microservices de l'équipe.

Recherche inverse dans le graphique fédéré de Netflix

La recherche de graphique de Netflix, précédemment connue sous le nom de Studio Search, s'est étendue au-delà de l'ingénierie du contenu pour englober l'ensemble de l'organisation d'ingénierie. Elle soutient plus de 100 applications et 50 indices. Pour répondre au défi de savoir qui notifier lorsque le statut d'un film change, la recherche de graphique a mis en œuvre une recherche inverse en utilisant les champs de percolateur d'Elasticsearch. La recherche inverse permet de créer des "SavedSearches" qui filtrent sur un index existant. Ces filtres sont traduits en requêtes Elasticsearch et indexés dans un champ de percolateur. Lorsqu'un document est soumis, il est comparé aux requêtes enregistrées, identifiant celles qui le retournent. Cette fonctionnalité permet des notifications précises basées sur les événements de changement, réduisant l'impact sur le graphique fédéré. Pour soutenir la recherche inverse, le pipeline d'indexation de la recherche de graphique a été modifié pour inclure un pipeline d'indexation distinct pour les recherches enregistrées, avec des mappages alignés en utilisant des modèles d'index. Le pipeline d'indexation de percolation utilise des événements CDC de Data Mesh et une mutation DGS de la recherche de graphique pour traduire et indexer les recherches enregistrées. La gestion des versions est gérée en créant de nouvelles versions d'index et de pipelines, permettant des changements de mappage sans interrompre les pipelines existants. La recherche inverse n'est pas seulement utile pour les notifications, mais également pour créer des critères de correspondance dynamiques. Le service de correspondance de films utilise des recherches inverses pour classifier les films en fonction des critères de correspondance. Ce modèle peut être étendu à tout index de la recherche de graphique. En outre, la recherche inverse pose les bases pour des interfaces utilisateur plus réactives, permettant des abonnements qui mettent à jour les résultats en fonction des changements d'index, en correspondance avec les requêtes enregistrées.