Zephyrnet-logo

Meta introduceert 'Tulip', een binair serialisatieprotocol dat helpt bij gegevensschematisering door protocolbetrouwbaarheid aan te pakken voor AI- en machine learning-workloads

Datum:

Meta introduceert 'Tulip', een binair serialisatieprotocol dat schema-evolutie ondersteunt. Dit lost tegelijkertijd de betrouwbaarheid van het protocol en andere problemen op en helpt ons bij het schematiseren van gegevens. Tulip heeft meerdere oude formaten. Daarom wordt het gebruikt in het dataplatform van Meta en heeft het een aanzienlijke toename in prestaties en efficiëntie gezien. Het dataplatform van Meta bestaat uit tal van heterogene diensten, zoals dataopslag in het magazijn en verschillende real-time systemen die grote hoeveelheden data uitwisselen en onderling communiceren via service-API's. Aangezien het aantal AI en machine learning ML-gerelateerde workloads in het systeem van Meta toeneemt die gegevens gebruiken voor het trainen van deze ML-modellen, is het noodzakelijk om voortdurend te werken aan het efficiënt maken van onze datalogging-systemen. De schematisering van gegevens speelt een grote rol bij het creëren van een platform voor gegevens op de schaal van Meta. Deze systemen zijn ontworpen op basis van de wetenschap dat elke beslissing en afweging van invloed is op de betrouwbaarheid, de efficiëntie van de gegevensvoorverwerking, de prestaties en de ervaring van de ontwikkelaar. Het wijzigen van serialisatieformaten voor de data-infrastructuur is een grote gok, maar biedt op de lange termijn voordelen waardoor het platform in de loop van de tijd evolueert.

De Data Analytics Logging Library is aanwezig in de weblaag en de interne services, en deze is ook verantwoordelijk voor het loggen van analytische en operationele gegevens met behulp van Scribe, een duurzaam berichtenwachtrijsysteem dat door Meta wordt gebruikt. Gegevens worden gelezen en opgenomen vanuit Scribe, dat ook een opnameservice voor gegevensplatforms en realtime verwerkingssystemen omvat. De leesbibliotheek voor gegevensanalyse helpt bij het deserialiseren van gegevens en het rehydrateren ervan tot een gestructureerde payload. Logboekschema's worden elke maand gemaakt, bijgewerkt en verwijderd door duizenden ingenieurs bij Meta, en deze gegevensstromen in petabytes stromen elke dag over Scribe. 

Schematisering is nodig om ervoor te zorgen dat elk bericht dat in het verleden, het heden of de toekomst is gelogd, afhankelijk van de versie van de (de)serializer, op elk moment betrouwbaar en zonder gegevensverlies kan worden ge(de)serialiseerd. Veilige schema-evolutie via achterwaartse en voorwaartse compatibiliteit is de naam die aan dit kenmerk wordt gegeven. De belangrijkste focus van het artikel ligt op het on-wire serialisatieformaat dat wordt gebruikt om de gegevens te coderen die uiteindelijk door het dataplatform worden verwerkt. Vergeleken met de twee eerder gebruikte serialisatie-indelingen, Hive Text Delimited en JSON-serialisatie, is het nieuwe coderingsformaat efficiënter en vereist het 40 tot 85 procent minder bytes en 50 tot 90 procent minder CPU-cycli om gegevens te (de)serialiseren.

De toepassingen van de logboekregistratiebibliotheek zijn geschreven in verschillende talen zoals C++, Java, Haskell, Hack en Python om de payload te serialiseren volgens het logboekschema, en deze logboekschema's zijn gedefinieerd op basis van zakelijke behoeften en zijn geschreven naar Scribe voor eenvoudigere levering . De logboekbibliotheek is beschikbaar in twee smaken, namelijk Code Generated en Generic. In Code Generated flavour voor type-veilig gebruik worden statisch getypeerde setters gegenereerd voor elk veld. Voor optimale efficiëntie wordt ook post-processing en serialisatiecode gegenereerd. Terwijl in Generieke smaak om (de)serialisatie van dynamisch getypeerde payloads uit te voeren, een C++-bibliotheek met de naam Tulib wordt aangeboden. Een bericht dat dynamisch typen gebruikt, wordt geserialiseerd volgens een logboekschema. Omdat het (de)serialisatie van berichten mogelijk maakt zonder dat het binaire bestand opnieuw moet worden opgebouwd en opnieuw moet worden geïmplementeerd, is deze methode flexibeler dan de door code gegenereerde modus.

De logboekregistratiebibliotheek verzendt gegevens naar verschillende back-endsystemen, die elk traditioneel hun eigen serialisatieregels hebben gespecificeerd. Er doen zich verschillende problemen voor bij het gebruik van deze formaten voor het serialiseren van payloads.

  • Standaardisatie: Er was in het verleden geen standaardisatie van serialisatieformaten; elk stroomafwaarts systeem had zijn eigen formaat, wat leidde tot hogere onderhouds- en ontwikkelingskosten. 
  • Betrouwbaarheid: Nieuwe kolommen kunnen alleen aan het einde worden toegevoegd om de betrouwbaarheid van deserialisatie te behouden. Elke poging om een ​​veld in het midden van een bestaande kolom in te voegen of een kolom te verwijderen, zou ervoor zorgen dat alle volgende kolommen verschuiven, waardoor het onmogelijk wordt om de rij te deserialiseren en het bijgewerkte schema wordt in realtime naar de lezers gedistribueerd. 
  • Efficiëntie: In vergelijking met binaire (de)serialisatie zijn zowel de Hive Text Delimited- als de JSON-protocollen op tekst gebaseerd en inefficiënt.
  • Juistheid: Veldbegrenzers en regelscheidingstekens moeten worden voorzien van een escape-teken en niet-geëscaped voor op tekst gebaseerde protocollen zoals Hive Text. Elke schrijver en lezer doet dit, waardoor de druk op bibliotheekauteurs toeneemt. Omgaan met verouderde of gebrekkige implementaties die alleen zoeken naar de aanwezigheid van deze karakters en de hele boodschap verwerpen in plaats van te ontsnappen aan de lastige karakters, is moeilijk.
  • Voorwaartse en achterwaartse compatibiliteit: Het is gewenst om payloads te consumeren die zijn geserialiseerd door een serialisatieschema, zowel voor als na de versie die de consument ziet. Het Hive Text Protocol biedt deze zekerheid niet.
  • metadata: Het invoegen van metadata in de payload wordt niet triviaal ondersteund door Hive Text Serialization. Voor downstream-systemen om functies te implementeren die profiteren van de aanwezigheid van metadata, is verspreiding van die data essentieel.

Tulip lost ons fundamentele probleem, het betrouwbaarheidsprobleem, op door een veilig schema-evolutieformaat te bieden dat zowel achterwaarts als voorwaarts compatibel is tussen services met verschillende implementatiecycli. Tulip loste al deze problemen in één keer op, waardoor het een betere investering was dan andere beschikbare opties. 

Het TCompactProtocol van Thrift wordt gebruikt voor het serialiseren van een payload in het Tulip-serialisatieprotocol, een binair serialisatieprotocol. De velden zijn genummerd met ID's op dezelfde manier als een ingenieur zou verwachten bij het wijzigen van ID's in een Thrift-structuur. Ingenieurs definiëren een lijst met veldnamen en -soorten wanneer ze een logboekregistratieschema maken, en de veld-ID's worden beheerd door de beheermodule van het dataplatform in plaats van door de opgegeven technici. De repository voor serialisatieschema's bevat een vertaling van het logboekregistratieschema naar een serialisatieschema. Lijsten met de veldnaam, het veldtype, de veld-ID voor een gerelateerd logboekregistratieschema en de veldgeschiedenis worden opgeslagen in een serialisatieconfiguratie. Wanneer een technicus een logboekregistratieschema wil bijwerken, wordt er een transactiebewerking uitgevoerd op het serialisatieschema.

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

Vergeet alsjeblieft niet mee te doen Onze ML-subreddit

Avanthy Yeluri is een Dual Degree-student aan IIT Kharagpur. Ze heeft een sterke interesse in datawetenschap vanwege de talloze toepassingen in verschillende industrieën, evenals de allernieuwste technologische ontwikkelingen en hoe deze in het dagelijks leven worden gebruikt.

<!–

->

<!–
->

spot_img

Laatste intelligentie

spot_img