AI芯片稀疏算力为何跑不满?负载均衡怎么拆?
扫描二维码
随时随地手机看文章
理论上跳过零值就能省算力,可很多稀疏加速器一上真模型,利用率却远没想象中高。AI芯片要把稀疏红利吃满,难点并不在于识别零,而在于元数据和负载波动会把省下来的乘法重新花在别处。
非结构稀疏最先带来的不是计算减少,而是索引和重排增多。权重或激活中哪些值非零,必须用坐标、位图或压缩段信息告诉硬件。若元数据格式过细,每跳过一个零都要多带一份描述,外存带宽和片上缓冲就会被额外信息侵占;若格式过粗,又会把本可跳过的空洞重新塞回计算里,稀疏率看着很高,真实收益却打了折。
负载失衡则是第二个更伤吞吐的瓶颈。阵列把任务均匀切给各个 PE 的前提,是每块工作量大致相当;可真实激活稀疏往往高度不均,某些 tile 非零很多,某些 tile 几乎空掉。结果是一部分 PE 仍在忙着做乘加和地址解码,另一部分 PE 已经闲着等同步点,整体吞吐被最忙的那一路锁死。
许多设计以为提高平均稀疏率就能稳定提速,实际上动态稀疏的波动比均值更要命。ReLU、门控和 MoE 路由都会让非零分布随输入变化,昨天好用的静态分块,换一批输入后就可能立刻变得失衡。若硬件没有一定程度的运行时重分配能力,编译器再精心离线安排,也很难覆盖所有输入形态。
对AI芯片而言,gather 和 scatter 往往是稀疏流水线里最难藏住的开销。为了只取非零值,前端需要做不规则读取,后端又要把结果按原顺序写回或送去下一层。这类访存不像稠密矩阵那样天然连续,一旦跨 bank、跨 cache line 或跨 NoC 跳数,省掉的 MAC 周期很容易被地址生成和重排等待吞回去。
因此稀疏映射更适合围绕可平衡的粒度来设计。块稀疏、结构化 N:M 或按通道裁剪,虽然从纯数学上少跳过了一些零,却能显著降低元数据复杂度并改善硬件负载整齐度。真正有效的做法不是盲目追最高稀疏率,而是追“硬件可稳定兑现的稀疏率”。
分析稀疏效率时,单看理论减算比没有意义。更要拆出元数据带宽占比、每个 PE 的忙闲离散度、重排等待时间和最终有效 MAC 占比。只要这些指标一展开,就能看出瓶颈究竟是编码太细,还是任务分配太散。
部署侧还要考虑稀疏模式是否稳定。若剪枝结构随模型版本、微调任务或输入域变化频繁波动,硬件上为某一类稀疏模式定制的映射收益会迅速缩水。某些方案在离线评估里很规整,一到在线推理遇到输入分布波动,非零分布就会重新聚团,先把少数 PE 和访存通道压满。若硬件没有快速重映射能力,稀疏率越高反而越容易出现局部饿死与局部拥塞并存的怪相,这类失衡很常见。把可迁移性算进方案优先级,往往比只追单模型峰值倍率更务实。
所以,稀疏算力跑不满,往往不是零值不够多,而是非零分布不够整齐。把元数据代价和负载均衡一起算清,稀疏加速才不会停留在纸面倍率上。





