Meta apresenta 'Tulip', um protocolo de serialização binária que auxilia na esquematização de dados, abordando a confiabilidade do protocolo para cargas de trabalho de IA e aprendizado de máquina PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Meta apresenta 'Tulip', um protocolo de serialização binária que auxilia na esquematização de dados abordando a confiabilidade do protocolo para cargas de trabalho de IA e aprendizado de máquina

A Meta apresenta o 'Tulip', um protocolo de serialização binária que suporta a evolução do esquema. Isso aborda simultaneamente a confiabilidade do protocolo e outras questões e nos auxilia na esquematização de dados. Tulip tem vários formatos legados. Por isso, é usado na plataforma de dados da Meta e teve um aumento considerável de desempenho e eficiência. A plataforma de dados da Meta é composta por vários serviços heterogêneos, como armazenamento de dados de armazém e vários sistemas em tempo real que trocam grandes quantidades de dados e se comunicam entre si por meio de APIs de serviço. À medida que aumenta o número de cargas de trabalho relacionadas a ML de IA e aprendizado de máquina no sistema da Meta que usam dados para treinar esses modelos de ML, é necessário trabalhar continuamente para tornar nossos sistemas de registro de dados eficientes. A esquematização dos dados desempenha um papel enorme na criação de uma plataforma para dados na escala do Meta. Esses sistemas são projetados com base no conhecimento de que cada decisão e trade-off afeta a confiabilidade, a eficiência do pré-processamento de dados, o desempenho e a experiência do desenvolvedor do engenheiro. Mudar os formatos de serialização para a infraestrutura de dados é uma grande aposta, mas oferece benefícios a longo prazo que fazem a plataforma evoluir ao longo do tempo.

A Data Analytics Logging Library está presente na camada da web e nos serviços internos, e também é responsável por registrar dados analíticos e operacionais usando o Scribe - um sistema de enfileiramento de mensagens durável usado pela Meta. Os dados são lidos e ingeridos do Scribe, que também inclui um serviço de ingestão de plataforma de dados e sistemas de processamento em tempo real. A biblioteca de leitura de análise de dados ajuda a desserializar dados e reidratá-los em uma carga estruturada. Os esquemas de registro são criados, atualizados e excluídos todos os meses por milhares de engenheiros da Meta, e esses dados de esquema de registro fluem em petabytes todos os dias no Scribe. 

A esquematização é necessária para garantir que qualquer mensagem registrada no passado, presente ou futuro, dependendo da versão do (des) serializador, possa ser (des) serializada de forma confiável a qualquer momento com a máxima fidelidade e sem perda de dados. Evolução segura do esquema via compatibilidade com versões anteriores e posteriores é o nome dado a essa característica. O foco principal do artigo está no formato de serialização on-wire usado para codificar os dados que são finalmente processados ​​pela plataforma de dados. Comparado aos dois formatos de serialização utilizados anteriormente, Hive Text Delimited e serialização JSON, o novo formato de codificação é mais eficiente, exigindo 40 a 85% menos bytes e 50 a 90% menos ciclos de CPU para (des)serializar dados.

Os aplicativos da biblioteca de registro são escritos em várias linguagens como C++, Java, Haskell, Hack e Python para serializar a carga útil de acordo com o esquema de registro, e esses esquemas de registro são definidos de acordo com as necessidades de negócios e são gravados no Scribe para facilitar a entrega . A biblioteca de criação de log está disponível em dois tipos: Code Generated e Generic. No tipo Code Generated para uso seguro, os setters tipados estaticamente são gerados para cada campo. Para uma eficiência ideal, o código de pós-processamento e serialização também é gerado. Enquanto no tipo genérico para conduzir a (de)serialização de cargas úteis tipadas dinamicamente, uma biblioteca C++ com o nome de Tulib é oferecida. Uma mensagem que usa digitação dinâmica é serializada de acordo com um esquema de log. Por permitir a (des)serialização de mensagens sem a necessidade de reconstruir e reimplantar o binário do aplicativo, esse método é mais flexível do que o modo gerado por código.

A biblioteca de registro envia dados para vários sistemas de back-end, cada um dos quais tradicionalmente especificou suas próprias regras de serialização e vários problemas são enfrentados ao usar esses formatos para serializar cargas úteis, e eles são

  • Estandardização: Não havia padronização de formatos de serialização no passado; cada sistema downstream tinha seu próprio formato, levando a um aumento nos custos de manutenção e desenvolvimento. 
  • Confiabilidade: Novas colunas só podem ser adicionadas no final para manter a confiabilidade da desserialização. Qualquer esforço para inserir um campo no meio de uma coluna existente ou remover uma coluna causaria o deslocamento de todas as colunas seguintes, impossibilitando a desserialização da linha, e o esquema atualizado é distribuído aos leitores em tempo real. 
  • Eficiência: Quando comparados à (des)serialização binária, os protocolos Hive Text Delimited e JSON são baseados em texto e ineficientes.
  • Exatidão: Delimitadores de campo e delimitadores de linha devem ter escape e sem escape para protocolos baseados em texto como Hive Text. Todo escritor e leitor faz isso, o que aumenta a pressão sobre os autores da biblioteca. É difícil lidar com implementações desatualizadas ou defeituosas que apenas procuram a presença desses caracteres e rejeitam toda a mensagem em vez de escapar dos caracteres problemáticos.
  • Compatibilidade para frente e para trás: O consumo de cargas que foram serializadas por um esquema de serialização antes e depois da versão que o consumidor vê é desejado. O Hive Text Protocol não fornece essa garantia.
  • Metadados: A inserção de metadados na carga útil não é trivialmente suportada pela serialização de texto do Hive. Para que os sistemas downstream implementem recursos que lucram com a presença de metadados, a propagação desses dados é essencial.

A Tulip resolve nosso problema fundamental, a questão da confiabilidade, fornecendo um formato de evolução de esquema seguro que é compatível com versões anteriores e futuras em serviços com ciclos de implantação distintos. A Tulip resolveu todos esses problemas de uma só vez, tornando-se um investimento melhor do que outras opções disponíveis. 

O TCompactProtocol da Thrift é usado para serializar uma carga útil no protocolo de serialização Tulip, que é um protocolo de serialização binária. Os campos são numerados com IDs da mesma forma que um engenheiro esperaria ao alterar IDs em uma estrutura Thrift. Os engenheiros definem uma lista de nomes e tipos de campo quando criam um esquema de criação de log, e os IDs de campo são gerenciados pelo módulo de gerenciamento de plataforma de dados em vez dos engenheiros especificados. O repositório do esquema de serialização contém uma tradução do esquema de criação de log em um esquema de serialização. Listas de nome de campo, tipo de campo, ID de campo para um esquema de criação de log relacionado e histórico de campo são armazenados em uma configuração de serialização. Quando um engenheiro deseja atualizar um esquema de log, uma operação transacional é executada no esquema de serialização.

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

Por favor, não se esqueça de participar Nosso Subreddit de ML

Avanthy Yeluri é uma estudante de dupla graduação no IIT Kharagpur. Ela tem um forte interesse em Data Science por causa de suas inúmeras aplicações em uma variedade de setores, bem como seus avanços tecnológicos de ponta e como eles são empregados na vida cotidiana.

<!–

->

Carimbo de hora:

Mais de Consultores Blockchain