- OpenZL, von Meta veröffentlicht, ist ein neues Open-Source-Kompressions-Framework, das verlustfreie Kompression für strukturierte Daten bietet und Datenformate erkennt, um effiziente Transformationsprozesse auszuführen
- Für jedes Dateiformat werden unterschiedliche Transformationsschritte angewendet, ist aber so konzipiert, dass alle Dateien mit einem einzigen universellen Dekompressor entschlüsselt werden können
- Durch die explizite Übergabe der Datenstruktur an den Kompressor wird der Transformationsprozess optimiert, und über gelernte Kompressionskonfigurationen (Configs) lassen sich verschiedene Gleichgewichtspunkte zwischen Geschwindigkeit und Kompressionsrate wählen
- Ein besonderes Merkmal ist die Integration mit Metas internem System Managed Compression, wodurch automatisches Retraining und Aktualisieren entsprechend Datenänderungen möglich sind
- Bei Datensätzen mit klarer Struktur zeigt es hohe Leistung, verbessert dadurch die Verarbeitungseffizienz in Rechenzentren und deutet auf die Möglichkeit hin, das Kompressions-Ökosystem mit einem einzigen Decoder zu vereinfachen
Überblick über OpenZL
- OpenZL ist ein von Meta veröffentlichtes formatbewusstes Datenkompressions-Framework, das für strukturierte Daten spezialisierte Kompressionseffizienz bietet
- Wenn das Datenformat explizit angegeben wird, findet es über einen internen Transformationsgraphen Regelmäßigkeiten und Wiederholungen in den Daten und komprimiert sie dadurch effizienter
- Als Nachfolgekonzept zu Zstandard verbindet es die Leistung formatoptimierter Kompression mit der Wartbarkeit einer einzigen ausführbaren Datei
- Zstandard brachte in Rechenzentren einen großen Sprung, indem es Geschwindigkeit und Kompressionsrate zugleich erfüllte, hatte jedoch Grenzen für schrittweise Verbesserungen aufgrund der Verallgemeinerung des Algorithmus
- Bei strukturierten Daten ist maßgeschneiderte Kompression passend zur Form gegenüber allgemeinen Kompressionsverfahren sowohl bei Rate als auch Geschwindigkeit im Vorteil
- Allerdings ist der Aufwand groß, für jedes Dateiformat eigene Kompressoren und Dekompressoren zu entwickeln und zu betreiben
- OpenZL verfolgt zugleich die Leistung individueller Spezialkompressoren und die einfache Betriebsführung eines einzelnen Binaries
Strukturbasierter Kompressionsansatz
- Während herkömmliche Kompressoren Daten auf Basis von Vermutungen verarbeiten, erhält OpenZL die Datenstruktur als explizite Eingabe
- Nutzer können über die Simple Data Description Language (SDDL) die Form der Daten beschreiben, etwa Zeilen, Spalten, Enumerationen oder verschachtelte Strukturen
- Auf Basis dieser Informationen erzeugt OpenZL per Offline-Training (Trainer) die optimale Transformationssequenz (Plan)
- Bei der späteren Kompression wird auf Grundlage dieses Plans der eigentliche Decoding Graph (Resolved Graph) erstellt und in den Frame eingebettet
Beispiel: SAO-Datenkompression
- Am Beispiel der SAO-Datei aus dem Silesia Compression Corpus trennt OpenZL die einzelnen Felder, wandelt sie in homogene Datenströme um und optimiert sie jeweils separat
- Für die X-Achsen-Koordinate (SRA0) wird wegen der Sortierungstendenz eine Delta-Transformation angewendet
- Für die Y-Achsen-Koordinate (SDEC0) wird unter Nutzung des begrenzten Wertebereichs eine Transpose-Transformation eingesetzt
- Für die übrigen Felder erfolgt wegen der geringen Zahl unterschiedlicher Werte eine wörterbuchbasierte Kompression mittels Tokenize-Transformation
- Im Ergebnis erreicht es gegenüber zstd eine mehr als doppelt so hohe Kompressionsrate und höhere Geschwindigkeit (340 MB/s)
Automatische Kompressor-Erzeugung und Trainingsprozess
- Der Trainer von OpenZL durchsucht und lernt auf Basis von Datensamples automatisch Kompressionsstrategien
- Trainingsablauf: describe(SDDL) → train(Plan-Erzeugung) → compress(Graph-Einbettung) → decode(Wiederherstellung mit einem einzelnen Binary)
- Mit Control Points wird zur Laufzeit auf Basis statistischer Informationen der optimale Pfad gewählt
- Auch wenn ein neuer Plan angewendet wird, können bestehende Daten weiterhin dekodiert werden, wodurch Rückwärtskompatibilität erhalten bleibt
Vorteile eines einzelnen Dekompressors
- OpenZL kann unabhängig vom verwendeten Kompressionsformat mit einem einzigen Dekompressor-Binary wiederhergestellt werden
- Sicherheits- und Stabilitätsprüfungen müssen nur einmal durchgeführt werden und lassen sich dann auf das gesamte System anwenden
- Bei Updates des Dekompressors profitieren auch alle älteren Daten von Leistungsverbesserungen
- Betriebliche Einfachheit und Konsistenz über die gesamte Flotte werden sichergestellt
- Auch bei gleichzeitiger Verwaltung mehrerer Formate bleibt Abwärtskompatibilität erhalten
Ergebnisse des Leistungsvergleichs
- Auf verschiedenen Datensätzen werden gegenüber allgemeinen Kompressoren wie zstd oder xz höhere Kompressionsraten und mehr Geschwindigkeit erzielt
- SAO: 2,06-fache Kompressionsrate, 1200 MB/s Dekompressionsgeschwindigkeit
- ERA5 (numerische Daten): bei gleicher Zeit eine höhere Kompressionsrate oder bei gleicher Kompressionsrate höhere Geschwindigkeit
- Auch bei Parquet- und CSV-Datensätzen ist durch Formaterkennung maßgeschneiderte Optimierung möglich
- Bei unstrukturierten Daten wie textbasierten Inhalten ist der Effekt jedoch begrenzt; dann erfolgt ein Fallback auf zstd, um eine Mindestleistung sicherzustellen
- Über die drei Achsen Kompressionsrate/Kompressionsgeschwindigkeit/Dekompressionsgeschwindigkeit lassen sich vielfältige Kombinationen wählen und es bietet eine andere Flexibilität als die klassische „Level“-Steuerung traditioneller Kompressoren
Datenentwicklung und automatisches Retraining
- In Verbindung mit Metas Managed Compression werden bei Änderungen des Datenformats Kompressionspläne automatisch neu trainiert
- Es wird periodisch gesampelt und evaluiert; wird ein besserer Plan gefunden, erfolgt ein automatisches Update
- Der Dekompressor bleibt unverändert, wodurch Betriebsrisiken minimiert werden
Beteiligung am Open-Source-Ökosystem und weitere Ausrichtung
- OpenZL eignet sich für Vektor-, Tabellen- und Baumstruktur-Daten und zeigt hohe Effizienz etwa bei Zeitreihen, ML-Tensoren und Datenbanktabellen
- Für unstrukturierte Texte (z. B. enwik, dickens usw.) wird zstd verwendet
- Zukünftige Pläne:
- Ausbau der Transformationsbibliothek für Zeitreihen- und Gitterdaten
- Stärkere Ausdrucksfähigkeit von SDDL für verschachtelte Daten
- Verbesserung von Leistung und Stabilität des automatischen Kompressor-Suchers
- Möglichkeiten zur Beteiligung der Community:
- Auf der offiziellen OpenZL-Website und im GitHub-Repository finden sich Beispiele und Dokumentation
- Testen neuer Datenformate und Vorschlagen von Plänen
- Beiträge zur Optimierung der C/C++-Engine, zu neuen Transformationen und zu Benchmarks sind möglich
Fazit
- OpenZL ist ein neuer Ansatz, der formatbewusste Kompression standardisiert und zugleich das bestehende Ökosystem rund um einen einzelnen Decoder integrieren kann
- Meta will damit Kompressionseffizienz, Geschwindigkeit und Wartbarkeit im gesamten Rechenzentrum gleichzeitig verbessern
1 Kommentare
Hacker-News-Kommentare