6 puan yazan GN⁺ 2025-10-07 | 1 yorum | WhatsApp'ta paylaş
  • Meta'nın duyurduğu OpenZL, yapılandırılmış veriler için kayıpsız sıkıştırma sunan yeni bir açık kaynaklı sıkıştırma çerçevesi olup, veri biçimini tanıyarak verimli dönüşüm süreçleri yürütür
  • Her dosya biçimine farklı dönüşüm adımları uygular, ancak tüm dosyaların tek bir genel amaçlı decompresser ile açılabilmesi için tasarlanmıştır
  • Sıkıştırıcıya veri yapısı açıkça iletilerek dönüşüm süreci optimize edilir ve öğrenilmiş sıkıştırma yapılandırmaları (config) sayesinde hız ile sıkıştırma oranı arasında farklı denge noktaları seçilebilir
  • Meta içindeki Managed Compression sistemiyle entegre çalışır; verideki değişimlere göre otomatik yeniden eğitim ve güncelleme yapabilmesi öne çıkan özelliklerindendir
  • Yapısı belirgin veri kümelerinde yüksek performans göstererek veri merkezi işleme verimliliğini artırır ve sıkıştırma ekosistemini tek bir decoder ile sadeleştirme potansiyeli sunar

OpenZL'ye genel bakış

  • OpenZL, Meta'nın duyurduğu biçim farkındalıklı veri sıkıştırma çerçevesi olup, yapılandırılmış veriler için özelleşmiş sıkıştırma verimliliği sunar
    • Verinin biçimi açıkça belirtildiğinde, iç dönüşüm grafiği üzerinden verideki düzenlilik ve tekrarları bularak daha verimli sıkıştırma yapar
  • Zstandard'ın devamı niteliğinde bir kavram olarak, biçime göre optimize edilmiş sıkıştırmanın performansını tek bir çalıştırılabilir dosyanın bakım kolaylığıyla birleştiren bir yapıya sahiptir
    • Zstandard, veri merkezlerinde hız ve sıkıştırma oranını aynı anda karşılayarak büyük bir sıçrama yaratmış olsa da, algoritmanın genelliğinden kaynaklanan kademeli iyileştirme sınırları vardır
  • Yapılandırılmış verilerde, genel sıkıştırma yöntemlerine kıyasla biçime uygun özelleştirilmiş sıkıştırma hem oran hem hız açısından daha avantajlıdır
  • Ancak her dosya biçimi için özel sıkıştırıcı/geri açıcı geliştirme ve işletme yükü büyüktür
  • OpenZL, ayrı ayrı özelleştirilmiş sıkıştırıcıların performansını ve tek binary ile çalıştırma kolaylığını aynı anda hedefler

Yapı temelli sıkıştırma yaklaşımı

  • Geleneksel sıkıştırıcılar veriyi tahmine dayalı işlerken, OpenZL veri yapısını açık bir girdi olarak alır
    • Kullanıcılar Simple Data Description Language (SDDL) ile verinin şeklini (satırlar, sütunlar, enum'lar, iç içe yapılar vb.) tanımlayabilir
    • Bu bilgiye dayanarak OpenZL, çevrimdışı eğitim (trainer) ile en iyi dönüşüm dizisini (Plan) üretir
    • Sonrasında sıkıştırma sırasında bu Plan temel alınarak gerçek çözümleme grafiği (Resolved Graph) oluşturulur ve frame içine gömülür

Örnek: SAO verisinin sıkıştırılması

  • Silesia Compression Corpus içindeki SAO dosyası örneğinde OpenZL, her alanı ayırıp homojen veri akışlarına dönüştürdükten sonra ayrı ayrı optimize eder
    • X ekseni koordinatları (SRA0) sıralı olma eğilimi gösterdiği için delta dönüşümü uygulanır
    • Y ekseni koordinatları (SDEC0) değer aralığı kısıtından yararlanılarak transpose dönüşümü uygulanır
    • Diğer alanlarda ise düşük benzersiz değer sayısı nedeniyle tokenize dönüşümü ile sözlük tabanlı sıkıştırma yapılır
  • Sonuç olarak zstd'ye kıyasla 2 katın üzerinde sıkıştırma oranı ve daha yüksek hız (340 MB/s) elde edilir

Otomatik sıkıştırıcı üretimi ve eğitim süreci

  • OpenZL'nin trainer bileşeni, veri örneklerine dayanarak sıkıştırma stratejilerini otomatik olarak keşfeder ve öğrenir
    • Eğitim süreci: describe(SDDL) → train(Plan oluşturma) → compress(grafiği gömme) → decode(tek binary ile geri açma)
    • Control point'ler kullanılarak çalışma zamanında istatistiksel bilgilere göre en uygun yol seçilir
    • Yeni bir plan uygulansa bile mevcut veriler aynı şekilde çözülebilir, yani geriye dönük uyumluluk korunur

Tek decompresser'ın avantajları

  • OpenZL, hangi biçimle sıkıştırılmış olursa olsun veriyi tek bir decompresser binary'si ile geri açabilir
    • Güvenlik ve kararlılık doğrulaması yalnızca bir kez yapılarak tüm sisteme uygulanabilir
    • Decompresser güncellendiğinde, geçmişte sıkıştırılmış tüm veriler için de performans iyileştirmeleri uygulanabilir
    • Operasyonel sadelik ve filo genelinde tutarlılık sağlanır
    • Birden fazla biçim aynı anda yönetilirken bile geriye dönük uyumluluk korunur

Performans karşılaştırma sonuçları

  • Çeşitli veri kümelerinde zstd, xz gibi genel amaçlı sıkıştırıcılara kıyasla daha yüksek sıkıştırma oranı ve hız elde edilmiştir
    • SAO: 2,06 kat sıkıştırma oranı, 1200 MB/s geri açma hızı
    • ERA5 (sayısal veri): aynı sürede daha yüksek sıkıştırma oranı ya da aynı sıkıştırma oranında daha hızlı performans
    • Parquet ve CSV veri kümelerinde de biçim farkındalığı sayesinde özelleştirilmiş optimizasyon mümkündür
  • Ancak metin tabanlı gibi yapısız verilerde etkisi sınırlıdır ve asgari performansı garanti etmek için zstd'ye fallback yapar
  • Sıkıştırma oranı / sıkıştırma hızı / geri açma hızı olmak üzere üç eksende farklı kombinasyonlar seçilebilir; bu da geleneksel sıkıştırıcılardaki “seviye” ayarından farklı bir esneklik sunar

Veri evrimi ve otomatik yeniden eğitim

  • Meta'nın Managed Compression sistemiyle bağlantılı olarak, veri biçimi değiştiğinde sıkıştırma planı otomatik olarak yeniden eğitilir
    • Düzenli örnekleme ve değerlendirme sonrasında daha iyi bir plan bulunursa otomatik güncelleme yapılır
    • Decompresser aynı kaldığından operasyonel risk en aza iner

Açık kaynak ekosistemine katılım ve gelecek yönelimleri

  • OpenZL; vektör, tablo ve ağaç yapılı veriler için uygundur ve zaman serileri, ML tensor'ları, veritabanı tabloları gibi alanlarda yüksek verim gösterir
  • Yapısız metinlerde (ör. enwik, dickens vb.) zstd kullanılır
  • Gelecek planları:
    • Zaman serileri ve ızgara verileri için dönüşüm kütüphanesini genişletmek
    • SDDL'nin iç içe veri ifade gücünü artırmak
    • Otomatik sıkıştırıcı gezgininin performansını ve kararlılığını iyileştirmek
  • Topluluğun katılma yolları:
    • Resmî OpenZL sitesi ve GitHub deposu üzerinden örnekler ve dokümantasyon incelenebilir
    • Yeni veri biçimlerini test etmek ve Plan önerilerinde bulunmak
    • C/C++ motor optimizasyonu, yeni dönüşümler ekleme ve benchmark katkıları yapılabilir

Sonuç

  • OpenZL, biçim farkındalıklı sıkıştırmayı standartlaştırırken mevcut ekosistemi tek bir decoder etrafında birleştirebilecek yeni bir yaklaşım sunuyor
  • Meta, bununla veri merkezleri genelinde sıkıştırma verimliliğini, hızı ve bakım kolaylığını aynı anda iyileştirmeyi hedefliyor

1 yorum

 
GN⁺ 2025-10-07
Hacker News görüşleri
  • HN'de yakın zamanda çıkan genomik veri sıkıştırma yazısını(bağlantı) görünce OpenZL'den bahsetmemek için kendimi zor tuttum; veriye gerçekten çok basit dönüşümler uygulamanın bile sıkıştırma verimini büyük ölçüde artırabildiğini çok iyi gösteren bir örnek. OpenZL de bunu içeride kolayca yapabiliyor (SDDL kullanarak)
    • Benim de aklıma hemen o yazı geldi. Orada bahsedilen özel sıkıştırıcılarla OpenZL'i karşılaştıran oldu mu merak ediyorum. Örneğin Grace Blackwell'in 2.6Tbp 661k veri kümesi mikrobiyal genom benchmark'larında klasik sayılır ve Karel Břinda'nın MiniPhy yöntemi bunu 2.46TiB'den 27GiB'a (sıkıştırma oranı 91) indiriyor. Benzer sonuçlar mümkün olur mu merak ediyorum
    • Genel genomik formatlarda (fa, fq, sam, vcf) benchmark sonuçlarını görmek isterim; özellikle nanopore verisine uygulanabilirliği ilgimi çekiyor. FAST5/POD5 depolaması zor olduğu için çok fazla faydalı veri kaybediyoruz
    • [0] Yazının yazarı benim; kendini tuttuğun için tebrikler, iyi yapmışsın. Bunu kesinlikle denemek istiyorum. Fasta sıkıştırıcısı eğitimi için OpenZL kılavuzunun(bağlantı) dışında ayrıca önereceğin bir şey var mı merak ediyorum
  • Biraz ilişkili bir konu olarak, yakın zamanda F3 dosya formatı hakkında bir tartışma vardı(bağlantı); burada da decompressor kodu WASM olarak gömülerek format farkındalıklı sıkıştırma yapılabiliyor. F3'ün ana motivasyonu gelecekte uyumluluk olsa da özelleştirilmiş sıkıştırma algoritmaları kullanılabiliyor. Yaklaşım OpenZL'den tamamen farklı ve OpenZL'in bağımlılıkları da çok daha hafif (yalnızca SDDL compiler/runtime gerekli)
    • zpaq'in de zaten 15 yıldır gömülü decompressor özelliği vardı; bundan hiç bahsedilmemesi üzücü
    • Sıkıştırılmış dosyaya çalıştırılabilir kod eklemenin virüs kaynaklı açıkları büyütmesinden endişe ediyorum
  • Gerçekten oldukça iyi bir araç çıkmış olmasına şaşırdım; bence çok daha önce gelmeliydi. Veri kapsayıcı yapısını doğru anlarsanız yinelenen verileri kaldırma verimi inanılmaz artıyor. BSD-3-Clause lisanslı, temiz bir C++ uygulaması var ve dokümantasyonu da harika. Daha fazla dosya formatının eklenmesiyle gelişmesini görmek isterim
    • Dosya formatına özgü hale getirme daha önce de kullanılan bir yöntemdi (ör. 7-Zip'in x86 opcode prefilter'ı, ZPAQ'ın özel decoder bytecode gömme yaklaşımı), ancak OpenZL'in fiilî uygulaması, veri tanımlama biçimi ve eğitim sistemi etkileyici
  • Doğru anladıysam, SDDL ile veri yapısını tanımladığınızda sıkıştırıcı her parçaya uygun en iyi sıkıştırma stratejisini kurabiliyor gibi görünüyor. Gerçekten çok havalı; umarım özel format sıkıştırması için genel amaçlı bir çerçeveye dönüşür
    • Evet! SDDL(bağlantı) bunu no-code şekilde yapabilmek için bir araç takımı sunuyor. Özellikler şimdilik sınırlı ama zamanla genişletilecek. O zamana kadar C++ veya Python ile doğrudan format ayrıştırıcıları da yazabilirsiniz. Bu kodun yalnızca sıkıştırıcı tarafında gerektiğini, decompressor'ın ise formattan bağımsız çalıştığını da ekleyeyim
  • Bu araç seekable compression destekliyor mu merak ediyorum
  • Dokümantasyona bakarken, yapay zekanın imhex, Kaitai gibi mevcut teknoloji açıklamalarını SDDL'ye ne kadar iyi dönüştürebileceğini merak ettim. Bu yöntemle iyi şemaları hızlıca toplayabilir gibi görünüyor
    • Böyle araçların varlığını ilk kez öğreniyorum ama gerçekten SDDL'ye dönüştürülebilir gibi duruyor. Bunu kesinlikle kontrol etmeyi planlıyorum
  • Meta'nın Nimble'ında OpenZL'in OSS öncesi sürümü yerel olarak entegre durumda ve çok büyük fayda sağlıyor
    • Sütun tabanlı veri formatlarının arka uç sıkıştırması OpenZL ile mükemmel uyuşuyor. Sıkıştırılan verinin i64 ya da float gibi sayısal olduğunu bildiğiniz anda Zstandard'a karşı doğrudan büyük bir avantaj ortaya çıkıyor
  • OpenZL'in log verisi için uygun olup olmadığını merak ediyorum (şeması netleşmemiş JSON logları); bir log sıkıştırma aracı geliştiriyorum(bağlantı)
  • Non-Linear Compression (doğrusal olmayan sıkıştırma) konusunda zamanında bazı fikirlerim olmuş ve denemiştim ama çok ileri götürememiştim(bağlantı); böyle girişimleri görmek beni çok sevindirdi, paylaştığınız için teşekkürler
  • Aşırı derecede ilginç görünüyor; bu akşam büyük CSV dosyalarında mutlaka deneyeceğim
    • Deneyimini paylaşırsan harika olur. OpenZL başlangıçta Meta içinde kullanılmak üzere geliştirilmişti; son dönemde dış kullanıcıların da kolayca kullanabilmesi için epey emek harcadık. Geri bildirimlere açığız