Meta presenta “Tulip”, un protocol de serialització binari que ajuda a l’esquematització de dades abordant la fiabilitat del protocol per a càrregues de treball d’IA i aprenentatge automàtic

Meta presenta ‘Tulip’, un protocol de serialització binari que admet l’evolució d’esquemes. Això aborda simultàniament la fiabilitat del protocol i altres problemes i ens ajuda amb l’esquematització de dades. Tulip té múltiples formats heretats. Per tant, s’utilitza a la plataforma de dades de Meta i ha vist un augment considerable del rendiment i l’eficiència. La plataforma de dades de Meta està formada per nombrosos serveis heterogenis, com ara l’emmagatzematge de dades de magatzem i diversos sistemes en temps real que intercanvien grans quantitats de dades i es comuniquen entre ells mitjançant API de servei. A mesura que augmenta el nombre de càrregues de treball relacionades amb la intel·ligència artificial i l’aprenentatge automàtic al sistema de Meta que utilitzen dades per entrenar aquests models d’aprenentatge automàtic, cal treballar contínuament per fer que els nostres sistemes de registre de dades siguin eficients. L’esquematització de les dades té un paper important en la creació d’una plataforma per a dades a escala de Meta. Aquests sistemes estan dissenyats a partir del coneixement que cada decisió i compensació afecta la fiabilitat, l’eficiència del preprocessament de dades, el rendiment i l’experiència del desenvolupador de l’enginyer. Canviar els formats de serialització per a la infraestructura de dades és una gran aposta, però ofereix avantatges a llarg termini que fan que la plataforma evolucioni amb el temps.

La biblioteca de registre d’anàlisi de dades està present al nivell web i als serveis interns, i també és responsable de registrar les dades analítiques i operatives mitjançant Scribe, un sistema de cua de missatges durador utilitzat per Meta. Les dades es llegeixen i s’ingereixen des de Scribe, que també inclou un servei d’ingestió de la plataforma de dades i sistemes de processament en temps real. La biblioteca de lectura d’anàlisi de dades ajuda a deserialitzar les dades i a rehidratar-les en una càrrega útil estructurada. Els esquemes de registre són creats, actualitzats i suprimits cada mes per milers d’enginyers de Meta, i aquests fluxos de dades d’esquemes de registre en petabytes van cada dia a Scribe.

L’esquematització és necessària per garantir que qualsevol missatge registrat en el passat, present o futur, depenent de la versió del (des)serialitzador, es pugui (des)serialitzar de manera fiable en qualsevol moment amb la màxima fidelitat i sense pèrdua de dades. Evolució segura de l’esquema mitjançant la compatibilitat cap endavant i cap enrere és el nom que es dóna a aquesta característica. El focus principal de l’article rau en el format de serialització per cable utilitzat per codificar les dades que finalment són processades per la plataforma de dades. En comparació amb els dos formats de serialització utilitzats anteriorment, Hive Text Delimited i la serialització JSON, el nou format de codificació és més eficient, ja que requereix entre un 40 i un 85 per cent menys de bytes i entre un 50 i un 90 per cent menys de cicles de CPU per (des)serialitzar les dades.

Les aplicacions de la biblioteca de registre estan escrites en diversos idiomes com C++, Java, Haskell, Hack i Python per serialitzar la càrrega útil segons l’esquema de registre, i aquests esquemes de registre es defineixen segons les necessitats empresarials i s’escriuen a Scribe per lliurament més fàcil. La biblioteca de registre està disponible en dos tipus, el codi generat i el genèric. Al codi generat per a un ús segur de tipus, es generen configuradors de tipus estàticament per a cada camp. Per a una eficiència òptima, també es genera codi de postprocessament i serialització. Mentre que en el gust genèric per dur a terme la (des)serialització de càrregues útils escrites dinàmicament, s’ofereix una biblioteca C++ amb el nom de Tulib. Un missatge que utilitza l’escriptura dinàmica es serialitza d’acord amb un esquema de registre. Com que permet la (des)serialització de missatges sense necessitat de reconstruir i tornar a desplegar el binari de l’aplicació, aquest mètode és més flexible que el mode generat amb codi.

La biblioteca de registre envia dades a diversos sistemes de fons, cadascun dels quals ha especificat tradicionalment les seves pròpies regles de serialització i s’enfronten diversos problemes en utilitzar aquests formats per a la serialització de càrregues útils, i són

  • Normalització: No hi havia cap estandardització dels formats de serialització en el passat; cada sistema aigües avall tenia el seu propi format que va provocar un augment dels costos de manteniment i desenvolupament.
  • Fiabilitat: Només es poden afegir columnes noves al final per mantenir la fiabilitat de la deserialització. Qualsevol esforç per inserir un camp a la meitat d’una columna existent o eliminar una columna faria que totes les columnes següents es desplacessin, fent impossible deserialitzar la fila i l’esquema actualitzat es distribueix als lectors en temps real.
  • Eficiència: En comparació amb la (des)serialització binària, tant els protocols Hive Text Delimited com JSON estan basats en text i són ineficients.
  • Correcció: Els delimitadors de camp i de línia s’han de fer escapar i sense escapar per a protocols basats en text com Hive Text. Tots els escriptors i lectors ho fan, la qual cosa augmenta la pressió sobre els autors de les biblioteques. És difícil tractar amb implementacions obsoletes o defectuoses que només busquen la presència d’aquests personatges i rebutgen tot el missatge en lloc d’escapar-se dels personatges problemàtics.
  • Compatibilitat cap endavant i cap enrere: Es desitja consumir càrregues útils que es van serialitzar mitjançant un esquema de serialització abans i després de la versió que veu el consumidor. El protocol de text Hive no ofereix aquesta garantia.
  • Metadades: Hive Text Serialization no admet trivialment la inserció de metadades a la càrrega útil. Perquè els sistemes aigües avall implementin funcions que es beneficien de la presència de metadades, la propagació d’aquestes dades és essencial.

Tulip soluciona el nostre problema fonamental, el problema de la fiabilitat, proporcionant un format d’evolució d’esquemes segur que és compatible cap endavant i cap endavant en tots els serveis amb cicles de desplegament diferents. Tulip va resoldre tots aquests problemes d’una vegada, convertint-lo en una millor inversió que altres opcions disponibles.

El TCompactProtocol de Thrift s’utilitza per serialitzar una càrrega útil al protocol de serialització Tulip, que és un protocol de serialització binari. Els camps estan numerats amb identificadors de la mateixa manera que s’esperaria que ho faci un enginyer quan modifiqui els identificadors en una estructura Thrift. Els enginyers defineixen una llista de noms i tipus de camps quan creen un esquema de registre, i els ID de camp els gestiona el mòdul de gestió de la plataforma de dades en lloc dels enginyers especificats. El dipòsit d’esquemes de serialització conté una traducció de l’esquema de registre a un esquema de serialització. Les llistes del nom del camp, el tipus de camp, l’ID de camp per a un esquema de registre relacionat i l’historial de camps s’emmagatzemen en una configuració de serialització. Quan un enginyer vol actualitzar un esquema de registre, es porta a terme una operació transaccional a l’esquema de serialització.

Referència: https://engineering.fb.com/2022/11/09/developer-tools/tulip-schematizing-metas-data-platform/

Please Don't Forget To Join Our ML Subreddit


Avanthy Yeluri és un estudiant de doble grau a IIT Kharagpur. Té un gran interès en la ciència de dades a causa de les seves nombroses aplicacions en una varietat d’indústries, així com els seus avenços tecnològics d’avantguarda i com s’utilitzen a la vida diària.


Leave a Comment

Your email address will not be published. Required fields are marked *