OpenZL di Meta: il compressore dati che lascia Zstandard e i predecessori nella polvere

OpenZL rappresenta la nuova generazione di compressione dati: consapevole del formato, adattiva e universale. Supera Zstandard in velocità e rapporto di compressione, ottimizzando archiviazione e trasferimenti per dataset strutturati come tabelle, log e serie temporali. È open source e pronto all’uso.

La quantità di dati generata ogni giorno cresce a ritmi esponenziali, tra analisi scientifiche, intelligenza artificiale, IoT, sistemi di monitoraggio e data center globali. La compressione dati resta quindi una delle tecnologie più cruciali: senza l’uso degli algoritmi di compressione, l’intera infrastruttura sarebbe rapidamente sopraffatta da volumi ingestibili di informazioni. L’archiviazione diventerebbe enormemente più costosa, i trasferimenti di rete più lenti, si registrerebbe un maggiore consumo energetico e una minore scalabilità.

Negli ultimi quarant’anni, la ricerca in questo ambito ha portato alla messa a punto di algoritmi che hanno segnato la storia dell’informatica. Dalle prime implementazioni come LZW (usato nel formato GIF e nei compressori) e Huffman, ai successivi Deflate e bzip2, la compressione è risultata determinante in molteplici ambiti.

Nel 2016, Facebook ha presentato Zstandard (zstd), un algoritmo scritto in C e pubblicato come progetto open source: unisce l’alta velocità di LZ4 con rapporti di compressione vicini a xz e bzip2. Per via di queste caratteristiche è diventato lo standard de facto per data center e archivi di sistema.

Tuttavia, ogni algoritmo di compressione general-purpose — da ZIP a zstd — condivide un limite strutturale: tratta i dati come sequenze indifferenziate di byte, senza considerare la semantica o la forma del contenuto. Tale approccio “cieco” è efficiente per file generici, ma non lo è affatto nella gestione di dataset strutturati come tabelle, log, serie temporali o formati colonnari.

OpenZL: compressione dati Meta basata sulla struttura

Oltre Zstandard: una nuova generazione di compressione con OpenZL

È in questo contesto che Meta introduce OpenZL, un framework aperto che segna l’inizio di una nuova generazione di strumenti per la compressione dati: consapevole del formato, adattiva e universale. OpenZL unisce la potenza dei compressori specializzati — progettati per un singolo tipo di dato — alla semplicità gestionale di un unico binario eseguibile.

Attraverso un modello basato su grafi di trasformazione, il sistema è in grado di estrarre la struttura nascosta nei dati, applicando strategie di compressione ottimizzate per ciascun campo o componente, ma mantenendo la decompressione universale e indipendente dal formato.

OpenZL non rappresenta solo un’evoluzione tecnica, ma una rottura concettuale: dalla compressione uniforme e generica si passa a una compressione intelligente e strutturata, capace di adattarsi alla natura dei dati e di evolversi nel tempo grazie all’apprendimento offline.

Nello sviluppare OpenZL, frutto di oltre 10 anni di lavoro, gli ingegneri di Meta sono partiti da una constatazione semplice ma fondamentale: i dati non sono una sequenza casuale di byte. Hanno invece una struttura propria — tabelle, campi, colonne, gerarchie, vincoli — che può essere sfruttata per ottenere compressioni più efficaci. I compressori da “vestito uguale per tutte le stagioni” non riescono a cogliere appieno queste caratteristiche, perdendo opportunità di ottimizzazione.

Architettura e funzionamento di OpenZL

OpenZL è progettato attorno a un modello a grafo di trasformazioni, in cui ogni nodo rappresenta un’operazione reversibile sul flusso di dati. L’obiettivo è rendere esplicita la struttura nascosta, semplificando il compito dell’algoritmo di codifica finale.

Il processo segue quattro fasi principali:

  • Descrizione dei dati. L’utente fornisce a OpenZL la forma dei dati, tramite un preset o una breve descrizione nel linguaggio SDDL (Simple Data Description Language). Questa definizione è utile per condividere la struttura — colonne, tipi, intervalli, record annidati — con il compressore.
  • Addestramento offline. Un componente chiamato trainer esplora combinazioni di trasformazioni, valutando i compromessi tra rapporto di compressione e velocità. Il risultato è un “piano di compressione” (plan), riutilizzabile su dati simili e ottimizzato per il tipo di contenuto.
  • Compressione (encode-time). Il piano è tradotto in un Resolved Graph che definisce passo per passo la ricetta di decodifica. La ricetta è incorporata direttamente, rendendo ogni file autosufficiente.
  • Decompressione universale. Tutti i file compressi con OpenZL, indipendentemente dal piano utilizzato, possono essere decompressi con un unico decoder universale. Nessun coordinamento esterno, nessun aggiornamento dei decompressori: la compatibilità è permanente.

Prestazioni e risultati sperimentali

I risultati pubblicati da Meta mostrano chiaramente il potenziale del nuovo framework. Prendendo come “benchmark” un file binario contenente dati astronomici del Silesia Compression Corpus, OpenZL supera nettamente i compressori tradizionali zstd e xz, sia in rapporto di compressione che in velocità:

Tool Dimensione compressa Rapporto Velocità compressione Velocità decompressione
zstd -3 5.531.935 B 1,31× 220 MB/s 850 MB/s
xz -9 4.414.351 B 1,64× 3,5 MB/s 45 MB/s
OpenZL 3.516.649 B 2,06× 340 MB/s 1.200 MB/s

Questi risultati dimostrano che OpenZL non solo riduce maggiormente i dati, ma lo fa più velocemente rispetto a strumenti ottimizzati per la velocità come zstd, un risultato notevole per un sistema lossless.

OpenZL mostra il meglio di sé con dati strutturati e numerici: tabelle, serie temporali, dataset scientifici, tensor ML, log o database colonnari. In assenza di struttura, invece, il framework si adatta automaticamente, ricorrendo a zstd come fallback. Ciò garantisce che le prestazioni di OpenZL non scendano mai sotto quelle di zstd, ma possano superarle di molto quando risulta possibile attivare ottimizzazioni basate sulla specifica struttura dei dati.

Come provare OpenZL, in breve

OpenZL è disponibile come progetto open source sul repository GitHub ufficiale. La libreria principale è gestita tramite la CLI (command line interface) zli. Per iniziare, è necessario assicurarsi di avere installati git, un compilatore C++ (g++ o clang++) e make.

Le istruzioni per provare OpenZL sono disponibili contengono le informazioni su come clonare il repository, compilare la CLI, avviare un test di compressione, specificare il profilo da utilizzare, attivare un’attività di addestramento per la compressione ottimizzata, generare più compressori ottimizzati per rapporto compressione/velocità e infine visualizzare il grafo di compressione.

Ti consigliamo anche

Link copiato negli appunti