Comment Snapchat optimise ses données grâce aux GPU NVIDIA
Snapchat ne se contente pas de proposer des filtres amusants et des stickers IA. En coulisses, sa maison mère, Snap, effectue un traitement de données colossal pour déterminer quelles nouvelles fonctionnalités seront retenues. Afin de gérer des milliards de points de données et des délais très courts, l'entreprise a migré une grande partie de son infrastructure de données des processeurs vers des GPU NVIDIA hébergés sur Google Cloud.
Cette initiative ne concerne pas les graphismes de l'application Snapchat elle-même. Il s'agit d'utiliser l'accélération GPU pour traiter des ensembles de données massifs plus rapidement et à moindre coût grâce à Apache Spark et aux bibliothèques de traitement de données NVIDIA. Pour quiconque s'intéresse aux infrastructures cloud et aux performances des GPU, c'est un exemple éloquent de la façon dont les services modernes évoluent au-delà des configurations traditionnelles basées sur le CPU.
Chaque fonctionnalité déployée auprès des plus de 940 millions d'utilisateurs actifs mensuels de Snapchat fait l'objet de tests A/B rigoureux. Cela implique des expériences contrôlées auprès de sous-groupes d'utilisateurs, au cours desquelles l'équipe suit l'engagement et la monétisation à travers des milliers d'indicateurs. Réaliser cela à grande échelle exige une puissance de calcul considérable et une utilisation optimale du matériel.
Des pipelines de données limités par le CPU aux pipelines de données accélérés par le GPU
Snap utilise Apache Spark, un framework de traitement de données distribué largement répandu, pour exécuter ses expériences. La charge de travail est intense : chaque matin, pendant trois heures, Snap traite plus de 10 pétaoctets de données répartis sur des milliers d'expériences. Auparavant, l'ensemble du traitement reposait sur une infrastructure basée sur les processeurs, ce qui limitait considérablement les possibilités d'extension sans faire exploser les coûts.
Pour résoudre ce problème, Snap a adopté Apache Spark accéléré par NVIDIA cuDF. cuDF est une bibliothèque DataFrame GPU open source conçue pour le traitement de données haute performance et qui s'intègre à Spark avec une grande facilité. L'avantage principal pour l'équipe d'ingénierie est la possibilité d'exécuter leurs applications Spark existantes sur les GPU NVIDIA sans aucune modification de code. Ils conservent ainsi leurs pipelines et leur logique tout en bénéficiant de l'accélération GPU.
En exécutant Spark sur des GPU NVIDIA, Snap constate des temps d'exécution environ quatre fois plus rapides pour ces tâches de traitement de données, à nombre de machines égal. Ces temps d'exécution plus rapides permettent de réaliser davantage d'expériences dans le même laps de temps ou d'optimiser le matériel tout en conservant des performances stables.
L'architecture de Snap combine plusieurs couches de technologies NVIDIA et Google Cloud, notamment
- Les bibliothèques NVIDIA CUDA X fournissent des composants optimisés pour GPU pour les charges de travail de données et d'IA.
- La bibliothèque NVIDIA cuDF et l'accélérateur Spark permettent d'accélérer les opérations sur les DataFrames sur les GPU.
- Google Kubernetes Engine permet de gérer les conteneurs et d'orchestrer les clusters Spark alimentés par GPU.
- Machines virtuelles Google Cloud G2 alimentées par des GPU NVIDIA L4 pour exécuter les charges de travail
Cette approche intégrée permet à Snap de faire évoluer horizontalement son traitement de données dans le cloud tout en tirant parti du matériel GPU moderne.
Réduction des coûts et évolutivité pour les fonctionnalités futures
Les performances ne sont pas la seule raison du passage de Snap aux GPU. Le coût et l'évolutivité ont également joué un rôle déterminant. L'entreprise avait une feuille de route ambitieuse pour intensifier ses expérimentations, ce qui aurait considérablement augmenté les coûts de calcul sur une configuration basée uniquement sur les CPU.
Après la migration vers Spark accéléré par cuDF sur les GPU NVIDIA, Snap a constaté des gains significatifs sur une période de deux mois. L'équipe a rapporté des économies d'environ 76 % sur les coûts quotidiens de Google Kubernetes Engine par rapport aux flux de travail précédents utilisant uniquement le CPU. Il s'agit d'une réduction considérable, notamment lorsqu'on exécute des milliers d'expériences et qu'on traite des pétaoctets de données chaque jour.
Initialement, Snap estimait avoir besoin d'environ 5 500 GPU fonctionnant simultanément pour prendre en charge l'ensemble de ses charges de travail à grande échelle. Grâce à l'optimisation des pipelines avec les experts de NVIDIA et à l'utilisation de la suite de microservices cuDF pour les tests de qualification, la configuration et le réglage, ce nombre a pu être ramené à environ 2 100 GPU simultanés. Autrement dit, un débit équivalent, voire supérieur, avec moins de la moitié du nombre de GPU initialement prévu.
Les microservices cuDF contribuent également à automatiser une grande partie du processus de migration. Ils analysent les tâches Spark, déterminent celles qui sont adaptées à l'accélération GPU et les configurent en conséquence. Cette automatisation est essentielle lorsqu'on gère de nombreux pipelines et qu'on souhaite éviter un réglage manuel pour chaque tâche.
Chez Snap, l'expérimentation est au cœur de l'entreprise. Le passage d'une infrastructure basée sur le CPU à des pipelines accélérés par GPU permet à l'équipe de mener davantage d'expériences, de suivre plus de métriques et de servir plus d'utilisateurs sans faire exploser le budget. Cela signifie qu'elle peut tester aussi bien les fonctionnalités visibles, comme les stickers générés par IA et les nouveaux outils cartographiques, que les modifications en coulisses, telles que les optimisations de performances et les mises à jour de compatibilité pour les nouveaux systèmes d'exploitation.
À ce jour, Snap a migré ses deux plus importants pipelines de données vers la nouvelle architecture basée sur les GPU, et les résultats sont si concluants que l'entreprise envisage d'étendre ce modèle à un plus large éventail de charges de travail en production. Pour les développeurs et les passionnés de technologie, cela illustre une tendance majeure du secteur : les GPU ne servent plus seulement au rendu d'images dans les jeux ou à l'entraînement des réseaux neuronaux. Ils deviennent le choix par défaut pour le traitement de données à grande échelle, où le calcul parallèle permet de réduire considérablement les délais et les coûts.
Si vous travaillez avec du Big Data ou gérez des systèmes de tests A/B de grande envergure, l'expérience de Snap est un gage indéniable. Combiner Apache Spark avec l'accélération GPU via des outils comme NVIDIA cuDF et l'exécuter sur une infrastructure cloud gérée ouvre un champ d'expérimentation et d'innovation bien plus vaste, sans nécessiter une réécriture complète de votre code existant.
Article et image originaux : https://blogs.nvidia.com/blog/snap-accelerated-data-processing/