一句话定义

结构化稀疏(structured sparsity) 指删参数时按硬件能高效处理的形状来删:整行、整列、整块,或者固定比例的 N:M 模式(每 M 个权重里保留 N 个)。删完剩下的权重排布依然规整,计算单元可以成块跳过、成块取数。

它对照的是非结构化稀疏:哪个权重不重要就删哪个,不管落在什么位置。后者能把参数删得更干净,但保留下来的位置是散的。

它解决什么问题

模型压缩有一个反复出现的落差:参数少了,推理不一定更快。

非结构化稀疏的账面上很漂亮,稀疏率可以报到 90% 以上,理论乘加次数降到十分之一。但落到真实设备上,省下来的算力常常被三件事吃掉:

  • 索引开销。 要知道哪些位置还有值,就得存一份索引,读索引本身也是访存。稀疏率越高,索引相对于有效数据的比例越大。
  • 不规则访存。 稠密矩阵可以按连续块读,一次搬运喂满向量单元;散落的非零值只能逐个小块去取,带宽利用率掉下来。
  • 跳过不等于省时。 很多推理框架对稀疏的支持是「按稠密路径算,只是乘的是零」,这样稀疏在时间上一分钱都换不到。

端侧的视觉模型和语言模型经常是内存带宽受限,而不是算力受限。带宽受限的场景里,"少算"本身不是目标,"少读"才是。结构化稀疏之所以有意义,就是因为它让读取的字节数真的变少,而且是以硬件喜欢的对齐方式变少。

关键做法

arXiv 上 2026 年 10 月的一篇工作(编号 2610.31897,方法名 S-SALAAD)把这几个环节绑在了一起:

  • 结构在训练中学出来,不是训完再剪。 权重、低秩分量、结构化稀疏分量在训练过程中一起学,避免「先训好再剪、剪完精度崩了再补训」这个来回。
  • 支持的是一族模式,不是一种。 不同芯片认的结构化形状不一样,所以框架里放了一组硬件兼容的稀疏模式,而不是固定成 2:4。
  • 压缩带预算。 给一个内存预算就压到那个预算,同一个 checkpoint 可以裁成几个不同的档位,而不是每档重新训一个模型。
  • 配套 kernel。 作者为 CPU 和 GPU 各写了能识别所学结构的算子,让稀疏在时间上兑现,而不是只体现在文件大小上。
  • 评测口径三项一起看。 在 Llama2 和 Qwen3 上,覆盖预训练和蒸馏两种来源,把困惑度、内存占用、推理延迟放在同一个帕累托前沿上比较,且跨多个硬件平台。

这篇工作要解决的问题很具体:此前已经有「稀疏 + 低秩」的路子,能让一个 checkpoint 弹性压到多个内存预算,但非结构化稀疏的索引开销和不规则访存,把压缩率换算成延迟时就失效了。S-SALAAD 补的正是这一段。

用不上的时候

  • 稀疏率不是加速比。 「2:4 稀疏」「50% 稀疏」说的是权重比例。同一个稀疏率,在不同芯片、不同推理框架上换来的时间差可以从零到接近理论值。
  • 形状要和硬件契约对齐。 芯片或编译器不认的稀疏模式,会被退回稠密执行。选型时问的是「这颗芯片的结构化稀疏指令支持哪些粒度」,不是「支不支持稀疏」。
  • 低秩分量不是白送的。 低秩那一支本身要做一次矩阵乘,rank 定得高,压缩收益被吃回去;定得低,精度靠稀疏那支补。
  • 稀疏要训练期介入。 这和量化不同——量化常常是拿到模型就能做的后处理,稀疏要改训练流程。工程成本要算进去。
  • 模型本来就没有冗余时,稀疏会把精度削穿。 一个已经压到很紧的小模型,再稀疏往往是净损失。
  • 弹性压缩换来的是版本管理成本。 一套权重裁多档,每档精度不同、要逐档验收。档位一多,"这家店跑的是哪一档"本身就成了运维问题。

参考

arXiv:2610.31897,Learning Structured Sparsity for Large Models: Bridging Model Compressibility and Efficient Inference(2026-10-22)。提出 S-SALAAD:训练时联合学习权重及其低秩与结构化稀疏分量,支持一族硬件兼容的稀疏模式,配合预算感知压缩与专用 CPU/GPU 算子,使单个 checkpoint 能在多个内存预算下高效推理;在 Llama2、Qwen3 上覆盖预训练与蒸馏,于困惑度、内存、延迟三项上推进帕累托前沿。

延伸阅读

相关词条


火眼识别提供端侧视觉引擎与设备管理平台,相关方案见 火眼识别官网。