reViT用一个共享模块跑出24层效果,深度变成可调旋钮
你可能没意识到一件事:你每天用的视觉AI模型,内部其实是一座"楼"。拿ViT-Large来说,它有24层Transformer模块,像24层楼一样一层层叠起来。每一层都有自己独立的参数,自己的"房间装修"。训练这样一个模型,意味着你要同时设计、存储、训练24套完全不同的参数。ViT-L/16这种规模的模型,参数量能到3
你或许没留意,日常在用的视觉AI模型,内部其实就是一栋“楼”。
以ViT-Large为例,24层Transformer模块层层叠上去,像24层楼。每层参数各自独立,相当于每间房单独装修。训练这种模型,等于要同时设计、存储、训练24套完全不同的参数,而ViT-L/16这一规模的参数量能到3亿出头。有研究者却发现,这24层楼装修虽然各不相同,住在里面的“人”——也就是模型学到的表征——模样却挺接近。相邻楼层间的表征相似度很高;跟卷积神经网络相比,Transformer各层之间的“家族相似性”明显更强。
事情就有点奇怪了。各层本来就长得差不多,为何还要耗费那么多参数逐层装修?能不能只建一层,让电梯上下跑24趟,用同一层楼模拟出24层楼的效果?
这篇论文要回答的正是这个问题。
**核心问题:共享一个模块,深度特性还能保留吗**
这个想法不算新鲜。Universal Transformer最早在语言模型领域提出,思路是用循环代替堆叠,反复套用同一个Transformer模块。
2019年,Universal Transformer就提出了“反复套用同一个模块”的思路,ALBERT也用跨层参数共享省下了大量存储。问题是,这类尝试有共同软肋:共享参数省钱,却往往以掉点为代价,因为模型确实需要在不同深度做不同的事。浅层可能在识别边缘和纹理,深层可能在理解物体和语义,所有层共用一套权重,这种“分工”怎么实现?
2026年一篇论文里的Raptor,是此前离解决这个问题最近的工作。它注意到一个现象:训练好的ViT,无论24层还是12层,层与层之间的变化并不均匀,会自然聚成若干前后相接的“阶段”,阶段交界处存在明显的转折点。Raptor据此把深度为L的网络拆成k个(例如k=4)不同的模块模板,让它们轮流复用。这套做法效果不错,用4个模板就能把原模型的大部分性能找回来。
不过Raptor留了个尾巴:它依然保留好几个不同的模块(k=4意味着4套参数),蒸馏训练时还要求学生模型去模仿老师模型每一个中间层的特征,这个要求相当苛刻。更关键的是,Raptor的最终效果还是比原始的全深度网络差一截。
这篇论文想走得更远:能不能真的只用一套参数、一个模块反复循环,而且不借助中间层特征对齐这类“拐杖”,就达到接近全深度模型的精度?
论文给出的答案是reViT。
**解法核心:把“深度”变成一个可以连续调节的旋钮**
reViT的思路说起来不复杂,设计却很巧妙。一个共享模块没法像24层独立模块那样各司其职,那就给它装一个“深度感知器”。每次循环到第t步,模块会知道“我现在处于整个深度的第几步”,再据此动态调整自己的前馈网络(FFN)部分。
具体怎么调?论文引入了一个专家库的概念。MoE(混合专家,Mixture of Experts)是一种让模型里存在多套“专家”参数、根据需要选择性组合使用的技术,常见做法是给不同的输入token分配不同的专家。
reViT的做法是准备E个(例如4个或8个)独立的FFN专家,每个专家对应一整套前馈网络参数。关键的一点在于,它并不像传统MoE那样让不同token去“挑”专家;它用一个极简的路由器,输入只有一个数:当前深度在网络中的归一化位置(比如一共12层,第3层就是3/11≈0.27)。路由器按这个位置算出E个专家的混合权重,接着在权重空间里直接对这E个专家的参数做加权平均,合成一个全新的、独一无二的FFN,这一层的所有token都交给这个融合后的FFN处理。
有个细节需要说明:融合做在参数层面,而不是计算结果层面。模型并非先跑四次FFN再把输出加权平均,而是先把四套权重加权平均成一套,FFN只跑一次。也就是说,不管专家有多少个,每一步的计算量始终等同于跑一个标准FFN;专家数量增加,增加的只是存储,推理时的计算负担并不会变大。
可以拿连锁餐厅来打比方:店里只有一个厨师,手里却有一本“菜谱合集”,里面记着几种基础菜式的配方。他不会把每道基础菜都做一遍端上桌让顾客自己挑,而是先看当前是第几道菜(第几道决定这顿饭走到哪个阶段,是开胃菜还是主菜),再按比例把几种基础配方当场调成一道新菜,一次炒好上桌。少了“看阶段调配方”这一步,厨师要么永远做同一道菜(也就是最原始的参数共享,掉点严重),要么得把所有基础菜都做一遍、让顾客自己混合(那计算成本就跟同时开四五个灶台一样高)。reViT走的是中间路线:配方随阶段变化,灶台始终只有一个。
路由器本身极轻,是一个只有16个隐藏单元的两层小型MLP,输入一个数字,输出E个混合系数。这些系数只跟“深度位置”有关,与具体是哪张图片、哪个token完全无关;因此同一深度上的所有输入共用同一套混合FFN。
**为什么选“权重融合”而不是传统MoE的“token分发”**
这篇论文没直接假定权重融合就是最优解,而是较真地把当前几种主流MoE做法放进同一个共享Transformer框架,做了一次公平比较。
被拿来对比的有DeepSeek-V3风格的token分发(每个token只挑少数专家来处理)、Qwen3风格的路由、把MoE塞进循环层的MoEUT,还有ReMoE、Soft-MoE这类输出混合方案——所有专家都算一遍,再把输出加权平均。
计算预算相同的前提下(论文用U这个指标衡量,U=1代表计算量和跑一个标准FFN相当),结果很说明问题。ImageNet-1k从零训练时,reViT准确率78.2%;同样走权重融合的Lory和SMEAR分别为77.9%和77.7%;token分发和输出混合那两类方法全卡在67.8%到70.6%之间,与reViT相差近10个百分点。10个百分点意味着什么?同样识别100张图,权重融合的方法能比token分发多认对将近10张,差距不算小。
对手们要把计算预算拉到4倍(U=4)才能部分追上这个差距。比如MoEUT在U=4能到77.6%,可那已经是跑四倍于reViT的FFN计算量换来的。
同等预算下权重融合为什么占优?一种合理解释是:token分发类方法说到底是“选择性计算”,每个token只动用部分专家的能力,计算资源被稀释了;权重融合则是把所有专家的知识压进一套参数里再用,没有信息损耗在路由选择上。打个比方,同样请四位顾问出主意,一种做法是每人只看问题的一部分、各自给建议(分发),另一种是四位先开会把意见统一成一份报告再交给你(融合)。如果顾问们本该对同一个问题做整体判断,统一意见显然比各管一段靠谱。
换成蒸馏训练场景(DINOv2大模型当老师,reViT当学生去模仿),这个优势基本还在。排名有些微调整,SMEAR在某个具体指标上反超了一点,但整体仍是权重融合阵营领先。
**蒸馏实验:学生模型几乎追平老师**
DINOv2*:Meta开发的一种自监督视觉预训练模型,不用人工标注就能学到强大的通用图像特征,常被当作“教师模型”来指导其他小模型学习。
论文让一个冻结参数的DINOv2-B/14当老师,训练reViT-B/14学生去模仿老师最后一层输出的特征。这里“只模仿最后一层”和Raptor“模仿每个中间层”形成鲜明对比——reViT拿到的监督信号其实更少、更粗糙。
结果相当亮眼。E=8专家配置下,reViT学生在ImageNet-1k线性探针上拿到83.9%的准确率,DINOv2-B/14老师本身是84.5%,只差0.6个百分点。学生仅靠最后一层输出去反推整个网络该怎么训练,最后几乎追平老师,这个结果本身就说明reViT的参数化方式确实抓住了某种更本质的东西。
下游任务上,reViT的迁移能力同样不错:语义分割(ADE20k数据集,用mIoU衡量)和深度估计(NYUv2数据集)两项都表现良好,E=8版本的ADE20k mIoU达到45.8%,比DINOv2-S/14老师的44.6%还高一点。
有个细节值得琢磨:reViT只用最后一层特征监督,却在多个专家数配置下(E=2、3、4)全面超过用中间层特征监督的Raptor。这暗示“模仿每一层”这种细粒度监督也许并非必须——参数化结构设计得当,靠更粗糙的信号也能学出正确的深度分工。
**弹性深度:一个模型checkpoint能在多个深度上跑**
这是reViT另一个让人眼前一亮的设计。路由器的输入只是一个“归一化深度位置”(0到1之间的数),并非针对某个固定层数训练出来的查找表,所以理论上这个位置坐标可以重新打网格。
举例来说,训练时网络深度是12层,归一化坐标是0、1/11、2/11……一直到1。部署时想把深度改成24层,只需把坐标重新打成0、1/23、2/23……一直到1,同一个训练好的路由器照样能用,不用重新训练。
这就像一把能连续调节的尺子:原来标了12个刻度,现在想标24个,不必重造一把尺子,把同一根尺子上的刻度画密一点就行。反过来,如果路由器学的是针对12层“死记硬背”的固定配方(就像前面提到给每层单独配一个LoRA适配器的方案),换成24层就完全抓瞎,因为压根没有“第17层该用什么配方”这种记录。
为了让模型真正具备这种弹性,训练时用了elastic-depth training技巧:随机丢弃一些循环步骤(思路类似DropPath,但丢的是整个循环步而非某个子模块),被丢弃的那一步直接变成“什么都不做”的恒等映射,剩下保留的步骤重新编号、重新铺归一化坐标。这样路由器在训练中见过各种不同的有效深度,而不是只认识固定的12或24。
实验测了L=8、12、16、24四种推理深度,对比“深度感知路由”(reViT默认方案)和“纯特征感知路由”(不看深度信息,只看输入特征本身,类似SMEAR的做法)两种变体。深度感知版本在深度从8涨到16的过程中各项指标持续上升:ADE20k mIoU从40.3一路涨到44.9,ImageNet线性探针准确率从82.6%涨到83.7%,NYUv2的深度估计误差从0.522米降到0.485米。
不带深度信号的对照组则在深度超过12之后基本“躺平”,涨不动了,NYUv2上甚至出现轻微性能倒退(从0.498米恶化到0.507米)。
这组对比指向一点:把"当前处在整个深度的哪个位置"直接告诉模型,这条信息本身就管用。模型因此能判断在哪个阶段该拿出哪种计算行为,不用光靠输入内容去猜。
专家数量是不是越多越好:规模效应出现分化
专家数量E从1加到8,对准确率有什么影响,论文也做了测试。
小模型(S/16)从E=1时的70.6%升到E=8时的80.2%,提高9.6个百分点,幅度不小;中等模型(B/16)提升6.8个点;大模型(L/16)只提升5.7个点。
换句话说,模型越大,多添专家带来的边际收益越小。论文借助"有效秩"(effective rank)这一数学工具来解读:它衡量的是专家库中几套参数究竟有多"不一样",是真各有特色,还是差别不大、彼此高度重复。
有效秩*:用来衡量一组向量或矩阵"有效独立方向数"的指标。数值越接近专家数量E,说明专家之间越不相同、互补性越强;数值远小于E,则说明专家彼此高度相似,增加数量的边际收益会递减。
数据是这样的:S/16在E=8时,专家库本身、路由器选择的混合方式、最终实际用到的融合权重,三者有效秩分别为7.7、7.6、7.3,几乎都逼近理论上限8,8个专家基本各管一摊,每个都贡献了独特方向。L/16同样配置下,这三个数字是6.2、5.2、4.0。专家库本身还算多样(6.2),可到了实际融合环节,有效方向数掉到4.0,说明大模型没能把8个专家的多样性充分用起来,不少专家其实在干重复的活。
这个结果挺耐人寻味。它提示,大模型内部或许本来就用不着那么多"不同的处理方式",其深度表征已相对均质,再塞进更多专家,能提升的空间自然有限。小模型则相反,它更"渴望"多样化的深度特性,专家数量增加能实打实转化为准确率上涨。
路由器究竟学到了什么:专家之间怎么分工
论文还做了一组颇为细致的解剖实验,想弄清路由器内部到底学会了怎样的"深度程序"。
研究者把不同深度下各专家的混合权重画出来看,发现了一条规律:没有任何目标函数明确要求,训练出的路由器却会自发让"主导专家"在训练过程中分段切换。深度1到深度3可能主要由专家A担纲,深度4到深度7换成专家B主导,切换边界附近则有一段柔和的混合过渡。
这和此前Raptor论文观察到的"ViT各层自动聚成几个阶段"高度呼应。区别在于,Raptor是先看到现象、再手工设计阶段结构;reViT则是靠训练自动涌现出类似的分段模式,而且仅仅靠模仿老师模型最后一层的输出。这件事本身挺耐人寻味。
研究者还做了个"拆专家"实验:把某个专家的混合权重强行设成0,观察去掉它之后,学生模型与老师模型的特征相似度(以CKA指标衡量)会掉多少。结果是,去掉大多数专家都会让相似度下降,但降幅普遍小于随机扰动同等规模权重变化造成的损失,说明专家库的设计确实比随机调权重更稳健、更有针对性。有一个专家(E=8配置下的5号专家)被去掉后相似度几乎没变,暗示它承担的角色可能相对次要,或者可被替代。
更有意思的是"打乱专家分配"实验:专家本身不动,每个深度的混合系数也不动,只把"哪个系数对应哪个专家"这层映射关系随机打乱重排。结果不管怎么打乱,相似度都会大幅下降。E=4时,23种非恒等排列全部导致相似度下降;E=8时测试的64种排列同样全部下降。
这说明了挺关键的一点:光有一套多样化的专家库还不够,专家与深度位置之间的具体对应关系,本身就是训练学出来的、有意义的知识,不能随便换着用。
实际部署:动态图还是固定图
最后说说这个设计落地时的权衡。
reViT的融合FFN只跟深度位置有关,跟输入图片的具体内容无关。所以部署时一旦定好用多少层(比如固定12层),这12个融合后的FFN就能提前算好,存成12套独立的普通dense FFN,插进一张标准的、不含任何路由和融合逻辑的计算图。部署时就不必在线做专家融合这一步,推理路径与一个传统的12层ViT没有区别。
代价在存储。原先存E套专家(比如4套)就能覆盖所有深度,现在要存L套融合后的FFN(比如12套),存储开销从"专家数量级"变成"深度数量级"。
论文还在H100 GPU上实测了动态路由版本(不预先融合、实时计算)相对传统ViT的延迟开销。batch size为1时,reViT的部署参数量只有标准ViT的1/3.6,运行时显存减少48%,延迟则增加13%;batch size涨到64时,延迟开销升到39%,显存优势基本被摊薄到与标准模型差不多。可见动态路由的额外计算成本(主要来自用FP32做权重融合)在大批量场景下会更明显,这也是这项技术工程落地时要权衡的现实问题。
现炒现吃当然灵活,代价是顿顿都得配菜、开火;把一周的菜提前切好分装冷冻,开饭是快了,冰箱却要占更大地方。动态融合和固定图预计算也是这个道理:一个费时间,一个费空间,选哪个看你更缺哪样,没有绝对的优劣。
Q&A
Q1:reViT是什么,它和普通ViT有什么区别?
A:reViT是一种新架构,用单个Transformer模块反复循环,替代传统ViT的多层堆叠结构。普通ViT每层参数独立,reViT则共享同一套注意力参数,并借助一个深度感知路由器动态混合一小组专家FFN的权重,让共享模块在不同深度表现出不同行为,同时大幅减少存储参数量。
Q2:reViT相比Raptor这类同类研究有什么优势?
与Raptor相比,reViT的做法不同。Raptor要保留多个独立模块模板,比如4个,还得靠老师模型中间层特征做蒸馏监督;reViT只用1个模块,监督信号仅来自老师模型最后一层输出。在同等专家数配置下,ImageNet、ADE20k、NYUv2等多项指标上,reViT的表现都优于Raptor。
弹性深度功能又是怎么落地的?
路由器接收的是归一化深度坐标,也就是当前层数除以总层数,并非针对固定层数训练的查找表。训练阶段,模型通过随机丢弃循环步骤来适应不同的有效深度;到了部署阶段,只要重新铺设坐标网格,同一个训练好的checkpoint便能在8层、12层、16层、24层等不同深度下工作,不用再训练。