NPU稀疏执行:压缩格式与负载均衡的双重门槛
把大量权重剪成零,只改变了模型中的数值,并不自动缩短运行时间。NPU要从稀疏性中获益,既需要用合适的格式跳过无效计算,也需要避免少数高密度分块拖住整个并行任务。
第一道门槛是零值如何被编码和消费。若模型仍按稠密格式存放,执行单元也逐项相乘,零权重通常不会减少指令数。采用压缩表示以后,非零值之外还要保存位置索引、块指针或位图,读取端也需要解码。对低位宽权重,索引相对于数值本身的比例尤其容易增大。因此,判断压缩是否划算,应比较数值、元数据和对齐填充的总字节数,不能只用非零值数量乘以权重位宽估算存储收益。
结构化稀疏能够限制位置模式,降低任意索引带来的处理难度,但它要求模型满足指定分组方式。例如某些硬件支持每四个位置最多保留两个非零值,分组通常沿指定维度进行;全层恰好一半为零,并不等于每个合法分组都满足规则。这类约束属于具体后端,不能从其他加速器的支持情况推断本平台同样可用。转换阶段还应核对权重转置与打包次序,避免按逻辑维度检查通过,实际存储分组却不合要求。
即使格式合法,编译器也可能选择稠密内核,因为小矩阵的解码、打包或启动成本会抵消跳零收益。应查看最终内核选择记录,并把转换开销放到实际发生的阶段计入评估:离线打包不应重复算进每次推理,随输入变化的激活压缩则不能被忽略。精度也需单独验收,满足稀疏模式的强制剪枝可能损伤敏感通道。正确的对照是任务质量合格后比较端到端成本,而不是拿未达质量要求的稀疏模型追求速度。缓存压缩后的尺寸也应以最终设备产物为准,导出文件变小并不代表运行时不会重新展开。若装载阶段恢复成稠密权重,部署包节省的空间不能算成执行中的带宽收益。
第二道门槛是非零工作量在并行单元之间的分布。考虑多个处理单元各自执行一个稀疏分块,且必须全部完成才能进入下一阶段:总体时间更接近最慢分块的时间,而不是平均非零数量对应的时间。如果一部分块几乎为空,另一部分仍接近稠密,空闲单元可能无法自动接管繁忙单元的剩余工作。此时平均稀疏率很高,却仍会形成明显的屏障等待,运算省下的比例不能直接转成速度提升。
对这类NPU,应在剪枝和映射阶段观察非零数量的分块直方图,并按实际指令粒度统计,不能只看整层比例。可以给不同块设置密度约束,或在数据依赖允许时重排独立任务,使每个执行单元承担接近的工作量。更细的任务划分能够改善均衡,却会增加任务描述、索引访问和分发成本;集中式动态调度也可能受到分发吞吐限制。因此,粒度需要在不均衡损失与管理开销之间选择,越细并不必然越快。
激活稀疏的分布还随输入内容变化,不能用一张测试图片固定判断。应以代表性请求统计最繁忙分块、平均分块和完成时间的关系,并保留导致长尾的输入类别。比较静态映射与动态分配时,要同时记录搬运和调度成本,避免将等待减少误认为总开销下降。若目标硬件只支持固定结构模式,则应围绕该模式的实际执行单元评估,不应套用任意非零任务可自由迁移的假设。
稀疏加速需要两种匹配同时成立:编码适合硬件消费,工作量适合并行分配。只有元数据成本可控且长尾得到约束,较高零值比例才有机会转化为稳定收益。





