PixelPrune: Pixel-Level Adaptive Visual Token Reduction via Predictive Coding

作者:Nan Wang, Zhiwei Jin, Chen Chen, Haonan Lu(OPPO AI Center) arxiv2604.00886(NeurIPS 2026 preprint,2026-04) 代码github.com/OPPO-Mente-Lab/PixelPrune


TL;DR

文档和 GUI 场景下,视觉 token 数量极度膨胀(DocVQA 一页图约 14,000 个 patch),而在 NaViT 架构下 vision encoder 在 4K 分辨率时吃掉 72–86% 的 prefill 时间——过去所有只优化 LLM 的 token reduction 方法都错过了真正的瓶颈。PixelPrune 的洞见是:文档/GUI 图像里 22–71% 的 patch 是 pixel-unique 的,其余都是另一个 patch 的精确像素拷贝。它把 PNG/JPEG-LS 的 predictive coding 思想搬到 patch 粒度,沿光栅序用三个 causal 邻居做 median-edge 预测,命中则丢、未命中则保留。方法完全在像素空间、零学习参数、严格 $\tau=0$ 下像素级无损、在 ViT 之前执行因而贯穿整条推理流水线。在 Qwen3-VL 2B/4B/8B 上,training-free 文档评测几乎不掉点,GUI 任务在一次 light KD 后追平 Full;端到端 TTFT 最快 4.2×、训练 wall-clock 1.9×、KV cache 省 45–63%。

核心贡献

  1. 量化了 doc/GUI 图像的像素级冗余(22–71% pixel-unique),把"白边很多"从直觉变成可测信号。
  2. 把无损压缩的预测编码搬到 patch 层:Pred-2D 用三个 causal 邻居(左/上/左上)做 median-edge 预测,$O(N)$ 常数/patch,$\tau=0$ 时可 GPU 向量化。
  3. pre-ViT pruning 的架构合法性论证:VLM 空间信息由位置编码(2D RoPE + MRoPE)携带,不依赖序列顺序,保留坐标即可在 ViT 前剪枝。
  4. 两条理论保证:Prop. 1 给出 $\tau=0$ 时严格可重构;Prop. 2 给出 $\tau>0$ 时逐 patch 误差不累积(关键 trick:encoder/decoder 都用预测值而非原值做后续邻居)。
  5. 端到端系统收益:TTFT 3.0–4.2×、训练 1.9×、KV cache 省 45–63%,selector 开销 0.1–0.3%。
  6. 三种训练范式全覆盖:training-free(文档)、post-training KD(GUI)、from-scratch(展示"压缩训练 ≈ 隐式正则")。

报告结构

  1. 引言与动机
  2. 方法:基于预测编码的 patch 剪枝
  3. 实验:精度与有效性
  4. 效率分析、消融与结论
  5. 附录要点
  6. 开放问题与落地启示

1. 引言与动机

1.1 问题背景:高分辨率场景下 VLM 的算力困境

Vision-Language Models(VLM)在多模态任务上已经全面开花,但它的开销几乎完全由视觉 token 数量决定——不论训练还是推理。这个问题在文档理解GUI 交互两类场景下被放大到了不可忽视的程度:为了识别细小的正文字符、图标和 UI 控件,这些任务天然要求高分辨率输入。更糟的是,Qwen-VL 系列所代表的 NaViT-style 编码器会按原生分辨率处理图像,单张图就能吐出上万个 patch。作者给了一个具体数字:DocVQA 里一页典型文档预处理后约为 1775×2082 像素,在 $p{=}16$ 的设定下产出 14000+ 个 ViT patch,即使经过 $2{\times}2$ 的 patch merger 之后,仍有约 3600 个 LLM token——而多页文档和多步 GUI 会话把这个数字再乘上若干倍。

1.2 被忽视的瓶颈:Vision Encoder 本身

过去一两年里针对 VLM token reduction 的研究,主角几乎都是 LLM 侧的 token——projector 压缩(Q-Former、TokenPacker)、ViT 之后 LLM 之前的剪枝合并(LLaVA-PruMerge、DivPrune),或是 LLM 内部按 decoder attention 剪枝(FastV、ZipVL、PyramidDrop)。这些方法隐含一个假设:LLM prefill 才是大头。这个假设在低分辨率、fixed-resolution 的 LLaVA 类架构上成立,但在 NaViT 架构下就不再成立。

作者用 Fig 2 把这件事讲得非常直白:Qwen3-VL 的 2B/4B/8B 三档模型,在五档分辨率(256² 到 4096²)下的 prefill latency 被拆成 Vision Encoder(ViT + Patch Merger)和 LLM prefill 两部分。在 4096² 下,Vision Encoder 分别占到总 prefill 时间的 86%(2B)、72%(4B)、75%(8B)——也就是说,对 2B 这种小模型来说,视觉编码器几乎吞掉了所有的 prefill 时间;即便到 8B,它依然是主要开销。而且这个比例会随分辨率增长继续变大,因为 ViT 的 self-attention 开销对 patch 数量是平方级的。

Fig 2: Qwen3-VL 2B/4B/8B 在 256²–4096² 五档分辨率下的 prefill 耗时拆解。红色是 Vision Encoder(ViT + Patch Merger),蓝色是 LLM prefill。4096² 下视觉编码器分别占 86%/72%/75%,高分辨率场景下 ViT 完全主导了 prefill。

结论是清楚的:只在 LLM 侧做文章,对小中型 VLM 的高分辨率场景根本救不了总延迟。真正需要被压缩的是进入 ViT 之前的 patch 序列。

1.3 关键 insight:像素级冗余本身就是强信号

PixelPrune 的核心观察切得非常浅——不需要语义、不需要 attention、不需要任何学习过的表征:文档图像被大片白边、均匀页面背景主导;GUI 截图被大块单色面板、工具栏、状态栏占据。这些区域对应的 patch 在原始像素层面就是逐点相同的副本。作者在 Appendix 里统计了跨文档和 GUI benchmark 的结果:每张图里只有 22%–71% 的 patch 是 pixel-unique 的,其余全是另一个 patch 的精确复制。

Fig 1 把这个直觉可视化:在一张文档图上 PixelPrune 可以砍掉 70% 的 token;在一张 GUI 截图上更是可以砍掉 93% 的 token——保留的彩色 patch 集中在文字和图标周围,被丢掉的灰色 patch 大面积分布在背景和面板上。

Fig 1: PixelPrune 的 patch 选择结果。左为文档图,右为 GUI 截图。保留的 patch 维持原色,被剪掉的 patch 灰化。文档图上可砍 70% 的 token,GUI 截图上可砍 93%。

1.4 方法定位:ViT 之前而非之后

PixelPrune 借用了 PNG、JPEG-LS 这类无损压缩格式背后的 predictive coding 原理:每个 patch 都从它的因果空间邻居(左、上、左上)被预测;如果预测值在阈值 $\tau$ 内匹配,就把这个 patch 丢掉,否则保留。这个过程:

作者的端到端收益是 4.2× 推理加速1.9× 训练加速

1.5 相关工作中的定位

§2 把相关工作分成了三条线索,PixelPrune 相对每一条都有明确差异:

  1. ViT 内部的 token reduction:DynamicViT、EViT、ToMe 都在 ViT 中间 feature 上做剪枝或合并,必须先 forward 才能决策。最接近的是 RLT,它把 run-length encoding 用到视频 Transformer 的时间维度;PixelPrune 把这个思路升到 2D 空间域,并且发生在 ViT 之前

  2. VLM 各阶段的 token reduction:projector-based(Q-Former、TokenPacker)、post-ViT(LLaVA-PruMerge、DivPrune)、inside-LLM(FastV、ZipVL、PyramidDrop,且大多依赖显式 attention 权重,与 FlashAttention 冲突)、multi-stage(MustDrop、LUVC)。IPCV 更进一步压缩了 ViT 中间 feature,但仍要过早期 ViT 层。所有这些都留下了完整 ViT encoder 的开销——而这恰是小中型 VLM 的 prefill 大头。

  3. 文档与 GUI 专用模型:mPLUG-DocOwl、TextMonkey、GOT-OCR 靠 cropping/tiling 处理高分辨率,反而让 token 数变多。IndexPrune 也在 ViT 前剪枝,但要训练一个受 OCR 标注监督的 neural predictor。GUI 侧的 ShowUI 在 spirit 上最接近——同样利用 GUI 图像的空间冗余——但它在 ViT self-attention 内部做 token skipping,还是要过一遍编码器。PixelPrune 和它们都不同:像素级、零参数、零标注、ViT 之前

1.6 简短批判:motivation 够硬吗?

优点很明确:

可以追问的地方:

总的来说,"ViT 在高分辨率下是新的 prefill 瓶颈 + 文档/GUI 图像有大量像素级重复"这组事实,确实为"在 ViT 之前做 patch 级剪枝"提供了合格的动机;剩下的交由方法和实验部分验证。

2. 方法:基于预测编码的 patch 剪枝

本节对应原文 §3,分三小节展开:§3.1 铺垫 ViT 的 patch 输入结构并说明"为什么 pre-ViT 去除 patch 在架构上是合法的";§3.2 给出 PixelPrune 的核心——把无损图像压缩里的 predictive coding(预测编码)从像素层面抬升到 patch 块层面,并设计 Pred-2D 规则;§3.3 用两个命题给出精确/近似两种重构保证。

2.1 Preliminaries:ViT 的 patch 网格与位置解耦

以 Qwen3-VL 为代表说明 VLM 视觉侧的处理流水线。输入图像被切成 $N = (H/p)\times(W/p)$ 个互不重叠、大小为 $p\times p$($p=16$)的 patch。每个 patch $P_i$ 经线性投影得到 $D_v$ 维 embedding $\mathbf{e}_i$,并携带自己的二维网格坐标 $\mathbf{p}_i=(r_i, c_i)$;这个坐标通过插值后的绝对位置编码以及 2D RoPE 注入。序列 $\{(\mathbf{e}_i, \mathbf{p}_i)\}_{i=1}^{N}$ 经过 $L_v$ 层 ViT(每层注意力成本 $O(N^2 D_v)$),再由 Patch Merger 在空间上做 $M\times M$ 聚合($M=2$,且在某些中间层有 DeepStack merger),得到 $N_m = N/M^2$ 个视觉 token,和 $T$ 个文本 token 拼接后送入 LLM;LLM 端通过 MRoPE 给每个视觉 token 指派一个三维坐标(时间、高、宽)。

关键结构性事实:整条管线里,空间信息由位置编码而非序列顺序承载。这意味着只要把保留下来的 patch 连同其原始坐标一起喂给模型,丢弃一部分 patch 在架构上就是合法操作——这是 PixelPrune 能在 ViT 之前就剪枝而不破坏空间语义的前提。

2.2 PixelPrune:把预测编码搬到 patch 上

动机与借鉴源

文档、UI、图表类图像有大量像素级冗余:白底、纯色留白、重复控件会产生许多逐像素相同的邻接 patch。作者直接借鉴无损图像压缩中 PNG、JPEG-LS(LOCO-I 算法)的经典思路——用已访问过的空间邻居预测当前像素,只编码残差;残差多半为 0 或很小,因此易压缩。PixelPrune 把"像素"替换成"patch 块":如果残差恰好为 0(即某个 patch 与它的预测完全一致),就把这个 patch 整个丢掉。

具体地,PixelPrune 工作在 $Mp\times Mp$ 像素块上(对 Qwen3-VL 即 $32\times 32$),每块恰好对应 Patch Merger 之后的一个 LLM token——这是最小可独立剔除单元。扫描是固定顺序的,每个块都只用其 causal 邻居(已被访问过的位置)做预测,若预测命中则丢弃。

剪枝判据(Matching Criterion)

对每个 patch $P_{r,c}$,omit 指示函数为:

$$\text{Omit}(P_{r,c}) = \mathbb{I}\!\bigl[\,\text{dist}(P_{r,c},\, \hat{P}_{r,c}) \le \tau\,\bigr]$$

其中 $\tau\ge 0$ 控制匹配严格度。默认 $\tau=0$,即严格像素等同(直接按 pixel-space 比较,不是 embedding 空间!):仅当一个 patch 和它的预测逐像素完全相同时才丢弃,对应严格的无损压缩语义。论文显示这种最保守的设置在文档/GUI 上就能砍掉 30–80% 的 token。近似匹配 $\tau>0$ 作为扩展在 §3.3.1 中处理(下文再展开)。左上角 patch $(0,0)$ 没有 causal 邻居,被强制保留为初始锚点。

Pred-2D:三邻居 median-edge 规则

作者给出三种预测策略,共享同一个预测编码骨架,仅在扫描顺序和预测规则上递进:

Fig 3: Pred-2D 的三 causal 邻居 A(左)/B(上)/C(左上)与目标 patch X 的几何关系;根据 C 与 A、B 的一致性,从 A 或 B 中选出最可能匹配 X 的预测 X̂

$$\hat{P}_{r,c} = \begin{cases} A & \text{if } C = B \neq A \quad (\text{上与左上一致} \Rightarrow \text{取左}) \\ B & \text{if } C = A \neq B \quad (\text{左与左上一致} \Rightarrow \text{取上}) \\ A & \text{otherwise(默认取左)} \end{cases}$$

直观理解:左上 $C$ 是一个"探针"——若 $C$ 与上邻 $B$ 一样而与左邻 $A$ 不同,说明在当前行存在一条垂直边界(上半平面属于一类、左半平面属于另一类),那么 $X$ 更可能延续的趋势;反之则沿走;无明显信号时 fall back 到左邻。这是经典 MED(Median Edge Detector)对"水平边 / 垂直边 / 平坦区"的三段式判别的 patch 版本,能同时吃到横向和纵向的冗余。

三种策略都是 $O(N)$、都保证可精确重构(见 §2.3),但 Pred-2D 的压缩率最低(保留比最小)且精度相当,因此作为默认。

算法流程(伪代码)

Input: patches {P_{r,c}} in H/p × W/p grid, threshold τ
Output: kept set S, positions {p_k}

1. S ← {(0,0)}  // 锚点必留
2. for (r,c) in raster order, excluding (0,0):
3.     A ← P_{r,c-1} if c>0 else ⊥
4.     B ← P_{r-1,c} if r>0 else ⊥
5.     C ← P_{r-1,c-1} if r>0 and c>0 else ⊥
6.     if r == 0:         P̂ ← A               // 第一行只能用左
7.     elif c == 0:       P̂ ← B               // 第一列只能用上
8.     else:              P̂ ← MED(A, B, C)    // 如上述三分支
9.     if dist(P_{r,c}, P̂) ≤ τ:
10.        omit  // 不加入 S
11.    else:
12.        S ← S ∪ {(r,c)}
13. return {(P_k, p_k) : k ∈ S}

位置保持的管线整合

只有保留下来的 $|\mathcal{S}|$ 个 patch–位置对进入后续阶段;每个保留 token 继承它在原始网格里的坐标,绝不重新编号。这样 ViT 的 2D RoPE 与 LLM 的 MRoPE 仍然能够正确反映空间布局。由于 ViT、Patch Merger、LLM 三段都在更短的序列上跑,所以端到端都有加速。

计算开销:预测编码这一遍是 $O(N)$ 常数时间/patch,相较 ViT 的 $O(N^2)$ attention 可忽略。更有趣的是:当 $\tau=0$ 时像素相等具有传递性——若 $P_i$ 与其预测来源完全相同、而预测来源又是别处复制来的,则相等关系可以跳过中间状态直接判定;因此整个操作可以向量化到 GPU,不再需要严格的光栅串行。这解掉了后面批判里要提的并行化担忧(但仅在 $\tau=0$ 时成立)。

2.3 Theoretical Guarantees

Proposition 1(Exact Reconstruction,$\tau=0$)

当 $\tau=0$ 时,原始 patch 序列 $\mathcal{P}=\{P_1,\dots,P_N\}$ 可由压缩表示 $\mathcal{C}=\{(P_k,\mathbf{p}_k)\}_{k\in\mathcal{S}}$ 通过一个确定性解码器精确恢复,只要该解码器沿相同扫描顺序应用相同的预测规则。

证明思路(归纳):锚点 $(0,0)$ 永远保留;对任一后继位置,若被丢弃则必有 $P_i=\hat{P}_i$,而解码器用已恢复的邻居重新计算的预测与编码端完全一致,故可精确还原。

意义:PixelPrune 在 pixel level 是真正无损的——没有抹平细节、没有近似、没有 embedding 空间的量化误差。注意这句话的作用域限定在像素层;ViT 的内部表示并不等于全输入时的内部表示,因为输入序列更短。作者在后面的 layer analysis 里用实验说明"pre-ViT 剪枝"和"在 ViT 内部各层做 token reduction"得到的下游精度基本相当,从而补上这个理论与实证之间的桥。

Proposition 2(Bounded Reconstruction Error,$\tau>0$)

当 $\tau>0$ 且编码器对每个被 omit 的 patch 使用预测值(而非原始值)作为后续预测的邻居时,对所有 omit 的 patch $i\notin\mathcal{S}$ 都有 $\mathrm{dist}(P_i,\,\hat{P}_i)\le\tau$,其中 $\hat{P}_i$ 恰是解码器在该位置输出的值。误差不在 patch 之间累积

证明思路:encoder 和 decoder 维护完全相同的状态(两侧都用预测值替换被 omit 邻居),因而它们算出的预测完全一致;被 omit 的 patch 按构造满足 $\mathrm{dist}(P_i,\hat{P}_i)\le\tau$,解码器正好输出 $\hat{P}_i$,所以逐 patch 误差上界就是 $\tau$。

bound 紧不紧?:这是一个逐 patch 的 $\ell$-某距离上界,不是全图重构误差的期望/平均上界。最坏情形下每个 omit 的 patch 都踩到 $\tau$,此时上界是紧的。真正关键的设计点是"用预测值替代原始值做下游预测"——否则 $\tau>0$ 时近似关系不具传递性,一长串 pairwise-相似的 patch 可以漂移任意远;这也解释了为什么 $\tau>0$ 时要做串行处理而不能再向量化。

2.4 批判性阅读

1. 预测命中即可丢——在高频纹理区会不会崩? 会,但作者用判据与测试域把风险卸掉了。$\tau=0$ 时要求像素级严格相等,自然纹理几乎不可能逐像素复制,所以在照片上 Pred-2D 根本不会 omit——退化成几乎不剪枝的恒等算子,而非乱丢。论文的主战场是文档/GUI,这类图像大比例像素确实是白底/纯色/控件复制,命中率高。潜在风险在 $\tau>0$ 的扩展:near-exact 下高频区会产生许多"勉强落在 $\tau$ 内"的匹配,此时 Proposition 2 虽保证 per-patch 误差 $\le\tau$,但下游 ViT 注意力对局部纹理敏感,$\tau$ 需要非常保守才稳。作者把 MAE vs. Max 距离、$\tau$ 取值的 ablation 留到 §5.matching。

2. causal 邻居=光栅序依赖,是否可并行? 在 $\tau=0$ 时不是问题:像素等同具有传递性,omit 的 patch 与其"来源 patch"完全同值,因此不必严格串行扫描,可以整体 GPU 向量化——这是论文明确利用的性质。当 $\tau>0$ 时必须串行(至少要维护一个 sequential 的 reconstruction state),否则编码端和解码端会脱同步。但即便串行,$O(N)$ 常数时间开销对比 $O(N^2)$ 的 ViT attention 仍可忽略,实践上不会成为瓶颈;只是失去了"完全并行"的美感。

3. Proposition 的假设是否苛刻? 不苛刻,但也谈不上惊艳:Prop. 1 本质上是把无损压缩的标准论证搬到 patch 粒度,只需要"编解码共享扫描顺序和预测规则"这一常规条件。Prop. 2 的"用预测值而非原始值作为后续邻居"是一个工程必须——少了它连 bound 都不成立,所以它更像是对 $\tau>0$ 正确实现方式的界定,而不是一个深刻的理论贡献。真正有价值的陈述其实是配套的架构观察:VLM 的位置信息完全由位置编码携带,因此 pre-ViT 丢 patch 是 well-defined 操作;这一点是让后面所有加速成立的前提,论文放在 Preliminaries 里一笔带过,其实是整套方法的理论基石。

3. 实验:精度与有效性

本部分覆盖论文 §4.1–§4.4,即实验设置、training-free 的文档理解评测、基于 KD 的 GUI post-training adaptation,以及 from-scratch 训练的 GUI 评测。Efficiency(§4.5)与 Ablations(§4.6)不在本节范围。

3.1 实验设置(§4.1)

模型。 所有实验在 Qwen3-VL Dense 家族上进行,包含 2B / 4B / 8B 三个规模。文档理解实验跑全部三档;GUI 相关实验与 ablation 只用 2B(除非特别注明)。附录还补充了 Qwen3.5 上的泛化验证(见 §3.2 末尾)。

Benchmarks。 分两大类共 9 组:

四种 baseline。Full 保留全部视觉 token 作为上界外,其他三种都被限制在与 PixelPrune 相同的 per-image token budget 下:

三种评测范式的差异,也就是本节的主骨架:

  1. Training-free(§4.2):PixelPrune 作为推理时 plug-in 直接套在 pretrained checkpoint 上,不做任何 fine-tune。最干净、也最能说明 predictive coding 假设本身是否成立。
  2. Post-training adaptation(§4.3):在 pretrained checkpoint 上用 knowledge distillation 做短暂 fine-tune(teacher = 同模型的 full-token 输出,loss = CE + KL),用于弥补 GUI grounding 任务上训练-free 所余的精度差。
  3. Train-from-scratch(§4.4):把语言端换成 Qwen3-1.7B-Instruct,从零训一个 2B 规模模型,观察 token reduction 本身是否影响训练可达精度;对比 Full→Full / PixelPrune→PixelPrune / PixelPrune→Full 三种 train-infer 配置。

实现细节。 选块使用 exact match(τ=0)在 32×32 分辨率上进行;分辨率沿用 Qwen3-VL 默认 min_pixels=256×256max_pixels=4096×4096。推理在 8×NVIDIA H20 上进行,batch size=1,greedy decoding,max_new_tokens=16,384(仅 olmOCRBench)或 512。评测走 VLMEvalKit。GUI 训练数据统一来自 Jedi 中含坐标的子集(绝对坐标被转成 Qwen3-VL 相对坐标格式),训练栈是 DeepSpeed ZeRO-2 + FlashAttention-2 + gradient checkpointing + data packing。论文汇报的是 dataset-level retain ratio(Σ|S_i| / ΣN_i),而不是 sample-level 平均——作者认为后者会被大量低分辨率图像拉偏。

3.2 Training-Free:文档理解(§4.2)

这是全文最有说服力的一节——不改模型权重,直接测。

核心观察。 PixelPrune 在每个 model scale 上的 Avg 都追平或反超所有同预算 baseline,并极其接近 Full:

Model Full Resize Random ConnComp PixelPrune
Qwen3-VL-2B 69.2 68.3 55.3 59.4 68.3
Qwen3-VL-4B 74.1 72.8 59.8 64.4 73.7
Qwen3-VL-8B 75.5 75.1 62.4 66.4 75.3

Headline 数字:8B 尺度上,PixelPrune 以 75.3 Avg 相比 Full 的 75.5 只差 0.2 点;4B 尺度上 PixelPrune 73.7 也超过 Resize 的 72.8。Random 与 ConnComp 差距巨大(4B Avg 分别为 59.8、64.4),说明在同样预算下"挑对 token"才是本质。

retention 分布。 PixelPrune 的 dataset-level retain ratio 随 benchmark 明显不同:MMLongBench-Doc 50.3%、olmOCRBench 56.9% 是最省的(大量重复版式/空白),InfoVQA 76.7%、ChartQA 73.1% 最"舍不得"——这两类包含密集图表与细粒度文本,本身可压缩性低。这个跨数据集的 adaptivity 正是论文想展示的 selling point。

泛化性。 论文在正文末尾强调,上述结论在 Qwen3.5 家族的三档模型上同样成立,Avg gap ≤0.8%(具体数字在附录 B 里,不在本节详述)。

小评。 Training-free 能 work 的含义是:patch 预测残差这一信号在 pre-trained ViT + LLM 的 token 分布下本来就不携带关键信息,模型对"被丢掉的可预测 patch"并不敏感。这是比 FastV/ToMe 那类基于 attention score 的剪枝更"廉价"也更可解释的路线,因为 PixelPrune 根本不需要模型前向一次来估重要性。

3.3 Post-Training Adaptation:GUI(§4.3)

GUI 图像比文档更稀疏:ScreenSpot V2 的 Web / Mobile / Desktop retain ratio 只有 39.7% / 49.1% / 61.9%;ScreenSpot Pro 的 Scientific 甚至只要 26.3%。但这也意味着 grounding 任务对"位置"极度敏感——丢错一个 patch,坐标就飞了。

设置。 在 Qwen3-VL-2B 上用 Jedi 坐标子集做 KD fine-tune,teacher 是同一个模型跑 full-token 的输出分布,loss 是 CE + KL。

结果(ScreenSpot V2 Avg / ScreenSpot Pro Avg):

Method SSv2 Avg SSPro Avg
Full 90.6 50.2
Resize 89.0 43.4
Random 59.7 26.8
ConnComp 75.7 32.2
PixelPrune (training-free) 81.4 36.5
PixelPrune (+KD) 90.6 47.6

重点:

与 §3.2 的对比。 文档 training-free 即可,GUI 为什么必须 post-train?作者的解释是 GUI 稀疏度极端(retain 可低至 26%),大量真正被丢掉的 token 对 grounding 仍然有残余语义,模型需要学会从压缩后的 token 网格中重新定位坐标;文档场景的 retain ratio 都在 50–77%,分布偏移小得多,zero-shot 就够。这个解释定性上说得通,但也暗示 PixelPrune 的"无损"承诺在稀疏度极端的下游任务上并不自动成立。

3.4 Training from Scratch:GUI(§4.4)

这一节的目的是剥离"预训练模型自带能力"这个混淆变量:语言端换成 Qwen3-1.7B-Instruct,视觉端配 Qwen3-VL-2B 的 ViT,纯 cross-entropy 从零训,训练数据仍是 Jedi 坐标子集。

三种配置 × 两个 benchmark Avg:

Train → Infer SSv2 Avg SSPro Avg
Full → Full 81.8 31.5
PixelPrune → PixelPrune 84.8 31.4
PixelPrune → Full 85.1 31.6

两点发现:

  1. PixelPrune→PixelPrune 不输 Full→Full(SSv2: 84.8 vs 81.8;Pro: 31.4 vs 31.5)——训练期就压缩 token 并不损精度。
  2. PixelPrune→Full 甚至略优(SSv2 85.1)。作者假设压缩训练强迫模型从 salient patch 抽取信息,因而学到更稳健的表征;但也谨慎地说这个差异很小、可能来自方差,留待未来工作。

这一节的附加价值是 deployment flexibility:同一个 checkpoint 可以在"PixelPrune 模式"跑低延迟,也可以在"full token 模式"跑高精度,不需要两套权重。

3.5 批判读

  1. Training-free 的收益是 pareto-dominant 还是 token 激减+精度微降? 从 Table 1 的 Avg 差(Full-PP:2B 0.9、4B 0.4、8B 0.2)看,8B 上基本就是免费午餐,2B/4B 则有 0.4–0.9 的稳定小差。这个差在 individual benchmark 上能大到 1+ 点(比如 2B 的 AI2D 76.6→75.8),但 PixelPrune 从未把哪个子任务整体打崩。考虑到 retain ratio 能低到 50%,这个 trade-off 在推理端是相当有说服力的。
  2. Benchmark 选择是否偏向 PixelPrune 擅长的稀疏场景? 确实偏向。文档(大量空白/重复背景)和 GUI(截图天生像素重复)都是 predictive coding 能吃到最多 redundancy 的场景。自然图像 benchmark(如 MMBench、MMMU、RealWorldQA)整节未报,这对一篇自称"pixel-level adaptive"的通用方法是明显的 evaluation gap;可以合理怀疑自然图像上的 retain ratio 会显著接近 100%(即方法退化为 Full),但这本身就是需要验证的。
  3. post-training 的公平性。 KD 配置、训练步数、GPU 数量在正文中只说"见附录 B",没有与 Random/ConnComp/Resize 同等地做 KD 再比较——也就是说现在表里的 Random/ConnComp 都是 zero-shot 数字,而 PixelPrune(+KD) 是训练过的。严格来说这一栏比的是"好选择器 + KD"vs"坏选择器 + 无 KD"两条变量同时变。如果作者能补一行 "ConnComp(+KD)" 会显著更有说服力。
  4. CAD 的崩盘。 Post-training 之后 CAD 从 40.2 掉到 30.3,作者把锅甩给"训练集里 CAD 数据稀疏",但这同时也暴露 KD 本身会覆盖模型原有能力——Full 的 40.2 来自预训练;KD 只用 Jedi 重新调校,未覆盖到的子域必然回退。这是 post-training adaptation 路线难以回避的代价。
  5. from-scratch 的 SSPro 绝对水平很低(30 出头 vs post-train 的 47.6),说明 Jedi 单数据源不足以复现大规模预训练的 GUI 能力。该节的结论"token reduction 不伤训练"是合理的,但基于这么低的基线,能外推到工业级预训练上的可信度有限。

4. 效率分析、消融与结论

4.5 Efficiency Analysis

本节从推理(prefill)和训练两个维度报告 PixelPrune 的系统级收益。作者的测量平台是 8 张 NVIDIA H20 GPU,batch size = 1,每张卡的第一个样本被丢弃以排除 warmup 噪声。

4.5.1 Inference Efficiency(推理阶段)

作者在 Qwen3-VL-2B 上、在两个"谱系两端"的基准上度量:ScreenSpot Pro Scientific(单页 GUI,retention 仅 26.2%,属于高度可压缩的稀疏样本)以及 MMLongBench-Doc(多页文档,最多几十页,retention 50.3%,属于密集场景)。数据如下:

Dataset Method Selector (ms) Retain (%) FLOPs (TFLOPs) ViT Lat. (ms) TTFT (ms) KV Cache (GB) FLOPs Speedup TTFT Speedup
MML-Doc Full 100.0 2694 4898 18477 13.2 1.0× 1.0×
MML-Doc PixelPrune 19.1 50.3 762 2143 6114 7.2 3.5× 3.0×
SS-Pro Sci. Full 100.0 70 625 833 0.8 1.0× 1.0×
SS-Pro Sci. PixelPrune 1.2 26.2 11 115 198 0.3 6.6× 4.2×

几点关键观察:

Token retention 在两个域上的差异:文档域 retention 平均 ~50%,GUI 域低到 26%,量级差了 2 倍。这说明作者一直强调的"GUI 截图里大片背景天然冗余"在数据上得到证实,而文档页面因为文字密度高、空白相对少,压缩空间有限。

4.5.2 Training Efficiency(训练阶段)

因为 PixelPrune 在输入层就把 token 砍掉,它完全兼容 FlashAttention 等训练优化,不像某些中间层剪枝会打碎 attention kernel。作者用 §4.3 的 from-scratch JEDI 实验做对照测量:

Method Retain Forward (s) Backward (s) Peak Mem (GB) Wall Time (h)
Full 100.0% 7.9 35.3 57.8 49.1
PixelPrune 40.8% 3.9 18.0 38.4 25.3
Speedup 2.0× 2.0× ↓33.6% 1.9×

Forward 和 backward 都恰好是 2.0×,wall-clock 1.9×。作者诚实地点出了 per-step (2.0×) vs wall-clock (1.9×) 的轻微 gap,归因于数据加载、梯度同步这些 token-count-independent 的固定开销。19.4 GB 的显存节省(33.6%)意味着可以换成更大的 batch 或更长的序列——对 GUI agent 场景尤其有用。

4.6 Ablation Studies

所有消融在 Qwen3-VL-2B 上、六个基准上进行:DocVQA、InfoVQA、ChartQA(文档域,training-free)以及 ScreenSpot V2 Web/Mobile/Desktop(GUI,小规模 fine-tune)。

4.6.1 预测策略对比(Raster vs Serpentine vs Pred-2D)

三种都保证 $O(N)$ 精确可还原,区别在于扫描路径:

关键结论:三种策略的 accuracy 基本一样(DocVQA 全部 92.0–92.1%,ChartQA 77.0–77.6%),差异只在 retention(即压缩率)。也就是说"预测器怎么设计"只影响压缩效率,不影响下游任务精度。Pred-2D 在 GUI 上优势最大,因为 GUI 截图里的矩形面板天然跨行,二维预测能吃掉更多冗余。

4.6.2 距离度量与阈值(MAE vs Max)

两种归一化到 [0,1] 的距离:MAE(均值)vs Max(最大单像素差)。τ=0 是严格精确匹配。

4.6.3 在 ViT 哪一层做 pruning

对 Qwen3-VL-2B 的 24 层 ViT(DeepStack 在 5/11/17 层),在 0/4/17/final/before-ViT 五个位置施加同一 retain mask。

Depth Doc Info Chart Web Mob. Desk.
After ViT 92.2 71.0 76.8 88.1 92.2 90.4
After 17th 91.9 71.1 76.1 86.7 92.4 92.2
After 4th 92.2 71.4 77.0 89.9 92.6 89.8
After 0th 92.1 71.3 76.9 86.7 93.0 90.4
Before ViT 92.0 71.5 77.0 86.5 92.2 90.1

两条结论:

5. Conclusion

作者的 one-paragraph 结论基本是对前文数字的收束:PixelPrune 是一种 pixel-level、ViT 之前完成的自适应 patch 剪枝方法,核心机制是 2D 预测编码。关键 takeaway:

  1. 文档基准上 training-free 达成 full-token accuracy,token 减少 23–50%,横跨三种模型规模;
  2. GUI 基准上通过 light post-training 或 from-scratch 训练能补回精度 gap,同时训练加速显著;
  3. 系统收益:推理 up to 4.2× TTFT,训练 1.9×,显存 ↓33.6%;
  4. 泛化到 general-domain 图像(放在 Appendix)。

作者没有在正文的 conclusion 里明确提"未来工作",这在 NeurIPS preprint 中比较少见;可能的方向(视频 token、多模态融合、与 KV cache 量化叠加)都隐含在 appendix。


我的深度批判

1. wall-clock vs FLOPs 的 gap 被诚实报告了吗?

大体诚实,但措辞有点"磨圆"。正文原话说 "3.0–4.2× TTFT speedup, 3.5–6.6× FLOPs reduction"——把两组数并列,读者可以自己算出 GUI 上 FLOPs/TTFT 比约 1.57、文档上约 1.17,gap 是客观存在的。作者也用一句话归因到 selector overhead、Patch Merger、KV cache 等固定开销,并把详细 FLOPs 推导放到 Appendix A——这是正确的做法。但我认为还可以更透明:比如 Table 里的 ViT Lat. 单独列出,而 Patch Merger 和 LLM 两段各自的 latency 就没单独报,读者很难知道瓶颈还有多少能继续吃。训练端的 1.9× vs 2.0× 那个 gap 归因写得很清楚(data loading, grad sync),这段处理得比推理段好。

2. ablation 覆盖关键对照组了吗?有没有避而不谈的 baseline?

覆盖是充分的:预测策略(1D→2D 的三档阶梯)、距离度量(两种×四个阈值)、剪枝深度(五个位置),这三块是这篇方法论文最核心的设计选择,都做了。但缺失的对照组也很明显

3. conclusion 暗示未来方向了吗?

正文 §5 只有一段、100 词左右,没有显式的"Future Work"小节——这其实是 NeurIPS 里比较典型的 "self-contained preprint" 写法:把空间让给方法和实验,未来工作留到 discussion 或 appendix。但从 conclusion 的措辞可以嗅出三条隐含方向:(i)"adapting gracefully to general-domain images" 暗示下一步会把域从 doc/GUI 扩到自然图像;(ii)"across three model scales" 暗示在更大的 VLM(30B+)上做 scaling study;(iii) 提到 training acceleration 的独立价值,暗示未来可能把 PixelPrune 直接整合进 pretraining pipeline 而非只作为推理加速。论文没在正文里把这些写死,对审稿友好但对读者略显含蓄。

5. 附录要点

论文把大量"佐证性"证据塞到了附录里,覆盖冗余度统计、训练配置、跨架构验证、训练收敛曲线、FLOPs 推导与通用域评测。下面按附录顺序提炼关键点。

5.1 Appendix A — 像素冗余度与分辨率统计

统计方法非常朴素但直接:把图像切成非重叠的 32×32 块,精确比对像素内容,一张图内出现多次的块被记为 duplicate,数据集级 Duplicate Ratio 定义为 $1 - \sum_i U_i / \sum_i N_i$。这套"全图 dedup"是个 oracle 上界——PixelPrune 走因果扫描,实际 retain ratio 必然比这个高,作者自己也在脚注里承认。

核心数字(Table 11):

这张表是第 1 节 motivation 的"硬证据"——冗余度既是域依赖的(文档 ≠ GUI),也与分辨率正相关但并不单调。读者应注意:28.6% 也是下限,意味着即便是最"挤"的 InfoVQA 也有近三成 token 在做重复工作。

5.2 Appendix B — Training Details

非常简短,只列出规模:

作者没有报告 optimizer、lr schedule 或 warmup,这属于本附录的明显缺失。

5.3 Appendix C — Qwen3.5 跨架构验证

关键 setup 是 Qwen3.5 的 LLM 采用 hybrid attention(full + linear 交替),而 linear attention 层没有显式位置编码,只靠衰减顺序。这恰好对 PixelPrune 的 position-preserving 设计构成压力测试。

结论(Table 12,training-free):

三个尺度全部 ≤ 0.8% 掉点,retain ratio 在 50.3%(MMLongBench)到 76.7%(InfoVQA)。这表明 PixelPrune 的收益主要来自 NaViT 式的空间位置编码而非 LLM 侧的位置信号——一个值得肯定的 generalization 结论。

5.4 Appendix D — Training-from-Scratch 收敛细节

Table 13 每 400 步评估一次 SSv2 + SSPro(共 11 列)。关键观察:

这个"训练 Full 反而更抖"的现象其实挺重要——它暗示 redundant tokens 不仅浪费算力,还可能干扰优化。但论文把这结论藏在附录一句"possibly because ... implicit regularization"里带过。

5.5 Appendix E — FLOPs 公式推导

完整推导了 Qwen3-VL 三段式 FLOPs(ViT + Patch Merger/DeepStack + LLM),式 (2):

$$\text{FLOPs} = \underbrace{L_v[N(8D_v^2+4D_vD_{f,v}) + 4N^2 D_v]}_{\text{ViT}} + \underbrace{L_m \tfrac{N}{M^2}(2D_{\text{in}}^2+2D_{\text{in}}D_l)}_{\text{Merger}} + \underbrace{L_l[N_l C_l + 4N_l^2 D_l]}_{\text{LLM}}$$

Qwen3-VL-2B 参数(§A.5 末尾):ViT $L_v=24$,$D_v=1024$;Merger $M=2$,$|\mathcal{I}_{ds}|=3$(主 merger + 3 个 DeepStack);LLM $L_l=28$,$D_l=2048$,GQA $n_q=16, n_{kv}=8$。

PixelPrune 的节省分三层:

这段推导的价值在于让 Table 5 的"-45% FLOPs"不再是黑箱数字——但作者没有给出 ViT / Merger / LLM 各自的百分比拆分,读者无法判断收益主要来自哪一段。考虑到高分辨率 GUI 图里 $N \sim 10^4$,二次项的 ViT attention 应当是绝对大头,但这个定性结论值得一张 pie chart,而论文没有给。

5.6 Appendix F — 通用域评测

这是检验"会不会在自然图上崩"的最关键附录。6 个 benchmark:MMBench、MMMU、MMStar、RealWorldQA、HR-Bench、V*Bench,Qwen3-VL-2B training-free,跑了 $\tau \in \{0, 0.005, 0.02, 0.05, 0.10\}$ 五档(Max distance metric)。关键数字(Table 14):

解读:自然图确实比 doc/GUI 更"怕压"(MMMU 80.1% retain vs 文档平均 60%+),但 PixelPrune 的 content-adaptive 特性保证了它会自动"少砍"纹理丰富的图。这张表是方法普适性的压舱石。


5.7 批判点评

  1. "训练稳定性"证据应进正文:Appendix D 里 Full 在 step 2000 的回退 + PixelPrune 更平滑的曲线,其实是个独立于"准确率更高"的新增卖点,理应在 §4 正文单独提一段,目前只一句话带过。
  2. FLOPs 三段拆分缺失:Appendix E 给出完整公式却没给"ViT 占 X%,LLM 占 Y%"的实测拆分,这在正文 Table 5 讨论 -45% FLOPs 时是必要的——现状让人无法判断在哪个环节下次还能继续优化。
  3. 通用域 $\tau$=0.10 的 MMMU 掉点是 soft negative result:MMMU 是最权威的通用 benchmark 之一,-2.1% 被"overall gracefully handles"一句话盖过。合理做法应当是明确写"推荐 general domain 使用 $\tau \le 0.05$"。
  4. Qwen3.5 实验只做 training-free:没有在 Qwen3.5 上做 training-from-scratch 或 post-training KD,无法证明方法在 hybrid attention 架构上训练的兼容性。这是明显"被埋起来"的实验缺口。
  5. Appendix A 的 dedup 是 oracle 上界:作者坦诚但一笔带过,其实应该在同一张表里并列给出 PixelPrune 因果扫描的实测 retain ratio,让读者一眼看到"理论上还差多少"。

6. 开放问题与落地启示

6.1 论文仍未解决的问题

6.2 对本地工程 / 产品化的启示

6.3 一句话评估

PixelPrune 的聪明之处不在算法复杂度,而在把问题定义对——它指出"视觉 token 冗余在像素层面就已经显形",并用最朴素的预测编码把这个信号利用起来。方法本身在 doc/GUI 域近乎免费、在自然域可控退化;作为 2026 年 NeurIPS 阶段的 VLM 加速工作,它给出了一条清晰可落地的路线,哪怕上限受限于"只有文档/GUI 有大量像素级重复"这个前提。