Nacrith:基于集成上下文建模与高精度CDF编码的神经无损压缩 Nacrith: Neural Lossless Compression via Ensemble Context Modeling and High-Precision CDF Coding
135M参数语言模型+集成预测+高精度CDF编码实现最优无损压缩
前置知识
无损压缩(Lossless Compression)
无损压缩是一种数据压缩技术,使得原始数据能够从压缩后的数据中完全精确地恢复,没有任何信息损失。经典方法包括LZ77(利用滑动窗口内的重复字符串)、gzip/DEFLATE(结合LZ77和哈夫曼编码)、bzip2(基于Burrows-Wheeler变换)等。压缩率通常用比特每字节(bpb)衡量,原始数据为8.0 bpb,压缩到越低越好。无损压缩在文档归档、软件分发、医学影像等领域有广泛应用。
本文的核心目标是提升无损压缩性能,理解传统方法的局限性是理解神经压缩动机的前提。
算术编码(Arithmetic Coding)
算术编码是一种熵编码方法,将整条消息编码为$[0, 1)$区间内的一个实数。编码器维护一个范围$[low, high)$,每接收一个符号就根据该符号的概率分布将范围缩窄。概率越高的符号,缩窄后的范围越大,所需编码位数越少。与哈夫曼编码不同,算术编码不要求每个符号用整数位编码,因此能更接近香农熵的理论极限。解码器执行逆过程,从编码值中逐符号恢复原始消息。32位算术编码器将范围量化到$[0, 2^{32})$整数空间中进行实际计算。
Nacrith的核心编码机制就是算术编码,理解其工作原理是理解CDF精度瓶颈的关键。
累积分布函数(CDF)量化
算术编码需要将概率分布量化为整数CDF(累积分布函数)。给定词汇表大小$V$和CDF总和$T$,每个符号分配至少$MIN\_PROB=1$的概率计数以避免零宽度区间。CDF-16使用$T = 2^{16} = 65536$,而CDF-24升级到$T = 2^{24} = 16777216$。量化过程将连续概率$p_i$映射为整数计数$c_i = \max(1, \lfloor p_i \cdot (T - V) \rfloor)$,残差分配给最大概率符号。CDF精度直接影响压缩效率:精度越高,量化误差越小,压缩越接近理论熵率。
CDF-24精度升级是本文最重要的技术贡献,直接解决了大词汇表神经压缩的关键瓶颈。
香农熵(Shannon Entropy)
香农熵$H = -\sum_{i} p_i \log_2 p_i$衡量信息源的不确定性或信息含量。零阶熵$H_0$仅考虑单个符号的频率分布;$n$阶熵$H_n$考虑长度为$n$的上下文条件概率,能捕获更长的统计依赖关系。对于英文文本,$H_0 \approx 4.57$ bpb(基于字母频率),$H_2 \approx 2.49$ bpb(考虑二元组关系)。压缩算法的目标是使编码长度接近真正的条件熵,而真正的条件熵远低于低阶估计,因为自然语言存在长距离的句法、语义和语篇结构依赖。
论文通过压缩率低于传统Shannon熵界来论证神经语言模型能捕获字节级统计无法建模的长程依赖。
上下文混合(Context Mixing)
上下文混合是一种集成预测技术,将多个独立模型的预测结果通过加权组合合并为一个综合概率分布。PAQ/CMIX系列使用数百甚至数千个不同的上下文模型,每个模型从不同角度(字节级、字级、特定模式等)分析数据,然后通过神经网络或线性加权将它们的预测混合。权重通常采用在线学习算法(如指数权重算法)动态调整:对当前数据预测准确的模型获得更高权重。这种集成方法能捕获单一模型无法覆盖的多种统计模式,显著提升压缩性能。
Nacrith采用精简版上下文混合策略(仅混合LLM和N-gram两个模型),理解传统上下文混合的哲学有助于理解本文的设计选择。
Transformer语言模型(Transformer LM)
Transformer语言模型是一种基于自注意力机制的神经网络,通过因果(causal)方式预测序列中下一个token的概率分布。给定token序列$t_1, \ldots, t_n$,模型输出$P(t_{n+1} | t_1, \ldots, t_n) = \text{softmax}(Wh_n + b)$,其中$h_n$是位置$n$的隐藏状态。模型使用键值缓存(KV cache)存储注意力计算的中间结果,使得增量推理只需计算新token的注意力,已实现$O(1)$摊销每token开销。SmolLM2-135M是一个30层因果Transformer,具有135M参数和49,152个BPE词汇表。
Nacrith使用SmolLM2-135M作为核心概率模型,理解Transformer LM的工作方式是理解整个系统的基础。
研究动机
现有基于语言模型的无损压缩系统面临多重性能瓶颈。首先,大词汇表算术编码存在严重的CDF精度问题:以SmolLM2的49,152个token词汇表为例,使用CDF-16($T = 2^{16} = 65536$)时,最小概率占用$V \cdot MIN\_PROB / T = 49152 / 65536 \approx 75\%$的CDF范围,仅剩25%用于实际概率信息编码,导致每个token额外损失约2比特。其次,现有系统要么使用超大模型(FineZip的LLaMA-3-8B有80亿参数,Delétang的Chinchilla有700亿参数),要么需要精细调优(FineZip使用LoRA微调),限制了实际部署。第三,CMIX虽然在enwik9上达到0.86 bpb,但需要16-64 GB内存,且在小文件(如152 KB的alice29.txt)上仅达1.63 bpb,因为其2000多个上下文模型需要足够数据来适应。第四,所有已知的LLM压缩器仅支持纯文本,无法处理任意二进制文件,严重限制了应用场景。此外,基于PyTorch的推理引擎每token调度开销巨大,KV缓存滑动窗口需要完全重新评估,导致吞吐量极低。
本文的目标是本文的目标是构建一个实用的神经无损压缩系统,在保持优异压缩率的同时兼顾可访问性和通用性。具体而言,作者希望:(1)在标准基准上实现最优压缩性能,特别是alice29.txt(152 KB Canterbury语料)和enwik8(100 MB Wikipedia摘录);(2)使用小型预训练模型(135M参数,约500 MB权重)替代数十亿参数的大模型;(3)支持任意二进制文件的神经压缩,而非仅限纯文本;(4)在消费级GPU(如GTX 1050 Ti,4 GB显存)上可运行,每worker仅需约1.2 GB显存;(5)通过多GPU并行和高效KV缓存管理实现实际可用的吞吐量;(6)保持完全开源,促进可复现研究。
与已有工作不同的是,本文的独特切入角度是将预训练语言模型的强先验知识与轻量级在线自适应模型相结合,并深入解决大词汇表算术编码中的CDF精度问题。与CMIX依赖数千个从零开始在线训练的位级模型不同,Nacrith仅使用两个token级预测器(135M参数Transformer和1-4阶N-gram),但利用预训练LLM在语法、语义和世界知识上的强大先验,使N-gram模型仅需补充局部统计规律。更关键的是,作者首次明确量化了CDF-16精度瓶颈——$V/T = 75\%$的范围浪费——并提出CDF-24升级方案将此降至$0.29\%$,消除约2比特/token的量化损失。此外,Nacrith是第一个通过NC06混合格式处理任意二进制文件的LLM压缩器,结合置信度跳过机制实现计算效率与压缩质量的协同优化,填补了神经压缩在实用性上的空白。
核心方法
Nacrith的整体架构遵循Shannon确立的'压缩等价于预测'原则,通过集成多个预测模型为每个token生成精确的概率分布,然后用算术编码器将概率转化为压缩比特流。系统的核心由三层组成:(1)预训练Transformer语言模型SmolLM2-135M,提供强语义先验;(2)轻量级在线N-gram模型(1-4阶),快速适应文档局部统计;(3)自适应上下文混合器和偏置头,动态融合并修正预测。解压过程是压缩的镜像:相同的集成系统生成完全一致的预测序列,算术解码器从压缩比特流中逐token恢复原文。所有组件都是确定性的,在相同硬件和软件配置下保证完美无损重建。对于非文本文件,NC06混合格式将输入分为文本区域和二进制区域,分别用神经压缩和传统编解码器处理。大文件通过NC05/NC06容器格式的并行分块机制在多GPU上并发压缩。
Nacrith的核心创新在于三个层面的协同设计。第一,CDF-24精度升级从根本上解决了大词汇表神经压缩的量化瓶颈:CDF-16下$V = 49152$个token的最小概率占用$75\%$的CDF范围,升级到$T = 2^{24}$后降至$0.29\%$,每token量化损失从约2比特降至$0.004$比特,这是对算术编码精度的根本性提升。第二,置信度跳过机制揭示了一个反直觉的发现:集成系统的主要改进并非来自混合器的加权平均,而是来自N-gram模型对高置信度token的直接编码。当N-gram的Shannon熵$H(p_{ng}) < \tau = 1.5$比特时,token足够可预测,直接使用N-gram预测跳过LLM推理,贡献了A2到A3阶段约$0.39$ bpb改进中的绝大部分。第三,NC06混合格式通过智能分段(可打印ASCII为文本,其余为二进制,短文本段降级,小二进制间隙桥接)首次将LLM压缩扩展到任意二进制文件,且二进制块使用LZMA或gzip高效压缩。这三个创新分别解决了精度、效率和通用性三个维度的核心问题。
方法步骤详情
Nacrith的压缩流程如Algorithm 1所述,包含以下关键步骤。首先,输入文本被分词为token序列$(t_1, \ldots, t_n)$,使用HuggingFace分词器(而非llama.cpp的内建分词器,因为后者对47个空白和重复token会静默丢弃内容)。然后初始化LLM的KV缓存、N-gram模型、上下文混合器和自适应偏置头。对于每个位置$i = 1$到$n$,执行以下操作:(1)N-gram模型基于已见token预测$p_{ng}$;(2)计算N-gram预测的Shannon熵$H(p_{ng})$,若低于阈值$\tau = 1.5$,则跳过LLM直接使用$p_{ng}$;(3)否则运行LLM前向传播得到$p_{llm}$,通过自适应头调整为$\tilde{p}$;(4)将最终概率通过CDF-24量化为整数CDF:$c_i = \max(1, \lfloor p_i \cdot (T - V) \rfloor)$,残差$T - \sum c_i$加到最大概率符号上;(5)算术编码器用缩窄后的CDF区间编码当前token $t_i$;(6)更新N-gram计数、混合器权重和偏置头。当上下文超过2048 token时,使用llama.cpp的`kv_cache_seq_rm`和`kv_cache_seq_shift`原生操作滑动窗口,每滑动仅需19ms而非693ms的完全重建。最终返回算术编码器的压缩输出。
技术新颖性
Nacrith的技术新颖性体现在多个层面。首先,CDF-24精度升级首次明确量化并解决了神经压缩中的CDF范围浪费问题——这是一个在所有基于算术编码的LLM压缩器中普遍存在但未被识别的系统性瓶颈。作者精确计算了$V/T = 75\%$的范围损失,并证明升级到$2^{24}$即可将其降至$0.29\%$,同时保持32位算术编码器的数值安全性(最小符号宽度$R \cdot MIN\_PROB / T \geq 2^{31}/2^{24} = 128$,远高于表示阈值)。其次,置信度跳过机制的设计逻辑新颖:作者发现N-gram模型的贡献几乎完全通过跳过通道实现,而非传统上下文混合中的权重加成——指数权重更新在几十个token内将次要模型权重压至$< 10^{-300}$,混合器实质上成为LLM预测的直通路径。这揭示了预训练LLM与简单统计模型之间的巨大质量差距。第三,NC06混合格式是首个支持任意二进制文件的LLM压缩方案,通过智能文本/二进制分段(包括短文本降级、小间隙桥接等启发式规则)将神经压缩的适用范围从纯文本扩展到通用数据。第四,llama.cpp推理后端的集成实现了约7倍的单token解码加速,原生KV缓存滑动窗口实现37倍每滑动加速,使135M参数模型在消费级GPU上达到实际可用的吞吐量。
实验结果
Nacrith在多个基准上实现了最优压缩性能。在alice29.txt(152,089字节,Canterbury语料)上,Nacrith达到0.918 bpb(11.5%原始大小),相比gzip(2.851 bpb)提升3.1倍,相比bzip2(2.273 bpb)提升2.5倍,相比CMIX v21(1.635 bpb)提升44%,相比ts_zip(约1.142 bpb)提升20%。值得注意的是,0.918 bpb低于该文件的零阶(4.568)、一阶(3.419)和二阶(2.485)字节级Shannon熵界,表明神经语言模型捕获了远超字节级三元组统计的长程依赖。在enwik8(100 MB Wikipedia摘录)上,Nacrith达到0.9389 bpb(11,737,280字节,11.74%),是所评估系统中最优结果,相比ts_zip(约1.11 bpb)提升15%,相比FineZip(1.024 bpb)提升8%,且使用的是60倍更小的模型且无需微调。在现代英语散文样本上,压缩率进一步降至0.63-0.76 bpb(7.9-9.5%),接近Chinchilla 70B在enwik9上的0.664 bpb。为控制训练数据污染,作者在2025年10月发布的UK Government文档(SmolLM2 2024年10月发布,确知不在训练集中)上评估,Nacrith达到0.723 bpb,相比ts_zip提升25%,相比CMIX提升37%,证明压缩质量非单纯记忆结果。消融研究表明,CDF-24贡献最大改进(-0.52 bpb,-28%),置信度跳过与N-gram贡献第二大改进(-0.39 bpb,-30%),自适应头提供小幅稳定提升(-0.015 bpb,-1.1%)。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| Canterbury语料alice29.txt压缩(152 KB) | 比特/字节(bpb) | 0.918 | gzip 2.851 / bzip2 2.273 / CMIX v21 1.635 / ts_zip 1.142 | 相比gzip 3.1× / 相比bzip2 2.5× / 相比CMIX 44% / 相比ts_zip 20% |
| enwik8 Wikipedia摘录压缩(100 MB) | 比特/字节(bpb) | 0.9389 | gzip 2.916 / xz 1.989 / FineZip 1.024 / ts_zip 1.11 | 相比gzip 3.1× / 相比FineZip 8% / 相比ts_zip 15% |
| 分布外评估(2025年英国政府文档,333 KB) | 比特/字节(bpb) | 0.723 | CMIX v21 1.148 / ts_zip 0.964 / FineZip 0.977 | 相比CMIX 37% / 相比ts_zip 25% / 相比FineZip 26% |
| 现代英语散文压缩(3-100 KB样本) | 比特/字节(bpb) | 0.634-0.764 | 无直接可比基线(Chinchilla 70B在enwik9上0.664) | 接近70B参数模型水平,使用仅135M参数 |
| 推理速度(GTX 1050 Ti单worker) | tokens/秒 | 50-70(起始)/ 20-30(稳态) | PyTorch版本约3-4 tok/s | llama.cpp后端约7×加速,3 worker并行达60-90 tok/s |
局限与改进
论文承认了多项局限性。第一,吞吐量仍然较低:在GTX 1050 Ti上仅约21 tokens/s,相比传统压缩器慢数个数量级,仅适合归档应用,实时使用需要现代硬件。第二,模型开销问题:约500 MB的GGUF模型权重必须在压缩和解压两端可用,虽然这与其他LLM压缩器(如Delétang的140 GB Chinchilla权重)遵循相同惯例,但在小文件场景下开销比例显著。第三,训练数据污染风险:Alice in Wonderland、莎士比亚文本和Wikipedia(enwik8)几乎肯定存在于SmolLM2的训练数据中,可能虚高压缩率。尽管OOD评估(0.723 bpb)表明效果有限,但跨领域更广泛的OOD评估将更有说服力。第四,上下文窗口限制:2048 token的窗口无法捕获超长距离依赖,非常长的文档在窗口边界附近压缩效率可能下降。第五,语言特异性:SmolLM2-135M主要在英语文本上训练,其他语言特别是低资源语言压缩效果将明显下降。此外,作者未提供Shakespeare(asyoulik.txt 1.304 bpb)上的详细分析,且CDF-24的精度改进在小词汇表场景下可能不显著。
独立分析的弱点
独立分析发现以下关键弱点。首先,置信度跳过机制虽然有效,但阈值$\tau = 1.5$是经验标定的,缺乏理论依据或自适应调整机制:不同文本类型、不同领域的最佳阈值可能差异显著,静态阈值在分布偏移场景下可能导致次优决策。其次,上下文混合器的指数权重更新在实践中迅速收敛到$w_{llm} \approx 1.0$,这意味着N-gram模型实际上未参与混合预测,混合器设计存在过度工程化的问题——一个简单的直接跳过选择可能达到相同效果。第三,NC06混合格式的文本/二进制分段使用硬编码启发式(如64字节阈值、8字间隙桥接),缺乏自适应能力,对混合内容文件(如HTML+嵌入式二进制)可能产生次优分段。第四,实验仅在单一GPU型号(GTX 1050 Ti)上进行,缺乏跨硬件(不同架构、不同显存、不同驱动版本)的可复现性验证,且浮点确定性依赖完全相同的硬件和BLAS库,限制了实际部署场景。第五,论文未提供压缩时间的绝对值(仅给出tokens/s),使得与传统压缩器的时间效率对比不明确。
未来方向
作者提出了三个未来方向,基于现有成果还可延伸更多。作者方向:(1)使用更大上下文模型如SmolLM2-360M或SmolLM2-1.7B配合8K-32K上下文窗口,可能同时提升压缩率和N-gram模型的长程建模效果;(2)INT8或INT4量化(如ts_zip的8位RWKV)可降低显存并提升吞吐量,概率质量退化极小;(3)用非对称数字系统(ANS)替代算术编码可提升编码速度。可延伸方向:(4)自适应置信度阈值:基于在线统计动态调整$\tau$,可能在不同文本类型间获得更一致的性能;(5)多语言支持:通过多语言预训练模型或语言检测+语言特异模型切换,将压缩能力扩展到非英语文本;(6)上下文窗口外推:探索位置编码外推或滑动窗口注意力机制处理超长文档;(7)流式压缩:支持不需全部输入即可开始压缩的在线模式,适用于网络传输场景;(8)与传统编解码器的混合策略:对LLM置信度低的区域动态切换到gzip/zstd,可能在通用性上超越NC06的静态分段。
复现评估
Nacrith的可复现性较好。代码完全开源,托管在GitHub(https://github.com/robtacconelli/Nacrith-GPU),消除了黑盒问题。模型使用HuggingFace上的公开模型SmolLM2-135M,GGUF格式权重约500 MB可直接下载。算力要求相对亲民:仅需GTX 1050 Ti(4 GB显存,2017年消费级显卡),每worker约1.2 GB显存,3个worker可并发。实验使用标准化基准(Canterbury语料、enwik8),便于直接对比。主要复现挑战在于:(1)浮点确定性要求完全相同的GPU架构、BLAS库和驱动版本,跨硬件精确复现困难;(2)论文使用llama.cpp作为主推理后端,PyTorch仅作为备选,需额外配置llama-cpp-python绑定;(3)多GPU并行实验需要至少4 GB显存的多卡环境;(4)OOD评估使用的UK Government文档托管在Zenodo(doi:10.5281/zenodo.18732365),但需要额外下载和处理。总体而言,对于具备基础深度学习环境的研究者,复现难度为中等。
论文图表