一句话定义

中间张量(Intermediate Tensor) 是一个算子的输出交给下一个算子时,落在内存里的那块数据。中间张量压缩指这块数据不按原始精度存、也不按原始字节数搬,而是在写入内存前编码、读出时解码。

它压的对象既不是权重,也不是摄像头进来的那张图,而是网络内部流动的数据。

它解决什么问题

端侧推理的瓶颈常常不是算力,而是搬运。

权重 中间张量
什么时候用 每个算子读一次 每个算子写一遍、下一个算子再读一遍
大小由什么决定 模型结构,固定 输入分辨率、通道数、并发路数
压缩省的是 存储占用、首次加载时间 内存带宽、运行时峰值内存

权重可以慢慢读,中间数据必须马上写、马上读。一路视频跑检测网络,峰值内存里占大头的经常是中间张量而不是权重;同时跑检测、识别、属性几个模型时,几路数据一起抢同一条内存总线,表现就是掉帧、延迟抖动。

把这段数据压掉,省下的是带宽和峰值内存。代价是每个编解码动作本身要花算力和时间。

关键做法

难点不在「能不能压」,在「在哪压」。

  • 不是每条边都插一对编解码。 朴素做法是在每个算子之间都编码一次、解码一次,编解码次数一多,省下的搬运量被自己吃掉,甚至更慢。
  • 按子图放置。 把计算图切成若干块,只在块的边界编码,块内部一直用压缩格式流动,编解码次数随块数增长,而不是随边数增长。
  • 找「绝对支配点」。 arXiv 上的 Linear-Time Non-Local Codec Placement for Machine Learning Model Compression(编号 2610.14703)给出的判据是:把图的边染色,让每个诱导子图弱连通,并且存在一个节点,所有输入到出口的路径都经过它、它到所有输出也都要经过它。这个唯一的节点被作者称为绝对支配点(absolute dominator),是观察整块子图流量的位置,也是学习编解码参数的位置。
  • 放置算法对图规模线性。 图越大越需要这一点,否则每换一次模型都要重新算很久。
  • 和量化叠加,不互相替代。 量化改的是数值表示(FP16 变 INT8),编解码压的是字节流;两者都在省带宽,但一个在格式层,一个在图结构层。

论文报告的数字是:相对朴素的局部放置,四个模型上建模的操作数流量降低 24%–44%,其中 SigLIP 上 24%、SmolLM2 上 34%。

常见误区

  1. 「权重压到 4 位,内存和带宽问题就都解决了。」 权重只解释一部分占用。分辨率高、通道宽的网络,峰值内存和带宽常由中间张量决定。
  2. 「压缩比越高越好。」 解压要花时间。带宽本来就宽裕的设备上,压得越狠、净收益越可能是负的。
  3. 「论文里的百分比就是加速比。」 它衡量的是建模的操作数流量,不是端到端实测。落到具体芯片上,还要看有没有高效的编解码算子、能不能和前后算子融合。

参考

arXiv:2610.14703,Linear-Time Non-Local Codec Placement for Machine Learning Model Compression(2026-10-10),提出把编解码算子放入源计算图的线性时间放置算法,以「绝对支配点」作为学习编解码参数的位置。

延伸阅读

相关词条


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