RSS Etsy Engineering | Code as... Note

RSS Etsy Engineering | Code as Craft

Codeascraft sur Etsy est une collaboration d'artisans où la programmation informatique rencontre l'artisanat traditionnel. Le projet consiste en divers artefacts numériques créés par des programmeurs et des artistes renommés, transformés en bibelots pour les amateurs de technologie. Cela inclut des rendus imprimés d'algorithmes binaires sur des chandeliers en verre, des colliers de numéros binaires façonnés à la main et des portraits de bits numériques encapsulés dans des presse-papiers en verre. Codeascraft vise à combler le fossé entre la technologie et l'artisanat, offrant des collectibles uniques pour les amateurs de code.

Fil de notes

Le marché d'Etsy, qui propose des millions d'articles uniques et faits à la main provenant de divers vendeurs, est confronté à des défis dans l'organisation de ses données non structurées. Les méthodes traditionnelles d'extraction des attributs des produits avaient du mal avec la diversité de l'inventaire et les données structurées limitées. Les grands modèles de langage (LLM) ont offert une nouvelle opportunité de transformer les informations non structurées sur les produits en données structurées. Etsy a développé un pipeline évolutif utilisant des LLM, en se concentrant sur l'ingénierie contextuelle pour améliorer la précision de l'extraction des attributs. Ce pipeline exploite les données fournies par les vendeurs, des exemples d'experts et la taxonomie d'Etsy. L'évaluation de la sortie du LLM implique la génération d'« étiquettes argentées » et l'utilisation d'experts du domaine pour l'assurance qualité. Le processus d'inférence extrait les attributs, utilise LiteLLM pour le routage régional et emploie Pydantic pour la validation des données. Des systèmes de surveillance robustes suivent l'état du pipeline et les mesures de performance du modèle. L'application des attributs générés par les LLM aux filtres de recherche a amélioré l'engagement des acheteurs et les taux de conversion. Etsy vise à étendre son utilisation des LLM pour améliorer davantage l'expérience d'achat et de vente. L'objectif ultime est de garantir que les besoins des acheteurs et des vendeurs soient satisfaits avec une efficacité maximale.
CdXz5zHNQW_2IBkaI4nUO.jpeg
CdXz5zHNQW_8gTIiBrymu.jpeg
"Etsy utilise des grands modèles de langage (LLM) pour créer des profils d'acheteurs détaillés et anonymes, basés sur l'historique de navigation et d'achat. Ces profils capturent des intérêts nuancés et des missions d'achat, améliorant ainsi la personnalisation pour près de 90 millions d'acheteurs sur la plateforme. L'implémentation technique consiste à récupérer les données d'activité de l'utilisateur, puis à solliciter un LLM pour interpréter ces données en vue de la génération du profil. Pour rendre ce processus évolutif et rentable, Etsy a optimisé les sources de données, réduit le volume de tokens d'entrée, augmenté les tailles de lots et utilisé le traitement parallèle. Ces optimisations ont considérablement réduit le temps et les coûts de génération des profils d'acheteurs. Les profils d'acheteurs générés sont ensuite appliqués pour personnaliser l'expérience de recherche grâce à la réécriture de requêtes et aux filtres de raffinement. La réécriture de requêtes enrichit les recherches des utilisateurs avec des intérêts prédits, tandis que les filtres de raffinement offrent des filtres cliquables basés sur les préférences de l'utilisateur. Etsy mesure le succès de cette personnalisation à travers des métriques telles que l'augmentation du taux de clics et du taux de conversion. Ils maintiennent également la précision des profils en les actualisant dynamiquement en fonction de l'activité de l'utilisateur et en détectant les dérives d'intérêts. Les travaux futurs incluent la résolution du problème du "démarrage à froid" pour les nouveaux utilisateurs en expérimentant avec des profils d'héritage. En fin de compte, Etsy vise à améliorer la découverte et à créer des expériences de recherche plus intuitives pour chaque acheteur."
CdXz5zHNQW_Nxw1u6jGOy.jpeg
Ce poste explore l'ingénierie de prompts avec des modèles de langage grand public (LLM) pour l'onboarding assisté par l'IA chez Etsy. L'objectif principal est de vérifier la véracité et la fiabilité des réponses générées par les LLM, en particulier concernant les questions spécifiques à Etsy. L'étude a examiné deux cas d'utilisation : les questions de politique de voyage et de divertissement (T&E) internes et les questions du forum de la communauté des vendeurs Etsy externes. Pour la politique T&E, les LLM ont répondu correctement à environ 86% des questions, mais les 14% restants contenaient des erreurs factuelles ou des déclarations trompeuses, appelées "hallucinations". Des techniques telles que demander au LLM d'admettre son incertitude ou d'expliquer son raisonnement ont été trouvées pour atténuer ces hallucinations. Dans les forums de la communauté Etsy, avec des données plus hétérogènes, la précision des LLM a chuté à environ 72%. Le LLM a mieux performé lorsque les requêtes correspondaient étroitement au libellé des documents de référence. L'étude a également mis en évidence les limitations où même la fourniture de contexte supplémentaire ne résolvait pas certaines questions complexes. Demander des extraits de source a été identifié comme méthode pour signaler les hallucinations potentielles des LLM. Dans l'ensemble, l'ingénierie de prompts montre du potentiel, mais nécessite une élaboration soignée pour garantir une assistance fiable de l'IA dans l'onboarding et la récupération d'informations.
La migration d'Etsy vers la plateforme Google Cloud a conduit à la création d'une équipe FinOps dédiée qui stimule l'optimisation de la valeur du cloud à travers des collaborations au sein et en dehors de l'organisation.La méthodologie de prévision de l'équipe repose sur une métrique de Coût par Visite (CPV) pour établir une base de dépenses pour le suivi et l'identification des écarts.Malgré les limitations du CPV, l'équipe FinOps surveille les coûts en utilisant des outils internes et des alertes pour détecter les pics soudains ou la croissance graduelle.La collaboration régulière avec le département des Finances garantit l'alignement entre les coûts réels et les prévisions.Les augmentations de coûts sont rapidement identifiées et atténuées par l'analyse, la collaboration, la validation et le dépannage.Les initiatives d'optimisation des coûts impliquent une collaboration entre les équipes FinOps et d'ingénierie, avec un accent mis sur l'amélioration de l'efficacité plutôt que simplement sur les économies de coûts.Les récentes initiatives d'optimisation comprennent l'optimisation du stockage GCS, l'optimisation des calculs, une automatisation accrue pour le déploiement de modèles et la compression du réseau.L'équipe FinOps accorde la priorité à l'amélioration de la visibilité des dépenses de la plateforme d'apprentissage automatique pour améliorer l'analyse du ROI et identifier les futures opportunités d'optimisation.L'opération indépendante de l'équipe au sein de l'ingénierie et son focus sur l'optimisation globale plutôt que locale contribuent à une pratique FinOps réussie.La culture d'ingénierie robuste d'Etsy, qui met l'accent sur l'efficacité et la qualité artisanale, contribue à l'efficacité de l'équipe FinOps.
En juillet 2023, l'équipe des mises à jour de l'application Etsy a entrepris de transformer le flux de mises à jour en "Deals", un hub pour les coupons et les ventes. L'équipe a considéré le développement d'un nouveau onglet à partir de zéro en utilisant des technologies modernes telles que Swift UI et Tuist.En équilibrant l'ambition avec le réalisme, l'équipe a adopté une approche hybride, en utilisant Swift UI pour le développement modulaire et la prévisualisation, tandis qu'elle intégrait le codebase existant en UIKit pour la navigation et d'autres fonctionnalités.La modularité de Swift UI a permis à l'équipe de diviser les vues en composants réutilisables, ce qui a facilité le développement rapide et la prévisualisation efficace avec Tuist.Ils ont mis en œuvre des modèles Decodable pour une analyse API claire et efficace, simplifiant la construction des vues et la gestion des optionnels.Des énumérations de prévisualisation ont été introduites pour simplifier la création de données de simulation pour les vues complexes, leur permettant de construire des modules même avant que le support API ne soit terminé.Cependant, l'intégration avec le codebase existant a posé des défis, en particulier dans les domaines de la navigation et de la favorisation.Pour résoudre cela, ils ont créé une structure @Environment personnalisée, DealsAction, qui a renvoyé la responsabilité de la navigation au ciblage principal tout en maintenant la fonctionnalité callAsFunction() de Swift UI.Les objets d'environnement ont été utilisés pour d'autres fonctionnalités, telles que la favorisation, le suivi des boutiques et la journalisation des métriques de performance.Cette approche hybride a permis à l'équipe de tirer parti des avantages des technologies modernes tout en respectant les contraintes du codebase hérité, aboutissant à un lancement de produit réussi avant la semaine du Cyber Week.
L'équipe des systèmes de fonctionnalités d'Etsy a rencontré un problème potentiel lors de l'utilisation de caractéristiques de timestamp dans les modèles d'apprentissage automatique en raison d'une interprétation erronée de la précision entre les frameworks.Le problème provenait du type de données timestamp, qui était interprété différemment par différents frameworks, ce qui menait à un écart potentiel entre la formation et la mise en service.Pour résoudre ce problème, les praticiens de l'apprentissage automatique ont recommandé d'éviter le type timestamp et d'utiliser un type numérique plus basique, comme des Longs.L'équipe a enquêté sur la cause racine, découvrant que le problème allait au-delà de bugs spécifiques et mettait en évidence un problème plus large pour les praticiens de l'apprentissage automatique dans la gestion des caractéristiques de timestamp.L'équipe a réalisé que la complexité des objets datetime et des types timestamp était inutile pour leur cas d'utilisation, car ils n'avaient besoin que de représentations entières à une précision spécifique.Lors d'une réunion du groupe de travail d'architecture, il y a eu un consensus pour représenter les caractéristiques datetime comme des types numériques primitifs afin d'assurer la cohérence entre la formation et l'inférence du modèle.L'équipe a également décidé de standardiser sur les types primitifs de manière plus générale pour promouvoir la cohérence dans tous les contextes de formation.L'équipe a également reconnu le besoin d'une documentation améliorée pour simplifier la transformation des caractéristiques pour les clients.L'incident a mis en évidence les défis potentiels dans l'application des pratiques d'ingénierie logicielle aux besoins spécifiques de l'apprentissage automatique.Alors que l'apprentissage automatique continue de s'intégrer dans les systèmes logiciels, ce genre de nuances deviendra probablement plus courant et nécessitera une révision continue des meilleures pratiques.
La fonction de recherche par image d'Etsy permet aux utilisateurs de rechercher des articles similaires à des photos qu'ils téléchargent. Cette fonctionnalité utilise un modèle d'apprentissage automatique pour convertir les images en représentations numériques appelées embeddings, qui sont ensuite utilisées pour les recherches de similarité.Le modèle est basé sur un réseau de neurones convolutionnel (CNN) pré-entraîné qui a été affiné pour la tâche d'apprentissage des embeddings d'images. Le modèle est entraîné en utilisant une approche d'apprentissage multitâche, où il apprend à effectuer plusieurs tâches de classification simultanément, y compris la catégorie d'articles, la couleur et les attributs.Pour réduire les biais en faveur des images de produits de haute qualité, le modèle est également entraîné sur un ensemble de données de photos de révisions soumises par les utilisateurs.Le pipeline d'inférence implique la construction d'un index de voisins les plus proches approximatifs (ANN) en utilisant un algorithme de fichier inversé (IVF) pour optimiser les performances de recherche.Les photos de requête sont inférées en temps réel en utilisant la technologie d'inférence GPU pour garantir des temps de réponse rapides.La fonction de recherche par image a été initialement développée pendant le hackathon CodeMosaic d'Etsy et a depuis été mise en œuvre comme fonctionnalité de production.La fonctionnalité aide les acheteurs à découvrir des articles uniques et spéciaux sur Etsy en leur offrant une nouvelle manière intuitive de rechercher des produits similaires.L'architecture du modèle et l'objectif d'apprentissage ont été optimisés pour produire des résultats visuellement cohérents tout en maintenant l'exactitude catégorielle.L'ajout de photos de révisions à l'ensemble de données d'entraînement a significativement amélioré la capacité du modèle à mettre en surface des résultats pertinents à partir de photos soumises par les utilisateurs.La fonctionnalité a été bien accueillie par les utilisateurs et a contribué à une augmentation de l'engagement et de la satisfaction des acheteurs sur Etsy.
Etsy emploie des modules de recommandation pour présenter des éléments pertinents aux utilisateurs, chacun alimenté par un classeur qui évalue la pertinence des éléments candidats. Traditionnellement, Etsy utilisait des classeurs spécifiques à chaque module, mais cette approche est devenue ingérable avec l'augmentation du nombre de modules.Pour résoudre ce problème, Etsy a développé des classeurs canoniques, qui sont formés pour alimenter plusieurs modules, garantissant l'efficacité et la cohérence. Le premier classeur canonique s'est concentré sur la fréquence de visite, en utilisant le taux de favoris comme substitut pour les révisites.La structure du modèle du classeur de fréquence comprenait une architecture partagée-inférieure avec des couches distinctes pour les prédictions de favoris et d'achats, combinées en un score de classement final. Le classeur a également intégré une caractéristique de nom de module et équilibré les données d'entraînement entre les modules pour garantir la généralisabilité.Malgré la formation sur des données provenant d'un sous-ensemble limité de modules, le classeur canonique a surpassé les classeurs spécifiques aux modules sur les modules non utilisés pour la formation, démontrant son efficacité comme solution canonique.Le classeur de fréquence a amélioré les taux de favoris sur les pages d'éléments et les pages d'accueil, avec des améliorations significatives des métriques d'achat et d'autres indicateurs d'engagement.Depuis son lancement, Etsy a déployé le classeur canonique sur plusieurs modules à travers les plateformes web et d'application.À l'avenir, Etsy prévoit d'itérer sur le classeur de fréquence, en intégrant plus de contexte et en explorant de nouvelles architectures.Le classeur canonique représente un changement dans la stratégie de recommandation d'Etsy, offrant des recommandations plus personnalisées et une expérience utilisateur plus cohérente à travers les plateformes et les modules.
La mise en production de modèles d'apprentissage automatique (AA) implique une transition de l'expérimentation à des contraintes d'ingénierie rigoureuses, présentant des défis pour trouver un équilibre entre la flexibilité et la stabilité.L'équipe de la plateforme d'AA d'Etsy utilise Kubernetes pour la mise à l'échelle et l'orchestration des modèles, avec Barista gérant les déploiements de modèles.Initialement, les configurations de modèles étaient gérées comme du code, offrant un contrôle strict mais entraînant des retards et des goulots d'étranglement.Pour résoudre ces problèmes, les configurations ont été dissociées et stockées dans une base de données, permettant des changements instantanés via une CLI.Cependant, la CLI nécessitait une expertise technique, ce qui a conduit au développement d'une interface web conviviale pour la gestion des modèles.L'interface web de Barista offre un contrôle exhaustif sur les déploiements, s'intègre à diverses API et simplifie le processus de déploiement.L'augmentation des taux de déploiement des modèles a suscité des inquiétudes quant aux coûts et aux mauvaises configurations, menant à la mise en œuvre de Kube Downscaler pour réduire automatiquement les déploiements inutilisés.L'accent est passé de la satisfaction des besoins techniques de base à la construction d'un produit complet qui permet aux utilisateurs d'AA de travailler efficacement.Les efforts actuels visent à améliorer la cohésion des services et l'automatisation pour optimiser les paramètres d'infrastructure et réduire encore les coûts de cloud.Alors que la pratique d'AA se développe, la plateforme doit continuer à évoluer pour répondre aux besoins croissants de l'équipe.
Les paiements Etsy ont déplacé 40 milliards de lignes à travers 23 tables dans un environnement fragmenté géré par Vitess, en utilisant des vindexes pour le fractionnement des données. Cet article se concentre sur les erreurs qui peuvent survenir pendant la transition.Comprendre les modes de transaction de Vitess est crucial. Le mode unique maintient l'atomicité, mais le mode multiple peut entraîner des validations partielles. Le mode de validation en deux phases est expérimental et non recommandé.La réplication inverse VReplication assure la synchronisation des données entre les espaces de clés non fragmentés et fragmentés après la transition. Elle peut casser en raison de l'application de clés uniques, nécessitant des réparations telles que la suppression de lignes ou des mises à jour manuelles de la colonne Pos.Les requêtes de dispersion, où la clé de fractionnement est omise dans la clause WHERE, peuvent entraîner un volume de requête excessif et des pannes potentielles. Vitess propose désormais un drapeau --no_scatter pour les empêcher.Les requêtes incompatibles peuvent échouer après la transition. Des tests exhaustifs dans un environnement de développement sont essentiels pour identifier et résoudre ces requêtes.D'autres erreurs potentielles incluent celles liées aux constructions SQL non prises en charge, qui peuvent être résolues en mettant à jour vers des versions plus récentes de Vitess.Malgré ces risques, les transitions sont généralement réversibles, à condition que la réplication inverse VReplication fonctionne correctement. Cependant, l'impact de tout dysfonctionnement doit être soigneusement considéré.
Les bases de données de paiement d'Etsy ont rencontré des problèmes de scalabilité en 2020, nécessitant une migration vers un environnement fragmenté géré par Vitess.Le projet a impliqué le déplacement de 40 milliards de lignes de quatre bases de données dans un seul environnement fragmenté, en utilisant des vindexes Vitess pour la fragmentation.La première phase a consisté à migrer l'infrastructure du grand livre des vendeurs, qui avait un modèle de données idéal pour la fragmentation.La deuxième phase s'est concentrée sur la réduction de la charge sur la base de données de paiements primaire, qui avait un modèle de données complexe nécessitant une approche plus adaptée.Deux options ont été considérées pour la deuxième phase : remodeler le modèle de données de base ou trouver des shardifiers dans le modèle existant.La deuxième option a été choisie en raison des contraintes de temps et de l'importance de maintenir la fiabilité.L'équipe a utilisé les clés primaires et étrangères existantes comme shardifiers, réduisant le travail par rapport à la première phase.Les fonctionnalités de re-sharding de Vitess offrent une flexibilité pour les ajustements futurs du design des shards.Les index secondaires dans Vitess atténuent les limitations du modèle de données non idéal, permettant la ciblage des shards sans utiliser le shardifier dans les requêtes.Cette migration a amélioré la scalabilité de 60% et a laissé place à une croissance future.
Initialement, les mises à niveau de la plateforme pour les brokers Kafka étaient fastidieuses et chronophages, nécessitant des heures de surveillance manuelle et d'attente. Pour améliorer cela, une architecture multi-zone a été mise en œuvre, permettant à plusieurs brokers d'être mis à jour simultanément sans affecter la disponibilité. Cependant, la stratégie de mise à jour en roulage native de Kubernetes n'était pas appropriée en raison de la distribution zonale des réplicas.Une logique personnalisée a été développée pour contrôler les mises à jour, permettant à plusieurs brokers dans une zone d'être redémarrés en parallèle. Cela a été mis en œuvre en tant que travail par lots Kubernetes pour garantir la fiabilité et prévenir les problèmes de déploiement accidentels.Les tests en production ont montré que, avec un parallélisme de trois, les mises à niveau pouvaient être terminées en environ deux heures. Bien que le redémarrage de tous les brokers dans une zone simultanément était techniquement possible, cela a été évité pour éviter d'accroître la charge sur les brokers restants.L'architecture multi-zone et la logique de mise à jour personnalisée ont considérablement réduit le temps de mise à niveau, passant de sept heures à environ deux heures. Cette amélioration n'a pas seulement économisé du temps, mais a également réduit la peine et le stress associés aux mises à niveau.Le nouveau processus a garanti des mises à niveau rapides et efficaces, avec un impact minimal sur le cluster Kafka. Le succès du projet a été mesuré non seulement par la réduction du temps, mais également par la facilité et la tranquillité d'esprit qu'il a apportée pendant les mises à niveau.
En 2018, Etsy a migré ses brokers Kafka vers le Google Cloud Platform's Kubernetes Engine. Initialement opérant dans une seule zone, l'équipe a ensuite repensé l'architecture pour la résilience zonale, en répartissant les brokers entre plusieurs zones avec une répartition équilibrée des réplicas de partition.Pour atteindre une migration sans temps d'arrêt, les brokers ont été déplacés en premier lieu en créant des snapshots de disques et en les recréant dans les zones appropriées. La relocalisation des partitions a été gérée manuellement à l'aide de scripts et d'outils pour minimiser le mouvement de données et l'impact.Les tests en production après la migration ont démontré l'efficacité du design multizone, avec un minimum de perturbation pendant une panne de zone. Alors que les coûts de réseau interzone ont augmenté comme prévu, les avantages de la résilience zonale automatisée surpassent les coûts.L'équipe optimise les coûts en exploitant la fonctionnalité de fetching des followers de Kafka et en explorant d'autres approches pour réduire le trafic interzone. Malgré certaines augmentations de coûts, les avantages de la résilience zonale sont significatifs, justifiant l'investissement.La migration a impliqué des étapes complexes, y compris le déplacement de disques et de pods, la relocalisation des partitions et les ajustements de configuration. La planification et l'exécution soignées de l'équipe ont garanti un temps d'arrêt nul et l'intégrité des données tout au long du processus.L'expérience d'Etsy met en évidence l'importance de concevoir pour la résilience dans les services critiques. En adoptant la redondance zonale, l'équipe a atténué les risques liés aux pannes de zone unique et a amélioré la stabilité et la disponibilité de leur cluster Kafka.L'architecture multizone permet à Etsy de gérer le trafic de production accru et les fonctionnalités essentielles pour l'utilisateur, telles que l'indexation de recherche, avec confiance.Les efforts continuels de l'entreprise pour optimiser les coûts démontrent un engagement en faveur de l'équilibre entre la résilience et les considérations financières.L'étude de cas fournit des informations précieuses sur les défis et les stratégies impliqués dans la migration et l'exploitation d'un cluster Kafka hautement disponible dans un environnement cloud multizone.