Meta présente « Tulip », un protocole de sérialisation binaire qui aide à la schématisation des données en adressant la fiabilité du protocole pour les charges de travail d'IA et d'apprentissage automatique PlatoBlockchain Data Intelligence. Recherche verticale. Ai.

Meta présente « Tulip », un protocole de sérialisation binaire qui aide à la schématisation des données en adressant la fiabilité du protocole pour les charges de travail d'IA et d'apprentissage automatique

Meta présente "Tulip", un protocole de sérialisation binaire prenant en charge l'évolution du schéma. Cela résout simultanément la fiabilité du protocole et d'autres problèmes et nous aide à schématiser les données. Tulip a plusieurs formats hérités. Par conséquent, il est utilisé dans la plate-forme de données de Meta et a connu une augmentation considérable des performances et de l'efficacité. La plate-forme de données de Meta est composée de nombreux services hétérogènes, tels que le stockage de données d'entrepôt et divers systèmes en temps réel échangeant de grandes quantités de données et communiquant entre eux via des API de service. Alors que le nombre de charges de travail liées à l'IA et à l'apprentissage automatique dans le système de Meta augmente et utilise des données pour former ces modèles ML, il est nécessaire de travailler en permanence pour rendre nos systèmes d'enregistrement de données efficaces. La schématisation des données joue un rôle énorme dans la création d'une plate-forme de données à l'échelle de Meta. Ces systèmes sont conçus sur la base de la connaissance que chaque décision et compromis a un impact sur la fiabilité, l'efficacité du prétraitement des données, les performances et l'expérience de développement de l'ingénieur. Changer les formats de sérialisation pour l'infrastructure de données est un gros pari mais offre des avantages à long terme qui font évoluer la plate-forme au fil du temps.

La bibliothèque de journalisation des analyses de données est présente dans le niveau Web et les services internes, et elle est également responsable de la journalisation des données analytiques et opérationnelles à l'aide de Scribe, un système de file d'attente de messages durable utilisé par Meta. Les données sont lues et ingérées à partir de Scribe, qui comprend également un service d'ingestion de plate-forme de données et des systèmes de traitement en temps réel. La bibliothèque de lecture d'analyse de données aide à désérialiser les données et à les réhydrater en une charge utile structurée. Les schémas de journalisation sont créés, mis à jour et supprimés chaque mois par des milliers d'ingénieurs chez Meta, et ces flux de données de schéma de journalisation en pétaoctets varient chaque jour sur Scribe. 

La schématisation est nécessaire pour garantir que tout message enregistré dans le passé, le présent ou le futur, selon la version du (dé)sérialiseur, peut être (dé)sérialisé de manière fiable à tout moment avec la plus grande fidélité et sans perte de données. L'évolution sûre du schéma via la compatibilité ascendante et descendante est le nom donné à cette caractéristique. L'article se concentre principalement sur le format de sérialisation on-wire utilisé pour coder les données qui sont finalement traitées par la plate-forme de données. Comparé aux deux formats de sérialisation précédemment utilisés, la sérialisation Hive Text Delimited et JSON, le nouveau format d'encodage est plus efficace, nécessitant 40 à 85 % d'octets en moins et 50 à 90 % de cycles CPU en moins pour (dé)sérialiser les données.

Les applications de la bibliothèque de journalisation sont écrites dans divers langages tels que C++, Java, Haskell, Hack et Python afin de sérialiser la charge utile en fonction du schéma de journalisation, et ces schémas de journalisation sont définis en fonction des besoins de l'entreprise et sont écrits sur Scribe pour une livraison plus facile. . La bibliothèque de journalisation est disponible en deux versions, à savoir Code Generated et Generic. Dans la version Code Generated pour une utilisation sécurisée, des setters typés statiquement sont générés pour chaque champ. Pour une efficacité optimale, un code de post-traitement et de sérialisation est également généré. Alors que dans la version générique pour effectuer la (dé)sérialisation des charges utiles typées dynamiquement, une bibliothèque C++ avec le nom de Tulib est proposée. Un message qui utilise un typage dynamique est sérialisé conformément à un schéma de journalisation. Parce qu'elle permet la (dé)sérialisation des messages sans nécessiter de reconstruction et de redéploiement du binaire de l'application, cette méthode est plus flexible que le mode généré par code.

La bibliothèque de journalisation envoie des données à plusieurs systèmes principaux, chacun ayant traditionnellement spécifié ses propres règles de sérialisation et divers problèmes sont rencontrés lors de l'utilisation de ces formats pour la sérialisation des charges utiles, et ils sont

  • Standardisation: Il n'y avait pas de standardisation des formats de sérialisation dans le passé ; chaque système en aval avait son propre format entraînant une augmentation des coûts de maintenance et de développement. 
  • Fiabilité: De nouvelles colonnes ne peuvent être ajoutées qu'à la fin pour maintenir la fiabilité de la désérialisation. Tout effort pour insérer un champ au milieu d'une colonne existante ou supprimer une colonne entraînerait le déplacement de toutes les colonnes suivantes, rendant impossible la désérialisation de la ligne, et le schéma mis à jour est distribué aux lecteurs en temps réel. 
  • Rendement : Par rapport à la (dé)sérialisation binaire, les protocoles Hive Text Delimited et JSON sont basés sur du texte et inefficaces.
  • Exactitude : Les délimiteurs de champ et les délimiteurs de ligne doivent être échappés et non échappés pour les protocoles textuels comme Hive Text. Chaque écrivain et lecteur fait cela, ce qui augmente la pression sur les auteurs de bibliothèque. Il est difficile de gérer des implémentations obsolètes ou défectueuses qui recherchent simplement la présence de ces caractères et rejettent l'intégralité du message plutôt que d'échapper aux caractères gênants.
  • Compatibilité ascendante et descendante : La consommation de charges utiles qui ont été sérialisées par un schéma de sérialisation à la fois avant et après la version que le consommateur voit est souhaitée. Le Hive Text Protocol ne fournit pas cette assurance.
  • Métadonnées: L'insertion de métadonnées dans la charge utile n'est pas trivialement prise en charge par Hive Text Serialization. Pour que les systèmes en aval implémentent des fonctionnalités qui profitent de la présence de métadonnées, la propagation de ces données est essentielle.

Tulip résout notre problème fondamental, le problème de fiabilité, en fournissant un format d'évolution de schéma sécurisé qui est à la fois compatible en amont et en aval entre les services avec des cycles de déploiement distincts. Tulip a résolu tous ces problèmes d'un seul coup, ce qui en fait un meilleur investissement que les autres options disponibles. 

Le TCompactProtocol de Thrift est utilisé pour sérialiser une charge utile dans le protocole de sérialisation Tulip, qui est un protocole de sérialisation binaire. Les champs sont numérotés avec des identifiants de la même manière qu'un ingénieur devrait le faire lors de la modification d'identifiants dans une structure Thrift. Les ingénieurs définissent une liste de noms et de types de champs lorsqu'ils créent un schéma de journalisation, et les ID de champ sont gérés par le module de gestion de la plate-forme de données plutôt que par les ingénieurs spécifiés. Le référentiel de schémas de sérialisation contient une traduction du schéma de journalisation en un schéma de sérialisation. Les listes du nom de champ, du type de champ, de l'ID de champ pour un schéma de journalisation associé et de l'historique de champ sont stockées dans une configuration de sérialisation. Lorsqu'un ingénieur souhaite mettre à jour un schéma de journalisation, une opération transactionnelle est effectuée sur le schéma de sérialisation.

Référence : https://engineering.fb.com/2022/11/09/developer-tools/tulip-schematizing-metas-data-platform/

S'il vous plaît, n'oubliez pas de vous inscrire Notre sous-reddit ML

Avanthy Yeluri est étudiante en double diplôme à l'IIT Kharagpur. Elle s'intéresse vivement à la science des données en raison de ses nombreuses applications dans une variété d'industries, ainsi que de ses avancées technologiques de pointe et de la manière dont elles sont utilisées dans la vie quotidienne.

<!–

->

Horodatage:

Plus de Consultants en blockchain