Lossless Tensor Compression as Program Synthesis
Jieke Shi, Junda He, Wenjia Jiang, Weifeng Sun, Shidong Pan, Zhensu Sun, Chengran Yang, Peixin Zhang, Yifan Jia, Zhou Yang, Thong Hoang, Xiwei Xu, Zhenchang Xing, David Lo
James / Sherry
cs.SE, cs.AI, cs.PL
2026-08-03
Brevis 把无损张量压缩当成程序合成:为每个张量合成一段程序,执行后逐位还原。10 个 checkpoint 上 2.13 TB 压到 1.41 TB,比 ZipNN/DFloat11 都小。
Hugging Face 上现在托管着超过 15 PB 的数据,仓库数从 2020 年 4 月的 425 个涨到如今的 295 万。模型 checkpoint 越来越多、越来越大,归档、传输、部署的成本跟着水涨船高。有损压缩(量化、剪枝)会改权重,不能用于需要逐位还原的场景;无损压缩里,通用压缩器(zstd、gzip)把权重当普通字节流,看不到张量结构,而现有的张量专用压缩器(ZipNN、DFloat11)走的是固定、绑定格式的流水线,抓不住「重复区域」「浮点位平面」这类规律。
Brevis 想用一个更通用的框架吃下这些结构。
核心是把无损张量压缩表述成程序合成:给定一个张量,合成一段自包含的程序,执行后能逐位重建它。压缩产物就是这段程序,解压时直接跑程序,不需要搜索。
他们设计了一套类型化领域专用语言(DSL),核心是七个可逆算子:
搜索是目标导向的,从目标张量倒推:每个待填的「洞」都配上它必须生成的精确字节流,施加一个算子就把这个流分解成若干子输出,只有满足类型约束的分解才保留。为了引导搜索顺序,他们从一个小的代表性张量样本里学一个「产生式先验」(每个上下文下各算子的概率),据此做有界 A 搜索,g(s) 是累积代价,h(s) 是松弛语法下的可采纳估计。完整的候选程序再按实际序列化大小挑最小的。解压端只解析并执行程序,不需要先验、不需要搜索。
在 10 个公开 checkpoint(8 个 BF16、1 个 FP32、1 个 FP8,共 420 个分片、2.13 TB)上:
| 方法 | Llama-3.1-8B 归档 | 相对省 |
| zstd | 12.38 GB | 22.91% |
| ZipNN | 10.66 GB | 33.63% |
| DFloat11 | 10.90 GB | 32.16% |
| Brevis | 10.58 GB | 34.13% |
模型权重存储是 AI 基础设施里实打实的成本项,尤其是托管平台和大模型的分发。Brevis 把「找结构」交给程序合成自动发现,不依赖 ZipNN、DFloat11 那种锁死在固定浮点重排流水线上的做法。这让它能跨 dtype(BF16、FP32、FP8)、跨模态(语言、音频、图像生成模型)地工作,新结构出现时只要 DSL 能表达就能用。对工程师来说,这是一个可以直接接到现有 checkpoint 流水线里的无损层,省几个百分点在 PB 级别就是真金白银。
作者承认评估只覆盖公开 checkpoint,域和格式多样性有限;当前实现是逐张量独立合成的,跨张量合成还没做;加速器感知的解码也留给未来。
收益量级也要看清楚。相对 ZipNN 这种已经很强的专用基线,汇聚只多省 0.72%。对单个小模型这个差距微不足道,价值要堆在 PB 级托管和大批量分发上才显现。另外程序合成框架的能力直接挂钩 DSL 的表达力,遇到 DSL 表达不了的结构会回退到 Lit 兜底,优势就没了,论文没有详细报告这类回退占比。