Histoires RSS par Pinterest En... Note

Histoires RSS par Pinterest Engineering sur Medium

L'ingénierie Pinterest, présentée sur Medium, offre un aperçu en coulisses des innovations technologiques qui alimentent la plateforme de découverte visuelle populaire. Grâce à des articles approfondis, les ingénieurs partagent leurs réflexions sur leur travail sur la scalabilité, l'apprentissage automatique, l'infrastructure de données et bien plus encore. La publication met en avant la culture d'ingénierie de Pinterest, en mettant l'accent sur la collaboration, l'expérimentation et la passion pour résoudre les problèmes complexes. Les lecteurs peuvent explorer des sujets tels que la construction de systèmes de recommandation, l'optimisation de la fonctionnalité de recherche et le développement d'outils d'analyse de données. Le contenu offre des perspectives précieuses pour les ingénieurs et les amateurs de technologie intéressés par les complexités d'une plateforme à grande échelle comme Pinterest. Que ce soit en plongeant dans les défis de la reconnaissance d'images ou en suivant l'évolution de leur infrastructure, l'ingénierie Pinterest sur Medium offre un regard fascinant sur le côté technique d'un site web aimé.

Fil de notes

CdXz5zHNQW_slhDyOmW2y.png
Pinterest a rencontré des défis en matière de vélocité d'ingénierie en raison de la complexité technologique croissante à mesure que sa base d'utilisateurs augmentait. L'entreprise a reconnu que sa stratégie d'adoption d'outils décentralisés créait des goulets d'étranglement et un paysage écrasant pour les nouveaux ingénieurs. Pour y remédier, Pinterest a décidé de réimaginer son expérience développeur en construisant une Plateforme Développeur Interne appelée PinConsole. PinConsole est un portail développeur unifié construit sur la plateforme open-source Backstage. Cette approche basée sur une plateforme vise à créer une couche d'abstraction cohérente, permettant aux ingénieurs de se concentrer sur la logique métier plutôt que sur l'infrastructure. Après avoir évalué diverses solutions, Pinterest a choisi Backstage pour son forte adoption par la communauté, son architecture de plugins extensible et son développement actif. PinConsole s'intègre aux systèmes d'authentification internes de Pinterest et à LDAP pour un modèle d'entité unifié. L'architecture utilise des bases de données PostgreSQL pour le stockage des données et applique le système de conception Gestalt de Pinterest pour la cohérence de l'interface utilisateur. Un composant clé est le plugin PinCompute, une intégration Kubernetes personnalisée qui simplifie la gestion des charges de travail à l'aide d'abstractions spécifiques à Pinterest. Des widgets de page d'accueil personnalisés, comme l'intégration GitHub, améliorent encore l'expérience développeur en réduisant le changement de contexte et en fournissant des informations pertinentes.
CdXz5zHNQW_JMlsyqEFEB.png
L'infrastructure de recherche de Pinterest, Manas, a été migrée vers Kubernetes, mais un problème de performance a été découvert où une requête de recherche sur un million prenait 100 fois plus de temps que d'habitude. Le problème a été étudié et il a été constaté qu'un processus de surveillance, cAdvisor, était à l'origine du problème. cAdvisor scannait la table des pages entière toutes les 30 secondes pour calculer le nombre total d'octets de mémoire référencés par un processus, ce qui provoquait des conflits avec le traitement de feuilles intensif en mémoire de Manas. Cela entraînait des pics de latence dans les requêtes de recherche. L'enquête a impliqué le profilage des systèmes de recherche, le débogage des problèmes de performance, les fonctionnalités du noyau Linux et la gestion de la mémoire. La cause profonde a été identifiée comme étant l'estimation de la taille de l'ensemble de travail (WSS) de cAdvisor, qui était activée par défaut et provoquait la contention de la mémoire. Le problème a été résolu en désactivant l'estimation du WSS de cAdvisor pour tous les nœuds PinCompute. Cette correction a été une étape majeure pour la plateforme Kubernetes de Pinterest, permettant à d'autres services en ligne d'être déplacés vers la plateforme. L'enquête a souligné l'importance de l'isolation des ressources, de la réduction de l'espace de problèmes et de l'utilisation de stratégies de débogage en boîte noire. L'expérience a également montré que, parfois, une solution suffisamment bonne est suffisante, et qu'il n'est pas nécessaire de trouver une solution exacte pour avancer.
CdXz5zHNQW_dc6w46JhEJ.png
L’équipe d’ingénierie des données de Pinterest est en train de créer une nouvelle plateforme de traitement de données à grande échelle pour remplacer sa plateforme actuelle basée sur Hadoop, Monarch. L’équipe a exploré les systèmes basés sur Kubernetes en remplacement en raison de leur popularité croissante et de leur adoption croissante dans la communauté du Big Data. La nouvelle plateforme devait répondre à certains critères, notamment une prise en charge étendue des conteneurs, l’exécution de la fourche Spark personnalisée de Pinterest et une réduction des coûts d’exploitation et de maintenance. L’équipe a effectué une évaluation complète de l’exécution de Spark sur diverses plates-formes et s’est tournée vers les frameworks axés sur Kubernetes en raison de leurs avantages, notamment l’isolation et la sécurité basées sur les conteneurs, la facilité de déploiement et les frameworks intégrés. Kubernetes offre une prise en charge plus précise de la gestion et du déploiement des conteneurs que les autres systèmes, mais ne prend pas en charge la gestion, le stockage et le traitement des données. Le modèle de déploiement actuel de l’équipe dans Hadoop est lourd, et l’équipe s’oriente vers une approche plus simple à l’aide de Terraform, d’images de conteneurs et de Helm. La nouvelle plateforme s’appuiera sur Kubernetes et EKS pour remplacer Monarch, ce qui présente plusieurs défis, notamment l’intégration d’EKS dans l’environnement Pinterest existant et la recherche de remplacements pour les composants Hadoop. L’équipe a créé une nouvelle plateforme, Moka, capable de traiter des charges de travail Spark par lots qui n’accèdent qu’aux données non sensibles, et ajoutera plus de fonctionnalités à l’avenir. La conception initiale de haut niveau de Moka comprend un système capable de traiter des charges de travail Spark par lots, avec des tâches soumises et traitées par une série de composants, notamment Spinner, Archer et Spark Operator. L’équipe fournira plus de détails sur les principaux aspects de leur plateforme axés sur les applications dans la prochaine partie de leur série de blogs.
CdXz5zHNQW_bbfzbQhJcm.png
Chez Pinterest, les ingénieurs en apprentissage automatique (ML) rencontrent des défis pour optimiser le développement de fonctionnalités, les stratégies d'échantillonnage et l'expérimentation d'étiquettes en raison de pipelines de données lents, de coûteuses itérations de fonctionnalités et d'une utilisation inefficace des ressources de calcul. Pour relever ces défis, Pinterest a étendu les capacités de Ray au-delà de la formation pour inclure le développement de fonctionnalités, l'échantillonnage et la modélisation d'étiquettes. L'infrastructure ML traditionnelle était contrainte par des pipelines de données lents, des itérations de fonctionnalités coûteuses et une utilisation inefficace des ressources de calcul. Pinterest a introduit une pile d'infrastructure ML native Ray, se concentrant sur quatre améliorations majeures : la création d'une API de pipeline de données native Ray, la jointure de données efficace avec les jointures de bucket Iceberg, la persistance des données pour l'itération efficace et les optimisations de données Ray pour les charges de travail importantes. Le nouveau workflow ML alimenté par Ray réduit les temps d'itération ML de 10 fois tout en réduisant significativement les coûts d'infrastructure. L'API de pipeline de données native Ray permet le développement de fonctionnalités, l'échantillonnage et les transformations d'étiquettes nativement dans Ray, éliminant la nécessité de retours Spark. Les jointures de bucket Iceberg permettent des jointures de fonctionnalités rapides et efficaces à partir de différentes sources sans précalculer de grandes tables. La persistance des données permet une itération efficace en mettant en cache les fonctionnalités transformées et en les réutilisant lorsque cela est possible. Les optimisations de données Ray ont atteint une accélération de 2-3 fois sur différents pipelines, et le nouveau workflow a débloqué une infrastructure ML plus scalable, efficace et économique chez Pinterest.
CdXz5zHNQW_vBYaC4X7rO.png
Pinterest utilise les voisins les plus proches approximatifs (ANN) en ligne pour la récupération de publicités, mais l'ANN hors ligne est également précieuse pour le traitement de données à grande échelle et les opérations économiques. L'ANN hors ligne précalcule les candidats hors ligne, idéal pour les scénarios avec un débit élevé et des réponses de requête à faible latence, ainsi que des requêtes statiques. Pinterest a réussi à appliquer l'ANN en ligne, mais fait face à des défis pour étendre son inventaire de annonces. La migration de l'algorithme de petit monde navigable hiérarchique (HNSW) à l'algorithme de fichier inversé (IVF) permet d'avoir un index plus large, mais augmente les coûts. L'ANN hors ligne bénéficie de ressources computationnelles abondantes et de tolérance à la latence, efficace pour les générateurs de candidats avec des contextes de requête statiques. La principale différence entre les approches en ligne et hors ligne est le moment de la recherche d'ANN. L'ANN hors ligne a des avantages, notamment l'efficacité coût et l'extensibilité, mais également des inconvénients, notamment les limitations en temps réel et les voisins fixes. Pinterest a évalué la récupération basée sur l'ANN hors ligne, notamment les annonces d'articles similaires et l'intégration d'éléments visuels. L'ANN hors ligne a montré de meilleures performances d'engagement et de conversion, et développe actuellement sa propre plateforme et son propre framework d'ANN hors ligne pour les avancées à venir.
CdXz5zHNQW_OYKi1HZH8r.png
Le fil d'accueil de Pinterest est crucial pour l'engagement des utilisateurs et la découverte, et il utilise un processus en deux étapes pour classer les épingles en fonction des intérêts des utilisateurs et de la pertinence des épingles personnalisées. Le modèle Pinnability utilise un réseau de neurones pour consommer divers signaux d'épingle, de contexte et d'utilisateur, mais il a des limitations pour modéliser le comportement des utilisateurs tout au long de leur vie. Le modèle TransActV2 répond à ces défis en exploitant de longues séquences, en intégrant une fonction de perte d'action suivante et en employant des solutions de déploiement évolutives. TransActV2 peut modéliser jusqu'à 16 000 actions d'utilisateur, intègre des fonctionnalités d'action explicites et stocke les actions sans perte à l'aide de quantification int8. Le modèle utilise un réseau multi-tête, point-à-point multi-tâche sur une pile large et profonde, et introduit une fonction de perte d'action suivante pour améliorer la prévision des actions d'utilisateur. La fonction NAL challenge le modèle pour prédire non seulement la probabilité d'engagement mais également ce que l'utilisateur fera ensuite. Le modèle obtient des améliorations dans les métriques hors ligne et en ligne, notamment une augmentation de 13,31% du top-3 repin et une augmentation de 6,35% du repin. L'ingénierie à grande échelle du modèle permet une serving et un déploiement efficaces, réalisant une réduction de 75-81% de la latence d'exécution du modèle et une réduction de 103-338x de la latence d'inférence de bout en bout. L'impact réel du monde réel de TransActV2 est massif, avec des millions d'engagements plus significatifs et des améliorations importantes de l'expérience utilisateur.
CdXz5zHNQW_kxoAAaP5LS.jpeg
L'infrastructure de données de Pinterest utilise Hadoop YARN sur AWS avec des groupes de mise à l'échelle automatique (ASG) pour traiter de grandes quantités de données. L'entreprise utilise Terraform pour créer et gérer des grappes, mais la mise à l'échelle descendante (réduction de taille) est un processus complexe qui nécessite des étapes manuelles. Pour simplifier ce processus, Pinterest a introduit le Hadoop Control Center (HCC), qui permet une mise à l'échelle automatique ascendante et descendante des grappes. Avant HCC, la mise à l'échelle descendante impliquait un processus fastidieux et sujet à erreurs consistant à sélectionner les nœuds à décommissionner, à les ajouter à des fichiers d'exclusion, puis à les terminer. HCC rationalise ce processus en permettant aux utilisateurs de spécifier la taille souhaitée de l'ASG, et l'outil gère le reste. HCC intègre également d'autres outils utiles pour la gestion des grappes, notamment l'affichage de l'état des nœuds, la génération de rapports sur les applications YARN et l'affichage des détails de sous-réseau et de groupe de sécurité. L'architecture de HCC se compose d'un nœud gestionnaire et de nœuds de travail, le nœud gestionnaire agissant comme un intermédiaire et un cache. Le serveur d'exploitation Hadoop (HOS) est le cœur de HCC, qui effectue les tâches lourdes de mise à jour du cache JMX, de maintenance des connexions de tissu et de mise à jour des fichiers d'exclusion. HCC interroge périodiquement et consolide les données JMX pour prendre des décisions sur ce qu'il faut faire, et il gère le processus de décommissionnement des nœuds.
CdXz5zHNQW_GmhHD5ubWA.png
Les sondages internes de Pinterest auprès des développeurs ont révélé que la documentation technique est un point de friction majeur, les problèmes se résumant à la qualité et à la découvrabilité. Les solutions traditionnelles, telles que les doc-a-thons et les appels passionnés des hauts responsables, n'ont pas produit d'améliorations durables. En 2021, Pinterest a décidé d'essayer une nouvelle approche, en explorant différentes stratégies pour améliorer les outils et les processus de documentation, en mettant l'accent sur la stratégie "docs-as-code" (documentation en tant que code). Cette initiative, appelée PDocs, visait à élever la qualité de la documentation technique et à transformer la culture de la documentation chez Pinterest. La philosophie "docs-as-code" implique de rédiger la documentation en utilisant les mêmes processus que le code, notamment l'utilisation de langages de balisage, du contrôle de source, des outils de revue de code et des générateurs de sites statiques. En adoptant cette stratégie, Pinterest visait à résoudre les problèmes de documentation, à encourager les bonnes pratiques de documentation, le contrôle de la qualité et la découvrabilité. PDocs, un générateur de sites statiques personnalisé, a été développé pour colocaliser automatiquement les projets de documentation provenant de divers chemins de fichiers et référentiels, générant ainsi un seul site de documentation centralisé. PDocs permet une expérience de développement où les ingénieurs peuvent déposer un simple fichier de configuration et un fichier Markdown dans n'importe quel référentiel, et le faire apparaître sur le site de documentation centralisé une fois fusionné. L'interface utilisateur de PDocs a été conçue pour être centrée sur le projet, avec des fonctionnalités telles que la mise en favoris, les éléments récemment consultés et un paramètre "publié" ou "brouillon" pour maintenir la confiance des lecteurs.
CdXz5zHNQW_I5dnAJn3pO.png
Pinterest est une plateforme unique où les utilisateurs, appelés Pinners, viennent chercher l'inspiration et des idées pour divers aspects de leur vie. L'objectif de la plateforme est d'offrir une expérience personnalisée, en montrant aux utilisateurs un contenu pertinent par rapport à leurs intérêts et à leurs recherches. L'approche de Pinterest en matière de personnalisation diffère de celle des autres plateformes, car elle privilégie un temps de qualité plutôt que le temps passé sur la plateforme. L'entreprise estime qu'un équilibre entre différentes approches du classement du contenu est nécessaire, intégrant des signaux d'engagement explicites, des directives communautaires et une personnalisation basée sur des sondages. Pinterest utilise des sondages pour recueillir les commentaires des utilisateurs et créer une expérience plus saine et plus inspirante. Les sondages de la plateforme sont conçus pour être rigoureux et efficaces, avec une équipe d'experts veillant à ce qu'ils soient bien conçus et utiles. Les sondages ont joué un rôle déterminant dans l'aide apportée à Pinterest pour créer une expérience positive et inspirante pour les utilisateurs, des recherches récentes montrant que la plateforme est un chef de file du secteur en termes d'impact sur le bien-être des utilisateurs. L'approche de Pinterest en matière de personnalisation est guidée par les principes de l'Inspired Internet Pledge (Engagement pour un Internet Inspirant), qui appelle les entreprises à donner la priorité au bien-être des utilisateurs et à créer une expérience internet plus saine. En utilisant des sondages et en donnant la priorité au bien-être des utilisateurs, Pinterest prouve qu'il est possible de créer une expérience en ligne plus sûre et plus saine. Globalement, l'approche unique de Pinterest en matière de personnalisation et son engagement envers le bien-être des utilisateurs le distinguent des autres plateformes de médias sociaux.
CdXz5zHNQW_xMjUEWeEAQ.png
Le système de recommandation de flux d'accueil de Pinterest a adopté une conception à plusieurs étapes, et a atteint un jalon important avec une couche de pré-classement sophistiquée qui a amélioré les métriques commerciales. La conception initiale avait des limitations, notamment les efforts de déploiement, les défis de ré-entraînement automatique des modèles et une architecture à deux tours qui ne pouvait pas apprendre les interactions entre les éléments de manière efficace. L'équipe a apporté des améliorations fondamentales pour moderniser la couche de pré-classement, notamment une nouvelle conception de système, un pipeline de journalisation et une architecture de service. La nouvelle conception comprend un sous-composant de niveau de requête et un sous-composant de niveau d'élément qui sont entraînés conjointement et découplés pendant le service. L'équipe a également mis en place un pipeline de journalisation de funnel précoce pour distinguer le pré-classement du classement et pour apporter des données non biaisées dans l'entraînement de l'architecture comprend une architecture racine-feuille pour atténuer les surcoûts de CPU et de mémoire. L'équipe a également adopté la distillation de modèle pour mieux aligner le modèle de pré-classement avec le classeur L2. Les expériences en ligne ont montré des gains significatifs d'engagement, et l'équipe a également travaillé sur la mise en place d'un framework de ré-entraînement pour exploiter les données d'engagement fraîches. L'équipe continue de travailler sur les innovations de modèle, la sélection de données, l'amélioration de l'architecture de modèle, l'exploration des pertes et l'optimisation du service.
CdXz5zHNQW_P7QrX8S0r6.png
Chez Pinterest, la mission est d'inspirer les utilisateurs à créer une vie qu'ils aiment, ce qui repose sur des modèles de recommandation et de publicités de pointe formés à partir de dizaines de pétaoctets de données. Ces modèles entraînent des recommandations personnalisées, montrant aux utilisateurs du contenu qui résonne avec leurs intérêts. Expérimenter avec des fonctionnalités est une tâche courante, et la première étape consiste à intégrer de nouvelles fonctionnalités dans le jeu de données d'apprentissage. La méthode la plus directe pour intégrer des fonctionnalités est par enregistrement en avant, mais cette méthode pose des défis tels que coût élevé en jours calendaires, temps de développement élevé, manque d'isolement, gaspillage de ressources et instabilité. Le backfill de fonctionnalités est une alternative à l'enregistrement en avant couramment utilisée pour répondre à ces défis. Dans cet article de blog, les auteurs explorent comment ils ont créé leur solution de backfill de fonctionnalités, en exploitant diverses techniques pour réduire les coûts et le temps d'itération jusqu'à 90 fois. Les auteurs ont développé une solution de backfill initiale utilisant Spark pour matérialiser les fonctionnalités dans leurs tables d'apprentissage, qui fonctionne comme un DAG Airflow réutilisable déclenché par les ingénieurs ML sur demande. Cependant, cette solution pose des défis tels que l'absence de backfills concurrents, coût de calcul élevé et gestion manuelle des partitions. Pour répondre à ces défis, les auteurs ont développé une version v2, adoptant une approche de backfill en deux étapes, qui rationalise le processus en deux étapes clés : la mise en scène des fonctionnalités et la promotion des fonctionnalités.
CdXz5zHNQW_YKhzxUkvad.png
La plateforme d'expérimentation de Pinterest, Helium, exécute des expériences quotidiennes générant des connaissances pour les décisions de produits et les stratégies commerciales. Cependant, à mesure que l'échelle de l'expérimentation a augmenté, des défis sont apparus, notamment des retards dans l'ingestion de données en amont, des difficultés pour combler les lacunes dans les métriques et des problèmes de scalabilité fréquents. Pour relever ces défis, Pinterest a développé le Cadre Dynamique Unifié (UDF), une solution évolutivité et résiliente qui a transformé la façon dont les métriques d'expérimentation sont calculées. Le UDF prend en charge 100 fois plus de métriques et est conçu pour évoluer jusqu'à 500 fois dans le futur, accélérant la livraison des métriques et réduisant les efforts d'ingénierie de mois à des jours. Le cadre atteint une standardisation du traitement des métriques, déchargeant les défis d'infrastructure et les complexités de création de pipeline. Le UDF répond aux dépendances en amont, à la complexité de backfill et aux problèmes de scalabilité, permettant une expérimentation et une innovation plus rapides. Le cadre a amélioré la vitesse de développement, la flexibilité, la scalabilité, la vitesse et la fiabilité, stimulant l'innovation et les résultats commerciaux. La standardisation du calcul des métriques à travers la plateforme d'expérimentation a conduit à des améliorations considérables, permettant l'expérimentation et apportant de la valeur aux utilisateurs. Le UDF a révolutionné le calcul des métriques d'expérimentation chez Pinterest, et son impact continuera de croître dans le futur.
CdXz5zHNQW_HsQvhLZ0Fu.png
L'architecture de modèle Multi-gate Mixture-of-Experts (MMoE) améliore la modélisation de l'engagement publicitaire en affectant dynamiquement des ressources à des sous-réseaux spécialisés (experts). Cela améliore l'efficacité, la généralisation et l'apprentissage multi-tâches par rapport aux modèles uniques. MMoE exploite des experts avec des architectures diverses comme DCNv2, MaskNet et FinalMLP, choisis de manière stratégique en fonction de la performance et du coût. Le modèle utilise également l'inférence de précision mixte et des couches de porte légères pour réduire les coûts d'infrastructure sans sacrifier les performances. La distillation de connaissances améliore encore le modèle en transférant les connaissances des modèles de production existants vers les nouveaux modèles. Cela atténue les écarts de performance causés par les périodes de rétention de données limitées et permet aux nouveaux modèles d'apprendre à partir de données historiques indisponibles. La distillation améliore significativement les métriques offline et online, surpassant le modèle de référence DCNv2. La technique est bénéfique lors des scénarios d'entraînement par lots et de réentraînement de modèles, tels que les mises à jour de fonctionnalités. Cependant, la distillation est supprimée lors de l'entraînement incrémental pour éviter la sur-apprentissage. L'approche combinée de MMoE et de distillation de connaissances conduit à des améliorations substantielles de la qualité de mise en correspondance des annonces et de l'expérience utilisateur. Cela se traduit par des recommandations plus pertinentes et une amélioration de l'engagement utilisateur sur la plateforme.
CdXz5zHNQW_Eh609KFgJk.png
Pinterest a migré 3,7 millions de lignes de code de Flow vers TypeScript en huit mois, ce qui a entraîné une meilleure sécurité de type, une expérience développeur améliorée et une amélioration du recrutement. L'entreprise avait initialement choisi Flow au-dessus de TypeScript en 2016 en raison de son adoption progressive et de son intégration sans heurt avec React. Cependant, lorsque l'industrie a adopté TypeScript comme standard pour la vérification de type JavaScript, Pinterest a décidé d'adopter ce dernier en raison de son meilleur soutien communautaire, de ses fonctionnalités de langage et de la disponibilité de talents. La migration a été réalisée en utilisant une approche "big bang", divisant le processus en trois phases : configuration, conversion et intégration. La phase de configuration a consisté à configurer TypeScript et @typescript-eslint, tandis que la phase de conversion a impliqué la migration des dépendances, l'exécution de codemods et la suppression des erreurs ESLint. La phase d'intégration s'est concentrée sur l'adaptation des systèmes existants pour fonctionner dans le nouvel environnement TypeScript. L'entreprise a écrit un script pour automatiser l'ensemble du processus, minimisant les conflits de fusion et les interventions manuelles. Après avoir validé la migration par des tests automatisés quotidiens, plusieurs rounds de tests manuels et une analyse statique byte-for-byte, Pinterest a réussi à déployer la branche TypeScript. L'entreprise a appris beaucoup de la communauté open-source et a contribué au codemod flow-to-typescript de Stripe. L'expérience de Pinterest sert de leçon précieuse pour les autres entreprises qui envisagent une migration similaire.
CdXz5zHNQW_u2LVnNpu5X.png
Pinterest, un moteur de recherche visuel, fonctionne sur AWS et utilise des instances Amazon EC2 pour son parc informatique. L'entreprise a identifié un défi majeur dans la gestion de son infrastructure EC2, notamment pour ses systèmes de stockage en ligne, en raison d'un manque de visibilité claire sur les performances réseau d'EC2 et son impact sur la fiabilité et les performances de l'application. Pour résoudre ce problème, Pinterest a développé une surveillance des performances réseau de son parc EC2 et a mis en œuvre des techniques pour gérer les pics de trafic réseau, garantissant ainsi des performances réseau fiables pour les charges de travail critiques de service en ligne. L'entreprise a rencontré des problèmes avec le service de séquences utilisateur, qui a généré des gains importants en termes d'engagement utilisateur, mais a entraîné une latence de service et des délais d'expiration de l'application. Lors d'une migration d'instances EC2, Pinterest a constaté une dégradation significative des performances sur de nombreux clusters, entraînant des délais d'expiration de l'application. L'entreprise a découvert que les instances EC2 subissaient une limitation du débit réseau due à des micro-pics dépassant l'allocation réseau. Pour rendre le comportement de limitation du débit réseau EC2 plus transparent, Pinterest a mis à niveau ses instances pour accéder aux compteurs bruts sur une instance EC2 à l'aide d'outils tels qu'ethtool. L'entreprise a modifié son agent de collecte de mesures internes pour récupérer ces compteurs et les intégrer à son stockage de mesures. En déployant ces mesures ENA sur l'ensemble de son parc EC2, Pinterest a obtenu une visibilité sans précédent sur la gestion du trafic AWS et a mis en œuvre diverses optimisations pour atténuer la limitation du débit réseau. L'entreprise a également exploré des techniques pour gérer les pics de trafic réseau, notamment la limitation de débit S3 granulaire, l'optimisation des sauvegardes de données et la compression réseau.
CdXz5zHNQW_DGfWhUSLvs.jpeg
La recherche Pinterest est une surface clé où les utilisateurs peuvent découvrir du contenu inspirant qui correspond à leurs besoins d'information, et la pertinence de la recherche mesure à quel point les résultats de la recherche correspondent à la requête de recherche. Pour améliorer le modèle de pertinence de la recherche, une directive à 5 niveaux est utilisée pour mesurer la pertinence entre les requêtes et les épingles. Un modèle de langage cross-encoder est utilisé pour prédire la pertinence d'une épingle par rapport à une requête, ainsi que le texte de l'épingle, et la tâche est formulée comme un problème de classification multiclasse. Le modèle est affiné en utilisant des données annotées par des humains, en minimisant la perte d'entropie croisée.Pour représenter chaque épingle, un ensemble varié de caractéristiques textuelles est utilisé, notamment les titres et les descriptions des épingles, les légendes d'images synthétiques, les jetons de requête à forte interaction, les titres de planches créés par les utilisateurs et les titres et les descriptions de liens. Cependant, le classificateur basé sur le modèle de langage cross-encoder LLM est difficile à mettre à l'échelle pour la recherche Pinterest en raison de considérations de latence et de coût en temps réel. Par conséquent, la distillation des connaissances est utilisée pour distiller le modèle d'enseignant LLM en un modèle d'apprentissage léger.Le modèle d'apprentissage utilise des caractéristiques au niveau de la requête, des caractéristiques au niveau de l'épingle et des caractéristiques d'interaction requête-épingle pour prédire des scores de pertinence à 5 échelles. La distillation des connaissances et l'apprentissage semi-supervisé sont utilisés pour former le modèle d'apprentissage, qui utilise efficacement de grandes quantités de données initialement non étiquetées et étend les données à un large éventail de langues du monde entier.Les expériences hors ligne démontrent l'efficacité de chaque décision de modélisation, notamment la comparaison des modèles de langage, l'importance de l'enrichissement des caractéristiques textuelles et la mise à l'échelle des étiquettes de formation grâce à la distillation. Les résultats en ligne montrent une amélioration de +2,18 % de la pertinence de l'alimentation de recherche, telle que mesurée par nDCG@20, et une augmentation significative des taux de satisfaction de la recherche à l'échelle mondiale.Le pipeline de modélisation de la pertinence proposé généralise efficacement à travers les langues non rencontrées pendant la formation, et le modèle d'enseignant LLM multilingue généralise à travers les langues non vues. Les travaux futurs exploreront l'intégration de LLM servables, de modèles multimodaux vision-langage et de stratégies d'apprentissage actif pour mettre à l'échelle dynamiquement et améliorer la qualité des données de formation.
CdXz5zHNQW_lGLj8VappE.png
CdXz5zHNQW_dIw0eAnzaq.png
Apache Kafka est devenu une solution PubSub omniprésente, gérant des pétaoctets de données à Pinterest. Pour répondre aux besoins de stockage croissants, le stockage en plusieurs étages (Tiered Storage) a émergé comme un modèle de conception qui déplace les données des disques de broker coûteux vers des systèmes de stockage à distance plus abordables.Le stockage en plusieurs étages natif dans Kafka 3.6.0+ lie étroitement la fonctionnalité au processus de broker, limitant la flexibilité.L'implémentation de stockage en plusieurs étages déconnecté de Pinterest sépare le stockage du calcul, offrant des avantages tels que la réduction des coûts, l'optimisation des ressources et une adoption plus facile.L'approche déconnectée emploie un chargeur de segment qui charge les segments de journal finalisés dans le stockage à distance, un consommateur de stockage en plusieurs étages pour la consommation de données, et un système de stockage à distance avec des coûts de stockage par unité plus faibles.Le chargeur de segment surveille les systèmes de fichiers des brokers pour détecter les segments finalisés, détecte les changements de leadership via ZooKeeper (ou KRaft dans les versions plus récentes de Kafka), et gère la tolérance aux pannes pour assurer la continuité des données.Le consommateur de stockage en plusieurs étages lit les données à la fois sur le disque local du broker et dans le stockage à distance, réduisant le coût de service.Cette implémentation déconnectée a déplacé environ 200 TB de données quotidiennes des disques de broker vers le stockage d'objets plus abordable depuis mai 2024.Elle offre une flexibilité dans l'adoption du stockage en plusieurs étages et les mises à jour de fonctionnalités, sans affecter les performances du broker.L'implémentation open-source de la solution de stockage en plusieurs étages déconnecté de Pinterest pour Apache Kafka est maintenant disponible.
Le programme de stages de Pinterest associe les stagiaires à des mentors pour favoriser le développement de carrière. Les mentors guident les stagiaires tout au long de leur parcours professionnel, leur offrant soutien et expertise.Irena Lee, ingénieure logicielle, est devenue mentor pour donner en retour la mentorat qu'elle a reçu, offrant une expérience d'intégration positive à son stagiaire.Ricardo Casilimas, ingénieur iOS, cherche à reproduire son expérience de stage transformante en donnant confiance et des compétences à ses stagiaires.Lily Liu, scientifique des données senior, valorise la mentorat car elle permet de remettre en question ses propres hypothèses et d'acquérir de nouvelles perspectives de la part de ses mentés.Sujay Khandagale, ingénieur en apprentissage automatique, considère la mentorat comme récompensante et croyant qu'elle permet une croissance personnelle et professionnelle.David Xue, ingénieur en apprentissage automatique, attribue à son mentor de stage le mérite de l'avoir émancipé et apprécie de mentoriser les stagiaires car cela permet une appréntissage mutuel.Le moment le plus mémorable pour Lee fut de se connecter avec son stagiaire en personne, renforçant leur lien de mentorat.Casilimas fut impressionné par la croissance de son stagiaire et sa détermination à apprendre de ses erreurs.Liu a pris plaisir à voir le progrès de son stagiaire et sa capacité à naviguer les défis de manière indépendante.Khandagale a trouvé récompensant de guider son stagiaire tout au long du processus de construction et de déploiement d'un modèle d'apprentissage automatique.Xue valorise les moments où ses stagiaires le surprennent avec leurs idées et l'exécution de leurs projets.
Goku, la base de données de série chronologique de Pinterest, se compose de sous-composants : Goku Short Term (GokuS), Goku Long Term (GokuL), Goku Compactor et Goku Root.Afin de réduire les coûts, Pinterest a mis en œuvre deux fonctionnalités pour l'équipe Observabilité : L'espace de noms de métriques permet des configurations de stockage flexibles pour différentes familles de métriques, tandis que la fourniture des métriques d'écriture lourdes en tête aide à identifier les métriques à bloquer, réduisant les données stockées dans GokuS.Les changements architecturaux dans GokuS, Compactor et Ingestor visent à réduire l'empreinte des ressources. Les améliorations de l'indexation ont optimisé le stockage des noms de métriques, réduisant significativement la consommation de mémoire de processus.Les améliorations de la compaction ont utilisé l'encodage de dictionnaire pour représenter les noms de métriques, ce qui a entraîné une réduction de l'utilisation de la mémoire.L'analyse de la mémoire de processus et l'évaluation du matériel des machines du cluster ont aidé à déterminer les types d'instances appropriés.La consommation de mémoire pour les noms de métriques dans GokuS a été réduite d'environ 9 Go par hôte après les améliorations de l'indexation.L'équipe Observabilité a réduit le nombre de séries chronologiques stockées dans GokuS de 37% en utilisant les fonctionnalités de Goku.L'utilisation du disque sur les hôtes GokuL a été réduite d'environ 27%.Ces optimisations permettent à Pinterest de stocker et de traiter de vastes quantités de données de métriques de manière rentable.
Pinterest a amélioré les performances vidéo grâce à la diffusion en flux continu adaptatif (ABR), en utilisant le streaming en direct HTTP (HLS) et la diffusion adaptative dynamique sur HTTP (DASH).Pour réduire la latence de démarrage, Pinterest a intégré des fichiers de manifeste dans les réponses API, éliminant les aller-retours réseau multiples pour récupérer les manifestes.MemCache a été ajouté pour réduire la charge sur les points de terminaison API pour la récupération des manifestes, ce qui a également réduit la latence.La personnalisation du processus de chargement des manifestes dans les lecteurs (AVPlayer et ExoPlayer) a permis d'accéder directement aux informations de manifeste, contournant les téléchargements inutiles.Les plateformes iOS et Android ont mis en œuvre ces solutions, entraînant des améliorations significatives de la latence de démarrage et de l'engagement des utilisateurs.En manipulant le chargement des manifestes, les clients peuvent ajuster le contrôle de la qualité vidéo, limitant les renditions de débit pour les surfaces d'interface utilisateur spécifiques.Ce projet a été mené par Liang Ma et Sterling Li, dont l'expertise technique a joué un rôle crucial dans son succès.Cette amélioration complète les initiatives d'ingénierie de Pinterest, qui visent à améliorer l'expérience utilisateur et à stimuler l'engagement.Pour en savoir plus, visitez le blog d'ingénierie de Pinterest, Pinterest Labs et la page des offres d'emploi pour les rôles ouverts.
NEP (Processeur d'événements de notification) est un système de notification en temps réel développé par Pinterest. Il améliore l'engagement des utilisateurs grâce à des notifications personnalisées basées sur divers facteurs. NEP utilise l'apprentissage automatique pour déterminer le contenu, les destinataires, les canaux et le moment optimal pour les notifications. Ses composants de modélisation clés se concentrent sur ce qu'il faut envoyer, à qui, par quel canal, à quel moment et comment prioriser le contenu. NEP introduit une approche de génération de candidats quotidiens pour les événements de notification, et emploie un modèle multi-tête (NEP ranker) pour prédire les probabilités d'engagement des utilisateurs. La composante Policy prend des décisions d'envoi de notifications en fonction des scores d'utilité et des seuils, qui sont automatiquement ajustés à l'aide d'un contrôleur PID pour aligner le volume d'envoi. La mise en œuvre de NEP a entraîné des améliorations significatives dans les métriques d'engagement des e-mails et des push, ainsi que dans la croissance du nombre d'utilisateurs actifs hebdomadaires (WAU). Le système est servi en temps réel à l'aide d'un cluster GPU et la mise en service de modèles à faible précision est prévue pour une optimisation future. NEP démontre l'importance des notifications dans la rétention des utilisateurs et met en évidence les avantages de l'utilisation de l'apprentissage automatique pour des stratégies d'engagement personnalisées et opportunes.
Pinterest priorise la lutte contre les régressions de performance, en utilisant des métriques d'utilisateur en temps réel pour surveiller et enquêter sur les problèmes. Les systèmes de détection proactifs comprennent des vérifications d'expériences A/B, qui déclenchent des alertes et des billets Jira pour les régressions significatives. Les tableaux de bord d'expériences fournissent des métriques de performance de premier ordre, tandis que des tableaux de bord supplémentaires permettent une investigation plus approfondie des chemins critiques. Lorsqu'une analyse détaillée est nécessaire, des métriques de débogage en temps réel peuvent être activées.Les vérifications de taille de bundle JS par différence identifient et empêchent les augmentations de taille de bundle qui pourraient causer des régressions de PWT. Ces vérifications ont réduit les régressions de production dues à des augmentations de taille de bundle à presque zéro. Les tests d'intégration de performance sont également exécutés par différence pour détecter les régressions de manière synthétique avant qu'elles ne parviennent aux utilisateurs.Les enseignements clés tirés de ces outils comprennent l'importance de la surveillance en temps réel des utilisateurs, des systèmes proactifs automatisés et des alertes de régression claires et actionnables. Ces systèmes permettent une détection précoce, isolent les causes racines, permettent une auto-suffisance en matière de performance et évoluent avec la croissance de l'entreprise. Ils ont considérablement réduit les régressions de performance, amélioré la vitesse interne et renforcé l'expérience utilisateur.
La plateforme de diffusion publicitaire de Pinterest, Mohawk, avait accumulé une complexité et une dette technique significatives au cours de ses huit ans d'existence. Pour résoudre ces problèmes et poser les bases pour une croissance future, l'équipe Ads Infra a initié une réécriture complète du système à la fin de 2021.La réécriture visait à améliorer l'extensibilité, la séparation des préoccupations et l'intégrité des données, tout en renforçant la vitesse de développement et la sécurité. Après trois mois de recherche et d'évaluation, l'équipe a décidé de reconstruire le service en utilisant Java et le framework d'exécution de graphique Apex.Une décision clé dans la conception était d'utiliser Apex pour organiser le code en graphes acycliques dirigés (DAG), où chaque nœud représentait une unité logique commerciale cohérente. Cela a permis la modularité et l'extensibilité.L'équipe a également développé un modèle de données innovant transmis à travers le graphique pour garantir l'exécution sécurisée et l'intégrité des données.Le service redessiné, nommé AdMixer, est entré en production en milieu de 2023 sans aucun temps d'arrêt significatif. Il a permis une innovation produit plus rapide, une satisfaction accrue des développeurs et des économies de coûts d'infrastructure.La réécriture a impliqué une collaboration significative et des contributions de plus de 280 ingénieurs. L'équipe a attribué son succès à une planification soignée, à l'adhésion aux principes de conception d'ingénierie et à un engagement en faveur de la qualité et de la sécurité.Le nouveau service AdMixer a fourni une solide base pour le business publicitaire de Pinterest et est bien positionné pour soutenir la croissance et l'innovation futures.