写点什么

Meta 开源 OpenZL:一个通用的结构化数据压缩框架

  • 2025-11-05
    北京
  • 本文字数:1335 字

    阅读完需:约 4 分钟

大小:212.67K时长:01:12
Meta开源OpenZL:一个通用的结构化数据压缩框架

Meta 最近开源了OpenZL,这是一个新的针对高度结构化数据的数据压缩框架,它通过显式建模模式来实现比通用工具(如 Zstandard,简称 Zstd)更好的压缩比和更快的速度。该框架通过一个通用解压缩器来保持操作的简单性,该解压缩器执行嵌入的计划,消除了对外部元数据的需求,并允许从单一二进制文件进行全盘更新。

 

当 Meta 近十年前引入 Zstd 时,由于其速度和效率,它成为了大规模数据基础设施的基石。然而,随着工作负载的演变,特别是涉及结构化格式(如 Protocol Buffers、数据库表和 ML 张量)的工作负载,Meta 工程师发现通用压缩方法未能充分利用现代数据集的固有结构和模式。

 

OpenZL 采取了不同的方法,其通过显式建模数据结构,如列式布局、枚举和重复模式,而不是将所有内容视为未分化的“字节汤”。这种结构化压缩使 OpenZL 能够在相关数据集上超越标准 Zstd 等通用工具,无论指标是压缩比还是速度。OpenZL 的做法不是猜测最佳技术,而是应用一系列可配置的可逆变换来暴露数据中的潜在顺序,然后再进行最终的熵编码阶段。


OpenZL 的一个关键操作优势是其通用解压缩器。压缩计划由一个称为训练器的组件离线生成,该组件分析提供的数据模式并产生优化的计划。在编码过程中,这个计划被转换为具体的解码配方,并直接嵌入到压缩框架中。

 

这种模型意味着:

 

  • 每个 OpenZL 文件,无论其自定义变换序列如何,都可以使用相同的二进制文件进行解压缩。

  • 解码器不需要外部元数据——它执行嵌入的配方。

  • 重新训练或重新优化压缩计划可以提高性能,而无需更改通用解码器,确保向后兼容性。

 

Meta 工程师强调,这种操作的简单性对于数据中心部署至关重要:单一审核的解压缩表面,从单一二进制文件进行全盘更新,以及在大型基础设施中清晰的版本控制。

 

在内部基准测试中,针对结构化数据集(例如,Silesia压缩语料库的“sao star”记录),OpenZL 显示出了显著的增益。通过解析结构化记录,将它们分割成字段(数组的结构),并应用领域感知变换,如差分编码,它实现了:

关键在于,与 zstd -3 相比,OpenZL 在保持或提高压缩和解压缩速度的同时展示了更好的压缩比。

 

用户可以使用简单数据描述语言(SDDL)或自定义解析器函数来描述他们的数据结构。然后,离线训练器使用预算化的变换选择搜索来生成最优的压缩计划。

 

与一些嵌入通用代码的实验性格式不同,例如用于解压缩的 WebAssembly,OpenZL 的方法将执行限制在确定性图上。这确保了可重现的解码,这是长期数据存档的关键属性。正如一位 Hacker News 记者指出的,虽然对 WebAssembly 进行沙箱化很容易:

 

真正的问题是确定性——对这些 WebAssembly 模块进行的函数调用可能仍然是非确定性的!

 

相比之下,OpenZL 的固定执行图保证了确定性的解压缩行为。

 

OpenZL 在结构化数据上表现最佳,如时间序列数据集、ML 张量和数据库表。在结构最小(例如,纯文本)的地方,OpenZL 智能地回退到使用 Zstd。Quantls Infinity 的研究员 Abelardo Fukasawa 强调了这一点,他说

 

它不是像 gzip 或标准压缩器那样对待每种格式都用一样的办法,而是使用 SDDL 适应数据的特定结构——通常在结构化负载上获得更好的比率和吞吐量。

 

该框架在GitHub上公开可用,供开发人员进行实验和贡献。

 

原文链接:

Meta Open Sources OpenZL: a Universal Compression Framework for Structured Data

2025-11-05 08:001

评论

发布
暂无评论
发现更多内容

电商秒杀系统

Dean.Zhang

联想YOGA 27 2022,超强配置全面升级

极客天地

程序员女友给我做了一个疲劳驾驶检测

华为云开发者联盟

人工智能 疲劳驾驶检测

ElasticSearch从入门到精通:基础知识

Jackpop

学习总结

ASCE

实践GoF的23种设计模式:装饰者模式

华为云开发者联盟

开发 对象 装饰者模式

全文手敲代码,教你用Java实现扫雷小游戏

华为云开发者联盟

Java

攻防演练中的防泄露全家福

穿过生命散发芬芳

6月月更 防泄露

全技术栈、全场景、全角色云原生系列培训重磅首发,助力企业打造硬核云原生技术团队

York

容器 云原生 IT建设 技术培训 开发运维

为什么一定要从DevOps走向BizDevOps?

阿里云云效

阿里云 DevOps 研发 BizDevOps

ElasticSearch从入门到精通:数据导入

Jackpop

ElasticSearch从入门到精通:常用操作

Jackpop

ElasticSearch从入门到精通:Logstash妙用

Jackpop

开源实习经验分享:openEuler软件包加固测试

openEuler

开源 操作系统 部署 openEuler 实习

“信任机器”为发展赋能

CECBC

Rust 如何实现依赖注入?

非凸科技

依赖注入 Trait 对象 编程语言‘ public

为什么越来越多的人选择云渲染?

Finovy Cloud

服务器 渲染 云渲染

Windbg调试工具介绍

dvlinker

c++ windbg 调试工具

HashMap分析-扩容

zarmnosaj

6月月更

盘点华为云GaussDB(for Redis)六大秒级能力

华为云开发者联盟

数据库 后端 华为云

数字货币:影响深远的创新

CECBC

居家办公没有“血泪史”| 社区征文

穿过生命散发芬芳

居家办公 6月月更 初夏征文

毕业设计

ASCE

激发新动能 多地发力数字经济

CECBC

做一个 Scrollbar 的思考

cssghost

远程办公期间,项目小组微信群打卡 | 社区征文

IT蜗壳-Tango

6月月更 初夏征文

一次革命、两股力量、三大环节:《工业能效提升行动计划》背后的“减碳”路线图

脑极体

如何使用物联网低代码平台进行服务管理?

AIRIOT

低代码 物联网 低代码开发平台 低代码,项目开发

NLP 论文领读|文本生成模型退化怎么办?SimCTG 告诉你答案

澜舟孟子开源社区

人工智能 自然语言处理 机器学习 nlp 文本生成

设计电商秒杀系统

流火

元宇宙可能成为互联网发展的新方向

CECBC

Meta开源OpenZL:一个通用的结构化数据压缩框架_大数据_Steef-Jan Wiggers_InfoQ精选文章