作者:Nan Wang, Zhiwei Jin, Chen Chen, Haonan Lu(OPPO AI Center) arxiv:2604.00886(NeurIPS 2026 preprint,2026-04) 代码:github.com/OPPO-Mente-Lab/PixelPrune
文档和 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%。
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 会话把这个数字再乘上若干倍。
过去一两年里针对 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 数量是平方级的。
结论是清楚的:只在 LLM 侧做文章,对小中型 VLM 的高分辨率场景根本救不了总延迟。真正需要被压缩的是进入 ViT 之前的 patch 序列。
PixelPrune 的核心观察切得非常浅——不需要语义、不需要 attention、不需要任何学习过的表征:文档图像被大片白边、均匀页面背景主导;GUI 截图被大块单色面板、工具栏、状态栏占据。这些区域对应的 patch 在原始像素层面就是逐点相同的副本。作者在 Appendix 里统计了跨文档和 GUI benchmark 的结果:每张图里只有 22%–71% 的 patch 是 pixel-unique 的,其余全是另一个 patch 的精确复制。
Fig 1 把这个直觉可视化:在一张文档图上 PixelPrune 可以砍掉 70% 的 token;在一张 GUI 截图上更是可以砍掉 93% 的 token——保留的彩色 patch 集中在文字和图标周围,被丢掉的灰色 patch 大面积分布在背景和面板上。
PixelPrune 借用了 PNG、JPEG-LS 这类无损压缩格式背后的 predictive coding 原理:每个 patch 都从它的因果空间邻居(左、上、左上)被预测;如果预测值在阈值 $\tau$ 内匹配,就把这个 patch 丢掉,否则保留。这个过程:
作者的端到端收益是 4.2× 推理加速和 1.9× 训练加速。
§2 把相关工作分成了三条线索,PixelPrune 相对每一条都有明确差异:
ViT 内部的 token reduction:DynamicViT、EViT、ToMe 都在 ViT 中间 feature 上做剪枝或合并,必须先 forward 才能决策。最接近的是 RLT,它把 run-length encoding 用到视频 Transformer 的时间维度;PixelPrune 把这个思路升到 2D 空间域,并且发生在 ViT 之前。
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 大头。
文档与 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 之前。
优点很明确:
可以追问的地方:
总的来说,"ViT 在高分辨率下是新的 prefill 瓶颈 + 文档/GUI 图像有大量像素级重复"这组事实,确实为"在 ViT 之前做 patch 级剪枝"提供了合格的动机;剩下的交由方法和实验部分验证。
本节对应原文 §3,分三小节展开:§3.1 铺垫 ViT 的 patch 输入结构并说明"为什么 pre-ViT 去除 patch 在架构上是合法的";§3.2 给出 PixelPrune 的核心——把无损图像压缩里的 predictive coding(预测编码)从像素层面抬升到 patch 块层面,并设计 Pred-2D 规则;§3.3 用两个命题给出精确/近似两种重构保证。
以 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 之前就剪枝而不破坏空间语义的前提。
文档、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 邻居(已被访问过的位置)做预测,若预测命中则丢弃。
对每个 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 邻居,被强制保留为初始锚点。
作者给出三种预测策略,共享同一个预测编码骨架,仅在扫描顺序和预测规则上递进:
$$\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$ 时成立)。
当 $\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"得到的下游精度基本相当,从而补上这个理论与实证之间的桥。
当 $\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$ 时要做串行处理而不能再向量化。
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 里一笔带过,其实是整套方法的理论基石。
本部分覆盖论文 §4.1–§4.4,即实验设置、training-free 的文档理解评测、基于 KD 的 GUI post-training adaptation,以及 from-scratch 训练的 GUI 评测。Efficiency(§4.5)与 Ablations(§4.6)不在本节范围。
模型。 所有实验在 Qwen3-VL Dense 家族上进行,包含 2B / 4B / 8B 三个规模。文档理解实验跑全部三档;GUI 相关实验与 ablation 只用 2B(除非特别注明)。附录还补充了 Qwen3.5 上的泛化验证(见 §3.2 末尾)。
Benchmarks。 分两大类共 9 组:
四种 baseline。 除 Full 保留全部视觉 token 作为上界外,其他三种都被限制在与 PixelPrune 相同的 per-image token budget 下:
三种评测范式的差异,也就是本节的主骨架:
实现细节。 选块使用 exact match(τ=0)在 32×32 分辨率上进行;分辨率沿用 Qwen3-VL 默认 min_pixels=256×256、max_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 平均——作者认为后者会被大量低分辨率图像拉偏。
这是全文最有说服力的一节——不改模型权重,直接测。
核心观察。 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 根本不需要模型前向一次来估重要性。
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 的"无损"承诺在稀疏度极端的下游任务上并不自动成立。
这一节的目的是剥离"预训练模型自带能力"这个混淆变量:语言端换成 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 |
两点发现:
这一节的附加价值是 deployment flexibility:同一个 checkpoint 可以在"PixelPrune 模式"跑低延迟,也可以在"full token 模式"跑高精度,不需要两套权重。
本节从推理(prefill)和训练两个维度报告 PixelPrune 的系统级收益。作者的测量平台是 8 张 NVIDIA H20 GPU,batch size = 1,每张卡的第一个样本被丢弃以排除 warmup 噪声。
作者在 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 截图里大片背景天然冗余"在数据上得到证实,而文档页面因为文字密度高、空白相对少,压缩空间有限。
因为 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 场景尤其有用。
所有消融在 Qwen3-VL-2B 上、六个基准上进行:DocVQA、InfoVQA、ChartQA(文档域,training-free)以及 ScreenSpot V2 Web/Mobile/Desktop(GUI,小规模 fine-tune)。
三种都保证 $O(N)$ 精确可还原,区别在于扫描路径:
关键结论:三种策略的 accuracy 基本一样(DocVQA 全部 92.0–92.1%,ChartQA 77.0–77.6%),差异只在 retention(即压缩率)。也就是说"预测器怎么设计"只影响压缩效率,不影响下游任务精度。Pred-2D 在 GUI 上优势最大,因为 GUI 截图里的矩形面板天然跨行,二维预测能吃掉更多冗余。
两种归一化到 [0,1] 的距离:MAE(均值)vs Max(最大单像素差)。τ=0 是严格精确匹配。
对 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 |
两条结论:
作者的 one-paragraph 结论基本是对前文数字的收束:PixelPrune 是一种 pixel-level、ViT 之前完成的自适应 patch 剪枝方法,核心机制是 2D 预测编码。关键 takeaway:
作者没有在正文的 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 而非只作为推理加速。论文没在正文里把这些写死,对审稿友好但对读者略显含蓄。
论文把大量"佐证性"证据塞到了附录里,覆盖冗余度统计、训练配置、跨架构验证、训练收敛曲线、FLOPs 推导与通用域评测。下面按附录顺序提炼关键点。
统计方法非常朴素但直接:把图像切成非重叠的 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 在做重复工作。
非常简短,只列出规模:
作者没有报告 optimizer、lr schedule 或 warmup,这属于本附录的明显缺失。
关键 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 结论。
Table 13 每 400 步评估一次 SSv2 + SSPro(共 11 列)。关键观察:
这个"训练 Full 反而更抖"的现象其实挺重要——它暗示 redundant tokens 不仅浪费算力,还可能干扰优化。但论文把这结论藏在附录一句"possibly because ... implicit regularization"里带过。
完整推导了 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,而论文没有给。
这是检验"会不会在自然图上崩"的最关键附录。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 特性保证了它会自动"少砍"纹理丰富的图。这张表是方法普适性的压舱石。
paper-notes/pixelprune/report.md 可以被 VSCode、Obsidian、Typora 或任何 markdown 渲染器打开,图片会内联显示;也可以用 pandoc report.md -o report.html --embed-resources --standalone 生成一个自包含 HTML。PixelPrune 的聪明之处不在算法复杂度,而在把问题定义对——它指出"视觉 token 冗余在像素层面就已经显形",并用最朴素的预测编码把这个信号利用起来。方法本身在 doc/GUI 域近乎免费、在自然域可控退化;作为 2026 年 NeurIPS 阶段的 VLM 加速工作,它给出了一条清晰可落地的路线,哪怕上限受限于"只有文档/GUI 有大量像素级重复"这个前提。