写点什么

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:005022

评论

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

一文让你知道为什么电力行业需要堡垒机

行云管家

电力 等保 堡垒机

如何创建良好的数据模型?

NocoBase

低代码 数据模型 无代码

IROS 2020 OCRTOC比赛总结 - Team PHAI Robotics

阿里云天池

TDengine 签约协鑫鑫光,优化光伏数据管理

TDengine

nvme磁盘故障注入方法

天翼云开发者社区

nvme 磁盘 磁盘故障

三十分钟入门基础Go(Java小子版)

京东科技开发者

人工智能丨打造垂直领域内容的问答机器人

测试人

软件测试

利用Python和API接口获取1688商品列表数据的方法

tbapi

1688 1688API 1688商品列表数据接口 关键词搜索1688接口

Go语言手写本地 LRU 缓存

FunTester

深入探索:淘宝/天猫商品详情API返回值实战解析与应用

代码忍者

API 接口 API 测试

不只是前端,后端、产品和测试也需要了解的浏览器知识(二)

京东科技开发者

京东商品详情API:解锁数据分析与决策支持的新商业价值

代码忍者

京粉智能推广助手-LLM based Agent在联盟广告中的应用与落地

京东科技开发者

万界星空科技低代码云MES--快速实现数字化

万界星空科技

低代码平台 mes 云mes 万界星空科技 低代码云MES

打造垂直领域内容的问答机器人

霍格沃兹测试开发学社

俄罗斯加密货币挖矿合法化:重新定义全球挖矿行业的格局

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

一本小册子,咋就让IT人水灵灵地「由I变E」了?

脑极体

AI

【参赛总结】第二届云原生编程挑战赛-冷热读写场景的RocketMQ存储系统设计 - Ninety Percent 战队

阿里云天池

机器学习算法: 朴素贝叶斯(Naive Bayes)

阿里云天池

记一次 Python 应用开发频繁假死的问题

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言

CVPR 2021 ImageNet 无限制对抗攻击 TOP 4 (Advers) 方案分享

阿里云天池

【数梦工场】【智慧航空AI大赛】比赛分享

阿里云天池

一本小册子,咋就让IT人水灵灵地「由I变E」了?

白洞计划

AI

NFS v3及v4协议区别

天翼云开发者社区

云计算 NFS

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