微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 独立研究者开发的"小模型大压缩"系统:不靠超级AI,一台普通电脑也能超越顶级压缩工具

独立研究者开发的"小模型大压缩"系统:不靠超级AI,一台普通电脑也能超越顶级压缩工具

2026-05-11 16:52
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-05-11 16:52 科技行者

这项由独立研究者发表的研究成果以预印本形式发布于2026年4月,论文编号为arXiv:2605.02904,感兴趣的读者可通过该编号在arXiv平台查阅完整论文。研究成果的名称是StateSMix,一个听起来有点技术腔,但背后故事相当引人入胜的压缩系统。

说到文件压缩,大多数人脑海里浮现的可能是把一堆文件塞进一个zip包,或者用WinRAR生成一个rar文件。我们习以为常地认为,压缩文件不过是把数据"打包"一下,节省一点存储空间。但实际上,数据压缩是一门深刻的数学艺术——它的本质,是预测。

一、压缩的本质:预测就是压缩

这听起来有点绕,但用一个简单的例子就能说清楚。假设你在收一封朋友发来的信,信的开头写着"今天天气很好,我去公园……",你大概已经能猜出下一个字是"散步"、"玩耍"或者"遛狗",而不是"发射火箭"。正因为有这种预测能力,如果你和朋友事先约好"遇到可预测的词就用一个简短代号替代",那封信就能写得更短。这正是压缩的底层逻辑——模型对下一个符号的预测越准,就越能用更少的位数把它表示出来。

香农在1948年的信息论奠基之作中就证明了这一点:编码一个符号所需的最少位数,等于这个符号出现概率的负对数。换句话说,一件事情越"不出所料",描述它所需的信息量就越少。

沿着这条思路走了几十年,压缩工具从LZ77、gzip、LZMA,一路进化到了用神经网络做预测的现代方案。近年来,研究者们发现,像GPT这样的大语言模型,因为能极其精准地预测下一个词,理论上可以实现惊人的压缩比。Chinchilla 70B这个拥有700亿参数的巨型模型,在100MB的英文维基百科文本上,能把每个字节压缩到仅用0.664个比特来表示,远超任何传统工具。

但这里有一个巨大的代价:这些模型本身就重达几百GB,必须提前下载好、双方共享,才能用于压缩和解压。更要命的是,运行它们需要专业的GPU显卡,普通笔记本电脑根本跑不动。就像雇了一支交响乐团来伴奏,乐手的酬劳和乐器运费加起来比演出票价还贵。

这篇论文的出发点,就是要走另一条路:完全不依赖任何预训练的大模型,一切从零开始,用极小的资源,在普通CPU上实现超越顶级传统压缩工具的效果。

二、从零开始的"即学即用"压缩器

StateSMix的核心理念,可以用"边读边学"来概括。传统的神经网络压缩器把模型和压缩结果分开存放——模型是模型,压缩包是压缩包,解压时必须两样东西都有。而StateSMix的做法是:模型从完全空白开始,一边读取要压缩的文件内容,一边学习这个文件的统计规律,学到的知识被"隐式地烙印"在压缩结果里,根本不需要单独存储。

这就像一个速记员,在没有任何预习的情况下开始听讲座,随着讲座推进,他越来越能预判讲者下一句话要说什么,记录也越来越简短高效。等讲座结束,他的笔记本里不仅有讲座内容的压缩版,其中还暗含了他在这场讲座中学到的所有预测规律。

StateSMix的"速记员"核心,是一个叫做Mamba的状态空间模型(SSM)。相比近年来大红大紫的Transformer(也就是ChatGPT背后的基础架构),Mamba在处理序列数据时效率更高,因为它用的是一种类似"滚动记忆"的机制,而不是每次都回头看所有历史内容。研究者用了一个极其袖珍的版本:只有2层,隐藏维度仅32,加上词汇表相关的参数,每个文件大约只有12万个活跃参数——相比之下,GPT-3有1750亿个参数,这个模型连它的零头的零头都不到。

就是这样一个"迷你学徒",配合一套叫做"稀疏N元语法偏置"的辅助机制,组成了StateSMix的完整系统。

三、系统的四个工作阶段:从原始文件到压缩包

StateSMix处理一个文件,大致经历四个阶段,每个阶段各有分工。

第一步是把原始字节转换成"词元"(token)。StateSMix借用了GPT-NeoX的BPE分词方案,把连续的字节流切成有意义的片段。以英文维基百科为例,平均每3.3到3.5个字节对应一个词元。这套词汇表理论上有49152个不同的词元类型,但实际上任何一个文件里出现的词元种类都远少于此——一篇100MB的维基百科文本大约用到44298种,而一篇1MB的文本只用到18058种。StateSMix会为每个文件单独建立一个"紧凑映射",只保留实际用到的词元,这样模型的嵌入矩阵和输出矩阵就可以缩小到刚好合适的尺寸,计算量随之大幅减少。这个映射表本身用一种叫做Rice编码的技术压缩后存入文件头部,只需大约12KB。

第二步是初始化所有模型参数和辅助结构,包括Mamba的权重(从随机小值开始)和一系列N元语法哈希表。

第三步是最核心的"预测-编码-更新"循环。对于文件中的每一个词元,系统先用当前的模型对下一个词元给出一个概率分布,然后用范围算术编码(一种比霍夫曼编码更精确的编码方式,能逼近理论极限)把这个词元编码进输出流,编码完成后再把这个词元的真实身份告诉模型,让模型用它更新自己的知识。每积累32个词元,就对Mamba模型做一次梯度下降训练,更新参数。

第四步是序列化输出文件,把编码好的比特流、文件头信息和映射表打包成最终的压缩文件。

解压过程完全对称:解码器同样从头开始训练,逐词元地跑同样的预测-解码-更新循环,因为每次训练用的数据都是已经解码出来的真实词元,所以两端的模型状态始终保持同步,保证了正确还原。

四、Mamba的"滚动记忆":如何在极小体积内学会预测

Mamba的核心机制值得多花一点时间解释,因为它是StateSMix能跑得快、占内存少的关键所在。

经典的循环神经网络(RNN)像一个只有固定大小日记本的旅行者,每读一个新词,就更新日记,但翻回去看旧记录很费力。Transformer像一个有超强记忆力的学者,能同时回顾所有历史内容,但处理长序列时计算量呈平方级增长,代价极高。Mamba则走了一条中间路:它维护一个紧凑的"状态向量",每步根据当前输入动态决定"记住多少、忘掉多少"——这个比例是输入自适应的,而不是固定的。

在StateSMix里,Mamba的每一层都按照固定步骤运作。输入向量先经过层归一化稳定数值范围,然后通过一个投影矩阵分成两个分支:一个用于SSM核心计算,另一个用于门控。SSM分支先经过一个短程因果卷积(窗口长度4),再投影出三个关键参数B、C和Δ,它们都依赖当前输入,这正是Mamba"选择性"的来源。之后执行状态更新:每个状态维度有自己的衰减系数A,通过Δ缩放后决定旧状态保留多少;同时把新输入按B权重加进来;最后按C权重读出状态向量,得到当前时步的输出。两个分支的结果相乘(门控),再经过输出投影,加上残差连接后送入下一层。

整个模型的"工作记忆"是一个形状为2×64×16的浮点数数组,共2048个数,外加卷积缓冲区384个数。就这么一点点状态,在压缩英文文本时,竟然能逐渐学会词汇搭配习惯、句子结构模式,甚至某些语义关联。

Mamba各层参数的初始化也有讲究。衰减系数的对数初始值按log(1)、log(2)、...、log(16)排列,形成从快到慢的几何级数时间常数,鼓励不同状态维度专注于不同时间尺度的规律。跳连权重D初始化为1,让模型一开始有一个合理的"直通"基线。

训练用的是Adam优化器,学习率0.002,每32个词元的块训练一次。文件开头阶段训练迭代次数更多(前10块各训练8次,接下来20块各训练4次,之后固定为每块2次),因为模型刚刚"出生",需要快速热身。损失函数加入了标签平滑(平滑系数0.12),避免模型对训练数据过度自信。

五、N元语法的"精确记忆":用稀疏偏置补充模型的不足

Mamba学到的是统计规律和结构模式,但它无法逐字逐句地"死记硬背"所有曾出现过的精确上下文。这时候,N元语法表就发挥作用了。

N元语法(N-gram)是NLP领域的经典工具,核心思想极其简单:统计文本里连续N个词元的共现频率,以此预测下一个词。如果某个上下文"the quick brown"之后总是跟着"fox",那么下次遇到这个上下文,就大胆押注"fox"。N越大,上下文越精确,预测也越有针对性,但覆盖率越低(因为长序列重复出现的概率更低)。

StateSMix维护了从二元(bigram)到八元(8-gram)、再到十六元(16-gram)和三十二元(32-gram)共九张N元语法哈希表,每张表有2的24次方即1600万个槽位。每次遇到一个词元,就把这个词元对应各长度上下文的计数加一;预测时,把所有表中找到的计数转换成"对数偏置",叠加到Mamba给出的原始logit向量上。

叠加方式的设计颇为巧妙,借用了一个数学性质:softmax函数对向量做整体平移是不变的(因为分子分母同时乘以同一个常数,结果不变)。这意味着,N元语法的贡献只需要修改那些计数不为零的词元对应的logit值,计数为零的词元根本不用碰——稀疏更新,只动有数据的地方。这在计算上非常高效,因为对于自然语言文本,任何一个上下文后面真正出现过的词元种类通常只有5到30个,远小于总词汇量。

偏置的强度由公式δ = λ·log(1 + c/α)决定,其中c是该上下文后跟这个词元的历史计数,λ和α是控制强度和平滑度的超参数,不同N-gram阶数有不同的取值。十六元和三十二元表的α设得极小(0.001),哪怕只见过一次的长上下文也会产生很强的偏置——因为31个词元完全相同的上下文一旦出现过,后续几乎可以肯定是同一个延续,理应给予极强的确定性信号。

哈希表用线性探测方式解决碰撞,最多探测8个相邻槽位,有效减少了碰撞丢失;每个槽位存储完整的64位上下文键用于碰撞验证,加上一个稀疏计数数组(通常4到32个条目)。二元语法表则更简单,直接用前一个词元的编号做索引,完全没有哈希碰撞问题。

十六元和三十二元表的存在,专门针对一类长距离重复模式:维基百科文章里充斥着重复的引用格式、导航模板、页脚套路,往往跨越10到50个词元。Mamba的滚动记忆虽然通过训练能学到一些这类模式,但面对需要精确匹配的长字符串时,哈希表的"死记硬背"更为可靠。

N元语法的整体偏置强度还会根据Mamba的当前预测置信度动态调整。系统实时计算Mamba输出概率分布的香农熵——熵越高说明Mamba越没把握,此时N元语法的权重就调大,最高放大到2.5倍;熵越低说明Mamba胸有成竹,此时N元语法权重缩小到0.2倍,几乎不影响最终结果。这个机制确保两种来源的信息相互补充而非相互干扰。

六、其他辅助预测机制

除了Mamba和N元语法,StateSMix还有三个小助手进一步精调概率分布。

第一个是LZ哈希预测器,它记录"上上一个词元和上一个词元"这个二词组合之后最近出现的下一个词元,以及这个预测被证实的次数。命中次数越多,对应词元的logit偏置越大,最大趋近于1.5。这捕获了那些过于具体、N元语法表也未必能覆盖的"两对一"关联。

第二个是近因偏置,给最近出现的64个词元额外加分,越新近出现的词元奖励越高,模拟了"句子内部词语倾向于重复"的现象。

第三个是全局频率先验,根据整个文件中每个词元的总出现次数加一个平滑的基础分,给出模型热身阶段最初几步的合理起点。

所有这些来源的logit值加在一起,经过softmax归一化,得到最终的概率分布,送入32位范围算术编码器。算术编码器用整数量化的累积分布函数来编码每个词元,每个词元至少分配频率1防止零概率,量化精度T=65536,引入的冗余约为每词元0.6比特,相对于模型平均每词元6.8比特的预测误差是很小的开销。

七、实验结果:小模型,真的赢了

评测基准用的是enwik8,这是英文维基百科前若干字节的标准截取,压缩社区普遍使用它来对比不同工具的性能。对比基准是xz -9e,也就是LZMA2算法的极限预设,公认是不依赖GPU的通用压缩工具里最强的选手之一,在100MB的enwik8上达到1.989 bpb(每字节比特数)。

在1MB截取上,StateSMix压缩后是265370字节,对应2.123 bpb,比xz的2.326 bpb小了8.7%;在3MB截取上,StateSMix的805926字节对应2.149 bpb,比xz的2.271 bpb小了5.4%;在10MB截取上,StateSMix的2702498字节对应2.162 bpb,比xz的2.177 bpb小了0.7%。随着文件增大,优势在缩窄:在100MB的完整enwik8上,StateSMix以26622640字节、2.130 bpb输给了xz的1.992 bpb,差距约6.9%。

优势拐点大约在30MB左右。超过这个规模,LZMA的"字典匹配"开始全面发力——它能发现并近乎零成本地复制几KB长的完全相同字节块,而StateSMix的预测-编码架构无论预测多准,仍需逐词元编码,无法实现这种"整块搬运"的效率。实验证明,表饱和导致的损失只有约13KB,真正的瓶颈在于架构本身的局限。

压缩过程中的实时进展也很能说明问题。冷启动时每词元需要约8.1比特,50000个词元后Mamba已经热身,降到7.1比特;50万词元时N元语法表开始真正发力,降至6.9比特;300万词元时约6.83比特;此后趋于平稳,最终29700000个词元结束时稳定在6.813比特。

八、消融实验:各部件贡献几何

为了搞清楚哪个部件贡献了多少,研究者在3MB的enwik8截取上做了系统性的"拆零件"测试。

只保留全局频率先验(最简单的基准):1571738字节,4.191 bpb。

加上全部N元语法表但不用Mamba:1319045字节,3.517 bpb,比基准改善了16.1%,但仍远不及xz的851572字节。这说明没有好的基础模型,N元语法的"查字典"能力受限于底层分布的质量。

只用Mamba加频率先验、不用任何N元语法:840095字节,2.240 bpb,比基准改善了46.6%,并且已经以1.3%的优势超过xz。这是一个相当令人印象深刻的数字——一个只有12万参数、从随机初始化开始的微型模型,仅靠在线学习,就能超越一个历经数十年优化、专门针对文本压缩调参的成熟工具。

完整系统(Mamba加所有N元语法):805926字节,2.149 bpb,在纯Mamba基础上再降4.2%,最终比xz好5.4%。N元语法在Mamba之上提供了互补的精确记忆,两者合力效果超过任何一方单独工作。

对各N-gram阶数的单独分析揭示了一个有趣的分工格局。二元语法命中率超过99%(几乎每个位置都有数据),但平均每个上下文后面有约8种不同延续,预测能力有限。随着阶数增加,命中率急剧下降但预测精度大幅提升:八元语法命中率不足5%,但找到时平均只有约2种延续,接近确定性预测。十六元和三十二元表命中率极低(分别约1%和不足0.5%),一旦命中几乎完全确定下一个词元。移除任何单个阶数都会造成可测量的性能下降,移除二元语法造成的损失最大(约0.5 bpb),因为它的高命中率提供了最稳定的基础偏置。

九、性能与资源:普通硬件上的代价

StateSMix的速度和内存消耗是其主要局限,也值得正视。在100MB的enwik8上,单核速度约1100词元/秒,对应约400KB/s;4核OpenMP并行后提升至2000词元/秒,约700KB/s;完整压缩100MB需要约4.2小时。相比之下,xz的速度是10MB/s,gzip更是GB/s级别。

内存方面,九张N元语法哈希表合计占用约5.1GB,加上SSM参数和其他开销,峰值内存约6.1GB。不过得益于Linux的写时复制零页机制,实际物理内存占用正比于哈希表的实际负载率,未被访问的槽位不占实际内存。

75%的运行时间花在"每32个词元一次"的在线训练上,主要瓶颈是输出头的矩阵乘法:44298个词元乘以32维,每次前向和反向各需要约140万次乘加运算。OpenMP把这个循环并行化到多核,带来约1.9倍的加速。

实现完全用C语言完成,利用AVX2指令集做SIMD向量化,不依赖任何Python、CUDA或BLAS库,只需gcc加-O3 -march=native -mavx2 -mfma编译选项即可。

十、与其他系统的横向比较

把StateSMix放在更大的压缩工具谱系里来看,它的定位相当独特。

与传统工具比:xz、gzip、bzip2都不能学习文本的语义和句法规律,只能匹配字节层面的重复模式。StateSMix通过在线学习捕获了更高层次的规律,在中小文件上取得优势。

与PAQ/CMIX类上下文混合器比:PAQ8px能在enwik8上达到约1.27 bpb,CMIX v21能达到约1.17 bpb,都优于StateSMix,但它们需要极高的计算时间(每秒不足1KB),内存需求16到64GB,且部分版本需要GPU。StateSMix是这个方向上更轻量的实现,权衡点在于以稍差的压缩比换取更低的资源门槛。

与NNCP比:NNCP v3用在线训练的Transformer-XL实现约1.19 bpb,比StateSMix强很多,但它把模型权重(约10MB)存入压缩包,导致短文件时压缩包反而膨胀(在压缩enwik81M时实际输出约3.96 bpb等效),而StateSMix完全不存储模型,输出是真正自包含的。

与LLM型压缩器比:ts_zip用RWKV-169M实现约1.11 bpb,FineZip用LLaMA-3-8B实现约1.024 bpb,甚至还有最新的Nacrith用135M参数的SmolLM2实现0.939 bpb。它们在大文件上的压缩比远优于StateSMix,但都需要事先获取几百MB到几十GB的模型权重,并且通常需要GPU,解压同样需要相同的模型。StateSMix的优势在于零预训练、零外部依赖、纯CPU可用,是一个真正意义上开箱即用的自包含方案。

十一、理论支撑:为什么这样设计是合理的

研究者为StateSMix的几个核心设计选择提供了理论解释,值得简述。

Mamba的多尺度记忆来自状态向量不同维度的衰减率差异。衰减率的对数初始化为log(j+1),使得不同维度的记忆时间常数呈几何级数分布——有的维度只记住最近1到2步,有的能留存16步以上。因为步长Δ依赖输入,实际的有效记忆深度还会根据内容动态调整:内容变化剧烈时步长大(记得少),内容缓慢演变时步长小(记得多)。在线训练则进一步把这些时间常数调整到对当前文件最有用的配置。

N元语法的对数偏置叠加,理论上等价于贝叶斯更新。若把Mamba的概率分布视为先验,N元语法的计数证据构成一个似然函数,后验在对数空间的形式恰好是logit相加——也就是StateSMix实际做的事情。

从信息论角度看,总压缩长度等于真实熵加上每步的KL散度之和。Mamba降低了全局结构带来的KL散度,N元语法降低了精确局部模式的KL散度,LZ预测器和近因偏置降低了高度特定重复模式的KL散度,三者各攻一个方向。

与PPM(部分匹配预测)的关系也可以说清楚:把所有N-gram阶数的对数偏置加起来,近似等价于PPM的混合预测,只是权重是固定的λ而非PPM的转义概率。Mamba扮演了PPM背景语言模型的角色,相当于神经版的PPM-Z。与PAQ的关系则是:StateSMix的熵自适应缩放是PAQ上下文混合器的单权重简化版,PAQ用梯度下降学习每个模型的最优组合权重,StateSMix则用香农熵的解析函数近似。

十二、未来可能的方向

研究者在论文里列出了几个有潜力的改进方向,虽然尚未实现,但值得一提。

一个思路是在词元序列上先做Burrows-Wheeler变换(BWT,bzip2背后的技术),把上下文相同的词元聚集到一起,大幅放大N元语法表的有效命中率,这是让系统在大文件上也能保持竞争力的可能路径。

另一个思路是GPU加速,把输出头矩阵乘法和Adam更新搬到GPU上,理论上能把速度提升50到100倍,进而允许使用更大的模型(比如隐藏维度128、4层),在更可接受的时间内实现更好的压缩比。

还有一个思路是自适应N-gram权重,用类PAQ的在线元学习器动态调整各阶N-gram的权重,而不是固定的λ值,让系统能根据每个文件的统计特征自动调整。

混合预测-复制架构也是一个有趣方向:检测到重复的长词元序列时,跳过算术编码,直接用(偏移量, 长度)的方式引用历史内容,彻底绕过概率编码的开销,这正是xz在大文件上的核心优势所在。

说到底,StateSMix讲述的是一个关于"小而精"的故事。不靠庞大的预训练模型,不靠高端显卡,仅凭一个从空白开始、边读边学的微型神经网络,加上几张简单的统计计数表,在一台普通笔记本电脑上就能压缩得比深耕几十年的顶级工具还要好——至少在中等规模的文本文件上是这样。这说明,神经网络的在线学习能力本身就具备相当的实用价值,不一定非要先喂它海量数据才能派上用场。当然,它也并非万能:在超大文件上,LZMA"整块复制"的暴力优势目前还无法被这种逐词元预测的架构追上。但压缩比的差距正在缩小,方向清晰,路还很长。

对这项研究感兴趣的读者,可以通过论文编号arXiv:2605.02904在arXiv平台获取完整的技术细节,代码也已在GitHub开源,仓库地址在论文中有明确标注。

Q&A

Q1:StateSMix压缩时为什么不需要保存模型参数?

A:StateSMix的模型每次都从零开始训练,边读取被压缩的文件内容边更新参数,学到的知识已经"隐式地反映"在压缩结果的每个编码决策里。解压时只需按同样顺序重跑一遍相同的训练和解码流程,就能完整还原文件,不需要额外存储任何权重。

Q2:StateSMix在100MB大文件上为什么反而不如xz?

A:核心原因在于架构差异。xz的LZMA算法能发现并以近零代价"整块搬运"重复出现的多KB字节序列,而StateSMix必须逐个词元地预测和编码,无论预测多准都有固定开销。在大文件里重复长段落越来越多,xz的块复制优势就越来越明显,StateSMix的N元语法表也因哈希碰撞开始饱和。

Q3:StateSMix的6GB内存需求主要来自哪里?

A:主要来自九张N元语法哈希表,每张有1600万个槽位,共约5.1GB。不过在Linux系统上,从未被写入的槽位实际不会占用物理内存,所以真实内存消耗正比于文件的N-gram上下文种类数,通常远低于理论峰值。Mamba模型本身的参数只占约11MB。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-