一句话定义:2:4 结构化稀疏(2:4 structured sparsity)是一种把每 4 个连续权重固定保留 2 个、另外 2 个置零的稀疏格式,硬件能按这个固定模式跳过零,直接加速矩阵乘(matrix multiplication)。
看个具体例子。假设一层权重按顺序排成 [0.1, 0.02, 0.9, 0.03, -0.5, 0.7, 0.01, -0.2]。2:4 规则要求每 4 个一组,每组只留绝对值较大的两个:第一组变成 [0.1, 0, 0.9, 0],第二组变成 [-0.5, 0.7, 0, 0]。名字里的「2:4」就是「宽度 4、非零 2」。
打个比方:食堂规定每 4 个餐盘里放 2 份菜,而且固定放在第 1、3 个位置。厨师不用看就知道哪两个盘子是空的,直接跳过。非结构化稀疏(unstructured sparsity)则是随机空盘,厨师每次都要翻看哪个盘空着,反而更慢。
硬件怎么加速?支持的 Tensor Core 可以把压缩后的权重——保留的值加少量位置索引——直接送进矩阵乘单元,跳过零的乘法。理论上乘加运算量减半,权重存储也能接近减半。索引开销很小,访存也规律,所以硬件愿意为它做专用电路。
非结构化稀疏为什么快不起来?它允许任意位置为零,稀疏率可以做到 90% 以上,理论上计算量更小。但零的位置不规则,硬件需要额外索引,访存跳来跳去,GPU 的并行线程经常要等最慢的那个;压缩、解压、负载不均衡都会吃掉收益。结果就是:理论稀疏率很好看,实际加速往往远低于预期。结构化稀疏牺牲灵活性,换来硬件友好。
| 对比项 | 2:4 结构化稀疏 | 非结构化稀疏 |
|---|---|---|
| 零的位置 | 每 4 个连续权重固定留 2 个 | 任意位置 |
| 硬件支持 | 专用单元可直接跳过零 | 通常靠通用指令和库,难直接加速 |
| 访存与索引 | 模式固定,索引小、访存规律 | 索引多,访存不规则 |
| 典型收益 | 计算量约减半,落地较稳 | 理论省很多,实际常打折 |
| 灵活性 | 低,需适配约束 | 高,可自由剪枝 |
对从业者,2:4 稀疏是一条比较现实的压缩路线。在支持的硬件上,用稀疏感知训练或后训练剪枝,再微调恢复精度,就可能换到吞吐和显存收益。但它不是万能:模型层要满足或适配 2:4 约束,对精度敏感的层可能不适合硬剪;在不支持该模式的硬件上,它可能退化成普通稀疏,甚至因为索引带来额外开销。对普通人,云端推理和端侧模型可能因此更快更省电,但具体支持情况要看硬件和推理框架的官方说明。
