6 pontos por GN⁺ 2025-10-07 | 1 comentários | Compartilhar no WhatsApp
  • O OpenZL, lançado pela Meta, é um novo framework de compressão open source que oferece compressão sem perdas para dados estruturados, reconhecendo o formato dos dados para executar um processo de transformação eficiente
  • Aplica etapas de transformação diferentes para cada formato de arquivo, mas foi projetado para que todos os arquivos possam ser descompactados com um único descompressor genérico
  • Ao fornecer explicitamente a estrutura dos dados ao compressor, ele otimiza o processo de transformação e permite escolher diferentes pontos de equilíbrio entre velocidade e taxa de compressão por meio de configurações (configs) de compressão treinadas
  • Destaca-se pela integração com o sistema interno Managed Compression da Meta, permitindo retreinamento e atualização automáticos conforme os dados mudam
  • Apresenta alto desempenho em conjuntos de dados com estrutura bem definida, podendo melhorar a eficiência de processamento em datacenters e simplificar o ecossistema de compressão com um único decodificador

Visão geral do OpenZL

  • O OpenZL é um framework de compressão de dados com reconhecimento de formato lançado pela Meta, oferecendo eficiência de compressão especializada para dados estruturados
    • Ao informar explicitamente o formato dos dados, ele usa um grafo interno de transformações para identificar regularidades e repetições e comprimir de forma mais eficiente
  • Como um conceito sucessor do Zstandard, sua estrutura combina o desempenho da compressão otimizada por formato com a facilidade de manutenção de um único executável
    • O Zstandard representou um grande avanço nos datacenters ao atender simultaneamente velocidade e taxa de compressão, mas há limites para melhorias incrementais devido à generalização do algoritmo
  • Em dados estruturados, uma compressão personalizada para o formato é superior aos métodos genéricos tanto em taxa quanto em velocidade
  • Porém, há um grande custo operacional para construir e manter compressores/descompressores dedicados para cada formato de arquivo
  • O OpenZL busca ao mesmo tempo o desempenho de compressores personalizados e a simplicidade operacional de um único binário

Método de compressão baseado em estrutura

  • Enquanto compressores tradicionais tratam os dados com base em inferência, o OpenZL recebe a estrutura dos dados como entrada explícita
    • O usuário pode descrever a forma dos dados (linhas, colunas, enumerações, estruturas aninhadas etc.) usando a Simple Data Description Language (SDDL)
    • Com base nessas informações, o OpenZL gera uma sequência ótima de transformações (Plan) por meio de treinamento offline
    • Depois, na compressão, cria o grafo de decodificação real (Resolved Graph) com base nesse Plan e o incorpora ao frame

Exemplo: compressão de dados SAO

  • Usando o arquivo SAO do Silesia Compression Corpus como exemplo, o OpenZL separa cada campo e o transforma em streams de dados homogêneos, aplicando otimização individual
    • A coordenada do eixo X (SRA0), por ter tendência de ordenação, recebe transformação delta
    • A coordenada do eixo Y (SDEC0) usa uma transformação transpose aproveitando a limitação de faixa
    • Os demais campos, por terem baixa cardinalidade, usam transformação tokenize para compressão baseada em dicionário
  • Como resultado, registrou mais de 2x a taxa de compressão em relação ao zstd e maior velocidade (340 MB/s)

Geração automática de compressores e processo de treinamento

  • O treinador do OpenZL explora e aprende automaticamente estratégias de compressão com base em amostras de dados
    • Fluxo de treinamento: describe(SDDL) → train(geração do Plan) → compress(incorporação do grafo) → decode(restauração com binário único)
    • Usa control points para escolher, em tempo de execução, o caminho ideal com base em informações estatísticas
    • Mesmo com a aplicação de um novo Plan, os dados existentes continuam podendo ser decodificados, preservando a retrocompatibilidade

Vantagens de um único descompressor

  • O OpenZL permite restaurar qualquer formato comprimido com um único binário de descompressão
    • A validação de segurança e estabilidade precisa ser feita apenas uma vez para aplicação em todo o sistema
    • Ao atualizar o descompressor, melhorias de desempenho também passam a valer para todos os dados antigos
    • Garante simplicidade operacional e consistência em toda a frota
    • Mantém compatibilidade retroativa mesmo gerenciando vários formatos simultaneamente

Resultados de comparação de desempenho

  • Em vários conjuntos de dados, alcançou taxa de compressão e velocidade superiores a compressores genéricos como zstd e xz
    • SAO: taxa de compressão 2,06x e velocidade de restauração de 1200 MB/s
    • ERA5 (dados numéricos): maior taxa de compressão no mesmo tempo, ou maior velocidade na mesma taxa de compressão
    • Em datasets Parquet e CSV, também permite otimização personalizada com base no reconhecimento de formato
  • No entanto, em dados sem estrutura, como texto, o efeito é limitado, e ele recorre ao zstd como fallback para garantir desempenho mínimo
  • É possível escolher várias combinações entre taxa de compressão, velocidade de compressão e velocidade de restauração, oferecendo flexibilidade diferente do ajuste de “nível” dos compressores tradicionais

Evolução dos dados e retreinamento automático

  • Integrado ao Managed Compression da Meta, ele retreina automaticamente o plano de compressão quando o formato dos dados muda
    • Faz amostragem e avaliação periódicas e, se encontrar um plano melhor, atualiza automaticamente
    • O descompressor permanece o mesmo, minimizando o risco operacional

Participação no ecossistema open source e direção futura

  • O OpenZL é adequado para dados estruturados em vetores, tabelas e árvores e mostra excelente eficiência em séries temporais, tensores de ML e tabelas de banco de dados
  • Para texto sem estrutura (ex.: enwik, dickens etc.), aplica zstd
  • Planos futuros:
    • Expandir a biblioteca de transformações para séries temporais e dados em grade
    • Reforçar a capacidade de expressão de dados aninhados no SDDL
    • Melhorar o desempenho e a estabilidade do explorador automático de compressores
  • Como participar da comunidade:
    • No site oficial do OpenZL e no repositório no GitHub, é possível consultar exemplos e documentação
    • Testar novos formatos de dados e propor Plans
    • Contribuir com otimização do engine em C/C++, novas transformações e benchmarks

Conclusão

  • O OpenZL é uma nova abordagem que padroniza a compressão com reconhecimento de formato e, ao mesmo tempo, pode unificar o ecossistema existente em torno de um único decodificador
  • Com isso, a Meta busca melhorar simultaneamente a eficiência de compressão, velocidade e manutenibilidade em todo o datacenter

1 comentários

 
GN⁺ 2025-10-07
Comentários no Hacker News
  • Vi recentemente o post no HN sobre compressão de dados genômicos (link) e me segurei muito para não falar do OpenZL; é um ótimo exemplo de como até transformações bem simples nos dados podem aumentar bastante a eficiência da compressão, e o OpenZL também permite fazer esse tipo de transformação com facilidade internamente (usando SDDL)
    • Pensei exatamente nesse post; queria saber se alguém já comparou aquele compressor especializado mencionado lá com o OpenZL. Por exemplo, o dataset Grace Blackwell de 2.6Tbp com 661k é um clássico em benchmarks de genoma microbiano, e o método MiniPhy do Karel Břinda reduz isso de 2.46TiB para 27GiB (taxa de compressão de 91). Fico curioso se seria possível obter resultados parecidos
    • Gostaria de ver resultados de benchmark em formatos genômicos comuns (fa, fq, sam, vcf), especialmente a aplicabilidade a dados nanopore. Armazenar FAST5/POD5 é complicado e estamos perdendo muitos dados úteis por causa disso
    • [0] Sou o autor do post; parabéns por ter se segurado, foi a coisa certa a fazer. Quero muito experimentar isso; além do guia do OpenZL sobre treinamento de compressores para fasta (link), você teria mais alguma recomendação?
  • Em uma linha um pouco relacionada, houve recentemente uma discussão sobre o formato de arquivo F3 (link); ali também é possível fazer compressão ciente do formato embutindo o código do descompressor em WASM. A principal motivação do F3 é compatibilidade futura, mas ele também permite usar algoritmos de compressão personalizados. A abordagem é completamente diferente da do OpenZL, e as dependências do OpenZL também são bem mais leves (só precisa do compilador/runtime de SDDL)
    • O zpaq já tinha esse recurso de descompressor embutido há 15 anos, então é uma pena que não tenha sido mencionado
    • Fico preocupado se incluir código executável em arquivos comprimidos não aumenta a superfície de vulnerabilidade a vírus
  • Fiquei surpreso com o surgimento de uma ferramenta realmente muito boa; acho que ela deveria ter aparecido bem antes. Quando se entende direito a estrutura do contêiner de dados, a eficiência da desduplicação sobe enormemente. Licença BSD-3-Clause, implementação limpa em C++, documentação excelente; espero que evolua com suporte a mais formatos de arquivo
    • Especialização por formato de arquivo já existia antes (por exemplo, o prefilter de opcode x86 do 7-Zip, ou o embedding de bytecode de decodificador especializado no ZPAQ), mas a implementação prática do OpenZL, a forma de descrever os dados e o sistema de treinamento são impressionantes
  • Se entendi corretamente, ao descrever a estrutura dos dados com SDDL, o compressor consegue definir a melhor estratégia de compressão para cada parte. Parece muito legal; espero que isso evolua para um framework geral para compressão de formatos customizados
    • Isso mesmo! O SDDL (link) oferece um toolkit no-code para fazer esse tipo de coisa. As funcionalidades ainda são limitadas, mas devem se expandir no futuro. Antes disso, também dá para criar o parser do formato diretamente em C++ ou Python. Vale notar que esse código só é necessário no lado do compressor; o descompressor funciona independentemente do formato
  • Queria saber se essa ferramenta suporta seekable compression
  • Lendo a documentação, fiquei curioso sobre quão bem a IA conseguiria converter explicações de tecnologias existentes como imhex e Kaitai para SDDL. Parece um bom caminho para reunir bons esquemas rapidamente
    • Eu nem sabia que essas ferramentas existiam, mas realmente parece que daria para converter para SDDL. Com certeza pretendo verificar
  • O Nimble da Meta integra nativamente o OpenZL (na versão pré-OSS) e está obtendo vantagens muito grandes
    • Compressão de backend para formatos de dados em colunas combina perfeitamente com o OpenZL; se você sabe que os dados comprimidos são números como i64 ou float, já dá para obter uma vantagem grande em relação ao Zstandard
  • Fico curioso se o OpenZL é adequado para dados de log (logs JSON sem esquema definido). Estou desenvolvendo uma ferramenta de compressão de logs (link)
  • Non-Linear Compression (compressão não linear) é algo em que já tive algumas ideias e tentei mexer no passado, mas não fui muito longe (link); fiquei muito feliz de ver uma tentativa assim, obrigado por compartilhar
  • Parece absurdamente interessante, de verdade; hoje à noite vou testar com certeza em CSVs grandes
    • Seria ótimo saber como foi a experiência; o OpenZL foi desenvolvido originalmente para uso interno na Meta, e recentemente houve muito esforço para facilitar o uso por usuários externos também. Feedback é bem-vindo