方法名称: 自适应视觉跳过方法(AdaVSkip)
原文标题: AdaVSkip: Adaptive Visual Token Skipping Across Layers For Efficient MLLMs Inference
署名单位: 北京航空航天大学
首次公开: 2026年9月14日(北京时间,arXiv v1)
原论文: https://arxiv.org/abs/2609.15131
龙哥导读
多模态大模型看一张图时,通常会让数百个视觉标记从第一层一路算到最后一层。可"图里有没有猫"和"把票据上的小字逐项读出来",真的需要相同的视觉计算吗?北航提出 AdaVSkip,让每一层分别判断视觉标记是否还需要参加注意力和前馈计算。它在三个模型、多个基准上把计算量压到约一半,同时保持接近原模型的平均表现;在下一代视觉语言模型(LLaVA-NeXT-7B)上,预填充速度提升 2.09 倍、端到端速度提升 1.78 倍、键值缓存减少 52.4%。这篇论文最值得看的不是"又省了一半算力",而是它把计算预算从固定套餐改成了按问题付费。
想象你给多模态大模型一张街景图,问"天气怎么样"。模型也许只需看天空、路面和光照。可如果问题变成"右侧商店招牌第三行写了什么",它就必须保留更多局部文字,并在更深层持续处理。
现实中的模型通常不做这种区分。图片进入语言模型后,被切成大量视觉标记;每一层注意力和前馈网络都照常处理它们,不管问题简单还是困难,不管当前层是否还需要更新视觉信息。
已有加速工作主要从"横向"下手:减少一张图里保留的视觉标记数量。AdaVSkip 研究的是另一种浪费——"纵向冗余"。即使一批视觉标记需要保留,也不代表它们必须经过模型的每一层、每一种模块。
同一张图片面对不同问题,所需视觉计算不仅数量不同,发生在哪些层、进入注意力还是前馈网络,也可能不同。 这是整篇论文的起点。

图1:AdaVSkip 训练框架。上半部分逐模块测量视觉计算的重要性并生成样本级路由目标;下半部分把每个路由选择当成动作,用答案正确性和计算预算共同优化。每层的注意力与前馈网络由两个独立路由器控制。来源:论文官方图2。
一、多模态模型的钱花在哪里
多模态大模型通常由视觉编码器、投影层和语言模型组成。视觉编码器先把图片变成一串向量,投影层把它们转换到语言模型能理解的维度,随后视觉标记和文本标记一起进入 Transformer。
图片分辨率越高,视觉标记通常越多。语言模型的每一层都要让这些标记参与 注意力,并通过前馈网络更新。长图、文档、图表和多图输入会把预填充阶段拉得很长,也会扩大后续生成所需的键值缓存。
一种直观办法是删掉不重要的视觉标记。例如,背景天空可能只保留少量代表,文字和目标物体保留更多。这类方法减少的是同一层里的标记数量,因此被论文称为横向压缩。
另一种办法是让视觉标记提前退出。模型前几层完成视觉—文本对齐后,后面层只更新文本。这减少了跨层计算,却容易把所有输入套进同一个退出位置。简单问题可能退出得太晚,复杂问题又可能退出得太早。
AdaVSkip 把一条固定出口拆成许多小开关。假设语言模型有 32 层,每层包含自注意力和前馈网络,它就为每层设置两个轻量路由器,总共形成 64 个视觉计算决策。文字始终正常计算,视觉标记则根据当前输入决定是否跳过某个模块。
二、先证明"每道题需要的层不一样"
在设计路由器之前,论文先测量每个模块的重要性。对一条带标准答案的样本,研究者先运行完整模型,记录每个答案位置的输出概率分布;随后每次只跳过一个模块里的视觉计算,再观察输出分布变化。
如果跳过某个模块后,模型的答案分布变化很大,说明视觉信息在这里仍然重要;变化很小,则说明这部分计算可能冗余。论文用相对熵衡量两次分布的差异,再对全部答案标记求平均,得到模块必要性分数。
必要性分数 = 各答案位置上"完整模型分布"与"跳过该模块后的分布差异"的平均值
这个指标的直觉很简单:拔掉一块零件,模型几乎没有反应,它可能不是当前输入的关键路径;拔掉后答案倾向明显改变,这块零件就不该轻易跳过。
分析结果出现两个重要现象。第一,不同基准的高必要性层位置不同。物体幻觉判断任务往往只在少数层出现明显峰值,文字识别任务则需要更宽的深度范围。第二,同一层里的自注意力与前馈网络也不总是同步重要。
例如,模型第一层的 自注意力 通常很重要,因为视觉与文本刚开始交互;但同一层的前馈网络可能没有同样高的必要性。若只给整层一个开关,就必须在"全保留"和"全跳过"之间选择,浪费了更细粒度的机会。
论文由此证明,视觉冗余既与输入有关,也与模块类型有关。 动态路由不是为了让结构显得复杂,而是被测量结果直接推出来的。
三、两个路由器怎样决定算不算
每一层入口都有两个小路由器:一个控制视觉标记是否参与自注意力,另一个控制视觉标记是否经过前馈网络。它们只负责输出保留概率,不修改大模型主干参数。
路由器为什么读取文本,而不是把所有视觉标记再算一遍?因为用户问题最直接地表达了任务需求。论文把最后一个提示词的隐藏状态与全部提示词隐藏状态的平均值拼接起来,形成路由输入。前者偏向当前问题焦点,后者保留整体语义。
文本隐藏状态在前面层已经吸收部分视觉信息,因此它不仅知道"问了什么",也携带当前图像与问题互动后的线索。每个路由器输出 0 到 1 之间的概率,超过 0.5 就保留视觉计算,否则让视觉隐藏状态原样穿过该模块。
当注意力开关关闭时,视觉标记不再计算查询、键和值,文本标记则执行仅文本注意力。当注意力开关打开时,视觉与文本继续联合计算。前馈网络也是类似逻辑:文本始终更新,视觉标记根据开关选择更新或旁路。
路由只发生在预填充阶段。也就是说,模型读取图片和用户问题时进行动态选择;开始逐字生成答案以后,不再重复决定视觉路径。这让路由成本保持较低,也避免生成阶段每个新词都重新计算一套视觉策略。
根据论文方法整理的伪代码
输入:视觉标记、用户问题
对语言模型的每一层:
根据文本状态预测"注意力是否需要视觉"
根据文本状态预测"前馈网络是否需要视觉"
文本标记始终计算
视觉标记按两个开关分别计算或旁路
输出:使用输入专属计算路径得到的答案
这套机制不会删除视觉标记。被跳过的标记仍然存在,可以在后面的关键层重新进入计算。与单一提前退出不同,它允许"这一层先休息,后面再回来",也允许注意力跳过而前馈网络继续处理。
四、第一阶段:先从逐模块诊断中学会基本路线
路由选择是离散的,直接训练容易不稳定。AdaVSkip 先用监督学习建立初始策略。研究者根据前面的必要性分数,对注意力模块和前馈模块分别排序。
对每个输入,系统选择一组累计必要性达到指定比例的模块,标记为"保留";其余模块标记为"跳过"。由于每条样本的必要性分布不同,同一个阈值会产生不同数量、不同位置的保留模块。
训练目标包含两部分。第一部分让路由概率接近这些必要性标签;第二部分仍然要求模型在当前路由路径下正确预测答案。前者提供稳定起点,后者防止路由器只会模仿诊断分数,却忽略最终任务。
主干模型在整个训练中冻结,只更新小型路由器。这意味着训练成本主要用于学习"在哪里省",而不是重新训练一个多模态大模型。对已有模型部署团队,这种插件式特点比从头训练更现实。
代价是离线必要性分析需要多次前向计算:完整模型跑一次,再逐个模块尝试跳过。论文提供了加速估计方案,但正文主结果仍使用完整分析得到的路由目标。因此,AdaVSkip 节省的是长期推理成本,前期仍需支付一次路由训练和分析费用。
五、第二阶段:让最终答案来纠正路由
模块必要性来自输出分布变化,但分布变化不等于答案一定错。有些模块被跳过后概率略有波动,最终答案仍然正确;另一些细微变化可能恰好破坏关键数字或文字。于是论文加入第二阶段,用任务结果直接优化。
对每个输入,路由器采样多条计算路径。这里的"动作"不是模型生成的文字,而是每个模块保留或跳过视觉计算。冻结的主干沿不同路径生成答案,再根据答案是否与标准答案一致获得奖励。
如果只奖励正确,路由器最安全的策略就是尽量不跳过,最后退化回完整模型。AdaVSkip 因此加入跳过一致性奖励:要求注意力和前馈网络的平均保留比例不要偏离第一阶段为该样本建立的参考预算。
这个奖励不是强迫第二阶段复制原路径。它只约束总体预算,允许强化学习重新安排"具体跳过哪一层"。这样既能根据答案正确性纠正第一阶段的局部误判,又不至于用无限保留计算来换分数。
消融结果支持这种设计。仅使用逐模块必要性标签时,平均相对表现为 98.2%;加入下游语言损失后升到 98.5%;使用输入专属目标后达到 99.3%。进一步强化学习可达到 100.0%,但计算量会回升;加入预算约束后,平均表现保持 100.0%,计算量回落到原模型的 52.0%。
第一阶段教路由器"哪里大概重要",第二阶段再用答案告诉它"这条完整路线到底行不行"。 两者解决的是不同问题。
六、三套模型上的主结果
论文在三套主流多模态大模型上测试,覆盖两代开源视觉语言模型和千问视觉语言模型。评测包括通用视觉问答、图表、文档文字、幻觉判断、多模态综合能力和细粒度视觉推理,避免只在单一简单任务上展示加速。
在第一套 70 亿参数视觉语言模型上,保留 52.0% 的原始计算量时,AdaVSkip 平均相对表现达到 100.0%。进一步把计算压到 45.2%,仍保持 99.0%;压到 32.5% 时,平均相对表现为 95.1%。随着预算收紧,固定层跳过方法下降更快。
在更强的 LLaVA-NeXT-7B 上,AdaVSkip 以 46.8% 的计算量取得 100.4% 的平均相对表现。超过 100% 并不表示模型突然获得了新能力,而是部分冗余计算被去掉后,若干基准的噪声或过度处理有所减轻,使平均分略高于原始模型。
在 Qwen3-VL-8B-Instruct 上,计算量为 51.4% 时,平均相对表现为 98.6%。它比固定层跳过和单点提前退出更稳,说明动态路由并非只适用于一种模型架构。
这些平均数需要结合单项任务看。文字识别、文档问答和图表理解依赖细粒度视觉信息,路由器通常保留更多模块;粗粒度场景判断和幻觉检测则可以跳过更多。论文报告的平均跳过比例在不同基准之间从 36.1% 到 62.2% 变化。
七、真实速度:预填充 2.09 倍,端到端 1.78 倍
浮点计算量降低不等于真实延迟按同样比例下降。动态路由会增加判断开销,硬件也未必擅长不规则执行。因此论文额外报告真实运行时间和键值缓存,而不是只停留在理论数字。
在 LLaVA-NeXT-7B 的多模态综合能力测试上,原始模型预填充耗时 161.16 毫秒,AdaVSkip 降到 77.10 毫秒,速度提升 2.09 倍。端到端耗时从 194.32 毫秒降到 109.36 毫秒,提升 1.78 倍。
键值缓存从 1087.74MB 降到 517.58MB,减少 52.4%。这对多并发服务很重要:显存节省不仅意味着单请求更轻,还可能允许同一张卡承载更多会话,降低排队时间。
速度提升小于计算量下降,是符合工程常识的。路由器本身、张量搬运、不同模块的执行分支和生成阶段都会消耗时间。论文的价值在于把理论节省转化成了可观察的端到端收益。
对在线服务而言,2.09 倍预填充速度与 52.4% 缓存下降,比单独展示"少算 53.2%"更接近真实成本。
八、横向裁剪与纵向跳过可以叠加
AdaVSkip 并不与视觉标记裁剪竞争。裁剪方法回答"这一层保留哪些视觉标记",AdaVSkip 回答"保留下来的标记还需要经过哪些后续模块"。一个减少宽度,一个减少深度。
论文将 AdaVSkip 与对比驱动视觉裁剪方法(CDPruner)组合。在 LLaVA-NeXT-7B 上,当视觉标记只保留原来的 5.6% 时,组合方法的计算量进一步降到 8.8%,平均相对表现仍为 97.2%;单独使用 CDPruner 时,计算量为 9.7%,表现为 94.5%。
这组结果说明,横向压缩后仍然存在纵向冗余。少量保留下来的视觉标记,也不必在每一层执行所有操作。更重要的是,动态路由能缓解极端裁剪带来的性能损失。
与动态视觉标记退出方法相比,AdaVSkip 的粒度更细。提前退出往往决定某个视觉标记从某层以后都不再更新;AdaVSkip 允许不同模块做不同选择,也允许后层重新处理先前旁路的视觉状态。
这对文档和图表任务尤其重要。模型可能在早期完成整体布局理解,中间几层减少视觉计算,后面在形成具体答案时又需要读取细节。单一退出点很难表达这种非单调需求。
九、部署时真正要算的账
第一笔账是训练与推理的交换。AdaVSkip 冻结主干,只训练轻量路由器,避免昂贵的全模型微调;但逐模块必要性分析仍需额外计算。请求量较小时,这笔前期成本未必划算;长期高并发部署才更容易摊薄。
第二笔账是硬件利用率。不规则跳过在理论上减少计算,却可能造成批次中不同样本走不同路径,降低矩阵计算的整齐程度。论文展示单模型真实延迟收益,但大规模服务中的动态批处理、编译优化和负载均衡仍需专门设计。
第三笔账是任务分布。路由器从训练样本学习"什么问题需要多少视觉计算"。如果线上请求与训练集差异很大,例如突然增加医学影像、遥感图或密集表格,旧路由策略可能错误低估视觉需求。
第四笔账是错误代价。普通图片问答答错一次,也许只是体验问题;工业质检、医疗辅助和驾驶系统若因跳过视觉计算漏掉细节,风险完全不同。高风险场景需要保守预算、置信度监控和可回退的完整计算路径。
第五笔账是指标选择。平均相对表现接近 100%,不代表每个任务都完全无损。团队需要按自己的业务分布检查最差子集,尤其是小字识别、细粒度计数、空间关系和容易产生幻觉的输入。
十、三类产品会怎样使用这套思路
第一类是文档助手。用户可能上传同一份几十页报告,却提出完全不同的问题。询问封面标题时,只需粗粒度视觉信息;核对表格中的季度数字时,则需要在多个层次持续保留文字区域。动态路由可以让简单问题快速通过,把计算留给真正依赖细节的请求。
第二类是电商和内容审核。大量图片只需判断主体类别、是否含文字或是否违反简单规则,少量疑难样本才需要复杂关系推理。如果所有请求都执行完整视觉路径,系统会为长尾难题长期支付平均成本。路由策略可以把常规样本送上短路径,并为模糊、遮挡和多目标图片保留更多计算。
第三类是端侧多模态助手。手机、眼镜和机器人终端同时受延迟、功耗和内存限制。键值缓存下降 52.4%,意味着设备可以在相同显存条件下保留更长上下文,或给其他感知模块腾出空间。动态路径还可能根据电量与温度调整预算,但这需要额外的系统级策略,论文没有直接验证。
真正部署时,还应增加一条"保守回退"规则。当路由器置信度低、输入分布异常或任务属于高风险类别时,系统直接使用完整视觉计算。这样可以把动态路由作为性能优化层,而不是让它承担最终安全判断。
团队还要记录每类请求的路由轨迹、耗时和错误类型。若某个新业务长期保留几乎全部模块,说明它并不适合当前压缩策略;若某些层在所有请求中都被跳过,则可以进一步研究静态裁剪,减少运行时分支。
评估时最好同时准备简单、困难和分布外样本。简单样本检验系统是否真的敢于节省,困难样本检验它是否知道何时保守,分布外样本则观察路由器面对陌生图片与问题会不会过度自信。只有三类结果一起稳定,平均加速才具有部署意义。
还可以把完整路径作为教师,定期抽样复算被加速的请求。如果动态路径与完整路径长期出现系统性差异,就应更新路由训练集或提高保留预算。这种持续校准比上线前一次性跑完公开基准更重要。
动态路由最好的用法,是先用数据找到不同请求的成本差异,再把它变成可监控、可回退的服务策略。 如果只追求一个漂亮的平均加速数字,很容易忽略最难、也最重要的少数输入。
十一、龙哥点评:推理加速开始从"统一瘦身"走向"按题分配"
龙哥认为,AdaVSkip 最有价值的变化是把推理成本变成输入相关变量。过去谈模型压缩,常常先定一个统一预算:所有图片保留 64 个标记,所有问题跳过 16 层。工程实现简单,但相当于让查天气和读财报使用同一套计算套餐。
动态路由更接近人类处理信息的方式。看到熟悉场景时,我们快速抓取少数线索;面对密集表格时,会反复查看局部。模型如果能可靠判断任务难度,就不必为了少数困难问题,让所有简单请求都承担最高成本。
但"能判断难度"本身就是一个新的模型能力。路由器判断错了,省下的计算会直接变成错误。AdaVSkip 通过逐模块诊断、任务损失和强化学习逐步约束这件事,实验设计是扎实的;真正上线仍需要持续监控路由分布和业务错误。
这项工作的长期启发,不是所有团队都要照搬 64 个开关,而是推理系统应该根据问题内容动态决定计算深度。 视觉标记、专家模块、检索步骤和工具调用,未来都可能采用类似思路。
如果团队正在做多模态服务,最实际的起点不是直接训练强化学习路由器,而是先记录不同任务、不同层的视觉计算敏感性。只有确认冗余确实随输入变化,动态路由的额外复杂度才有价值。
十二、龙迷三问
1. 跳过视觉计算,会不会让模型彻底忘记图片?
不会立即删除图片信息。被跳过模块中的视觉隐藏状态会原样传到下一层,后续路由器仍可让它重新参与计算。文字标记也始终处理,并保留此前吸收的视觉线索。不过,连续跳过过多关键模块仍可能丢失细粒度推理能力。
2. 为什么不直接把视觉标记数量砍到很少?
标记裁剪和跨层跳过解决不同冗余。极端裁剪可能永久删除小字、图表刻度或局部目标;跨层跳过保留这些视觉状态,只在不重要的模块中暂时旁路。论文也显示,两种方法组合通常比单独极端裁剪更稳。
3. 这项方法最适合什么场景?
更适合请求量大、图片标记多、任务难度差异明显的多模态服务,例如通用图片问答、文档助手和混合视觉工作流。若请求很少、模型很小,或所有任务都依赖精细视觉信息,路由训练和不规则执行的收益可能有限。
十三、总结
AdaVSkip 发现,多模态大模型中的视觉计算冗余会随输入、层深和模块类型变化。它为每层注意力与前馈网络设置独立路由器,根据文本状态决定视觉标记是否参与计算,同时保持文本路径完整。
训练分两步:先用逐模块必要性分数构造样本级监督目标,再把路由决策当成动作,以答案正确性和预算约束进行强化学习。主干模型始终冻结,只更新路由器。
在三套多模态模型和多类基准上,它通常只保留约一半计算,仍维持接近原模型的平均表现。LLaVA-NeXT-7B 实测预填充快 2.09 倍、端到端快 1.78 倍,键值缓存下降 52.4%。与视觉标记裁剪叠加后,计算量可降到 8.8%,平均相对表现仍有 97.2%。
对研究者而言,这套结果还提示了一种更细的分析方式:不要只统计某层是否重要,而要分别检查视觉信息在注意力交互和前馈变换中的作用。两类模块承担的计算不同,共用一个开关可能把真正需要的视觉交互一起删掉。
它把"模型多大"之外的另一个问题摆到台前:每一次请求,究竟值得调用多少模型。 答案如果能被可靠学习,多模态推理的下一轮降本,可能来自更聪明的计算路径,而不只是更小的参数量。
参考资料
本文基于龙哥读论文 PaperDaily 数据库及 PaperMiner 的 MCP 进行汇总整理。本文为论文解读与个人学习笔记,不构成任何论文审核意见,及对产品能力、安全性或商业可用性的保证。相关技术讨论可访问 云栈社区 与更多开发者交流。