百度开源 LoopVL:1B 循环视觉模型省 260 倍数据

百度开源 LoopVL:1B 循环视觉模型省 260 倍数据

一份把「循环 Transformer 进视觉语言模型」这件事讲清楚的技术解读:它省的不是参数,是训练数据

目录

2026年9月29日,中国人民大学高瓴人工智能学院与百度牵头,联合清华、上海交大、莫纳什大学、马普智能系统研究所等八家机构,在 arXiv 提交 LoopVL(Recurrent Visual Intelligence,循环视觉智能)并开源代码与权重。这个语言骨干约 1B 的视觉语言模型,只用了 0.14T 训练 token,就在多项基准上追平甚至超过需要 36T 量级数据才能训出的更大模型,把「循环 Transformer」第一次完整地搬进了看图说话的任务里。它真正值得关心的,不是又多了一个榜单选手,而是它用一种很反直觉的方式,重新分配了「参数」和「算力」。

一、先说清楚:循环复用不是"把层多跑几遍"

很多人看到「循环 Transformer」,会下意识以为是把同一层网络反复执行、原地重复同一个结果。这个直觉是错的,也是理解 LoopVL 的入口。要分清两个常被混为一谈的量:参数 是模型保存的权重,隐藏状态是一次输入在计算过程中不断产生、不断变化的中间表示。相同权重处理不同状态,输出完全可以不同------所以复用模块不等于原地重复,它复用的是「变换规则」,不是「计算结果」。

这条路线有明确的来路。循环推理模型的源头是 Sapient AI 在 2025 年提出的 HRM(Hierarchical Reasoning Model),最早用来解数独、ARC-AGI 这类符号推理题,参数远小于对手却打得过更大的系统;2025 年 6 月的 HRM-Text 把它扩展成自回归语言模型,并在 2026 年 5 月合入 Hugging Face Transformers。LoopVL 沿用了 HRM-Text 的 L/H 分层循环框架,但自己从头训了语言主干,论文真正的新贡献是多模态扩展 与对空间对齐视觉 token 的分析------也就是「让循环第一次真正去看图」。

这里还有一个容易踩的坑:循环复用 ≠ 测试时计算(test-time scaling)。Test-time scaling 是推理时多采样、多步推理(比如 Self-Consistency、显式思维链),它不改模型参数、靠外部多次调用摊薄错误;而 LoopVL 的循环发生在单次前向传播内部,是前向计算的展开方式变了,不是调用了模型很多次。把两者混为一谈,就会误读后面那些「多算几遍」的实验。

把循环从语言模型搬到视觉模型,难点到底在哪里?语言模型处理的是一维 token 序列,状态随位置自然排开;图像里的文字、物体、空间关系挤在同一批视觉 token 里,不同循环可能需要关注不同的视觉证据。复用同一套参数时,模型是继续盯着第一轮已经盯过的位置,还是转向第一轮忽略的地方?这正是 LoopVL 想回答的问题。它踩在一条已经被验证过的路线上:HRM-Text 在 2025 年就用约 1B 参数、约 40B 训练 token,拿到了需要 4 到 36 万亿 token 才能训出的开放模型的成绩------「用运行时计算换参数规模」的 thesis 先在语言上立住了,LoopVL 才把它接到了视觉上。

(图一:把模型做强的三条路------加深、加宽、循环复用,LoopVL 走的是第三条)

二、它到底怎么"循环":32 层参数跑出 128 次计算

LoopVL 的主干是两份参数栈:L(低层)和 H(高层),各 16 层,两栈之间不共享参数 ,各自在栈内被反复调用。默认调度记作 H2L3 :先连跑三次 L,接一个 H;再连跑三次 L,再接一个 H,即 [L×3 → H] × 2。算下来是 2 轮 × 每轮 4 次模块调用 × 每次 16 层 = 128 次 Transformer 层调用,而需要保存的独立参数仍然只有 32 层。复用给模型「加」的是计算深度,不是参数规模。这对应一个工程上的好消息:显存占用由参数规模决定、推理算力由执行次数决定,两者被拆开,意味着小显存设备也能跑出大模型的「思考深度」,代价是更长的单次推理延迟。

视觉部分的处理更值得细看。图像先经过冻结的 Penguin 视觉编码器,每个图像块得到 1024 维特征,再经两层 GELU 投影器映射到语言骨干使用的 1536 维空间,与指令 token 拼进同一条序列。图像块在序列中的位置被保留下来(用二维 RoPE 保留行列坐标),所以后续注意力能对应回原图。关键点是:视觉编码器不会在每轮重新运行,真正持续变化的是进入语言骨干之后的「视觉 token 状态」------模型既能改变这些位置「表示什么」,也能改变「后续计算对哪些位置分配更多注意力」。每轮开始还会重新注入初始视觉嵌入形成的锚点,强度由问题相关的逐 token 门控和轮次系数控制,让状态演化始终留一条接触初始视觉特征的路径。

训练上有一个容易被忽略的细节:选择性反向传播。默认的 8 次模块调用全部参与前向,但反向图只从最后两次调用(L6、H2)逐步扩展到五次(H1、L4、L5、L6、H2),最早的三次 L 调用不进入梯度计算。节省的是反向图的显存与算力,前向计算一次没少。换句话说,128 次前向层计算,不等于对 128 个执行位置都做了完整反向传播,算训练成本不能只用展开层数乘一个固定系数。

论文还专门做了「视觉状态该不该继续更新」的消融。在保留第一轮的前提下,第二类在推理时丢弃第二轮 L 模块的视觉更新,第三类在推理时冻结第二轮视觉状态,两者都让性能下降;但这两类只改了推理、没改训练,仍可能夹带分布不匹配的干扰。于是作者又单独训练了 Read-only 变体:第二轮视觉状态在训练和推理中都按只读规则处理,视觉 token 仍可读、非视觉状态继续更新------结果依然低于正常 LoopVL。这组证据支持一个判断:在当前架构与训练设置下,持续更新视觉状态是循环里有用的部分;但这还不能把所有收益归因给某一次注意力转移,也不能证明任何循环模型都会获得同样优势。

(图二:LoopVL 的四阶段训练流水线,视觉编码器全程冻结,从零训练的是语言骨干与视觉接口)

三、数字说话:同预算下,循环把 1B 拉到 4B 量级

判断循环到底有没有价值,最干净的做法是把数据量控制住。论文用完全相同的 Transformer block 设计,统一 0.14T 训练 token 预算,训练了三套非循环基线:32 层的 Transformer-VL 1B(与 LoopVL 层数、隐藏维度完全一致,区别只在于每层只跑一次)、以及靠加深(78 层)或加宽(隐藏维度 2816)扩展出的两个约 4B 模型。结果分三层看:

  • 对比同尺寸 1B 基线:LoopVL 在八项受控任务上全部超过它。MMStar 从 55.33 升到 63.47,RealWorldQA 从 55.29 升到 70.98,ChartQA 从 51.12 升到 74.52。这组对照直接证明了「循环复用共享模块」带来的增益------两者独有层数、隐藏维度一样,LoopVL 只是把执行深度从 32 拉到了 128。
  • 对比约 4B 基线:LoopVL 在八项里有五项同时超过两个 4B 模型(如 RealWorldQA 70.98 对 66.54 / 66.01,MathVision 38.49 对 35.92 / 33.55)。但在 VMCBench、AI2D、ChartQA 上,4B 基线仍更高(ChartQA 74.52 对 InternVL3.5-4B 的 86.00)。
  • 跨模型口径 :LoopVL 用 0.14T token,而 Qwen3.5-2B、InternVL3.5-2B 用了约 36T,训练数据量相差约 260 倍,LoopVL 仍在 LogicVista、MMMU-Pro、MMStar、RealWorldQA、MMK12-Math、MathVision 等多项上达到或超过它们。

把算力账也算清楚,结论会更克制。LoopVL 报告的训练 FLOPs 是 2.47×10²¹,比两个 4B 基线(2.89、2.99×10²¹)分别低约 14.5% 和 17.4%,却接近 1B 基线的 2.7 倍。所以它证明的是「参数和计算可以重新分配」,不是「循环结构比规模匹配的模型更省算力」。跨团队那张 260 倍的对照,还混合了作者自评测与公开成绩,评测协议未必完全对齐,读的时候要打折扣。

把事实、推断和未知分开,才不会被「1B 打 4B」的标题带着走:

  • 已证实(来自 LoopVL 论文 arXiv:2609.38426,且 Hugging Face 开源团队 Niels Rogge 公开祝贺并收录、构建官方体验页;机器之心、多家媒体交叉印证关键数字):约 1B 语言骨干 + 0.14T 训练 token、受控对照 8 项全超 1B 基线且 5 项超 4B 基线、POPE 综合 F1 90.71、HF Daily Papers 日榜第一 / 周榜第二、GitHub 星标突破 250。POPE 综合 F1 为 90.71(榜单显示为 90.7),Hugging Face 开源团队的 Niels Rogge 公开祝贺并指出 LoopVL-1B 位列该幻觉基准榜首;截至 2026 年 10 月 12 日,论文页已获 474 次点赞,登 HF Daily Papers 日榜第一、周榜第二。
  • 作者的推断:循环给的增益,可能不仅来自「加了计算深度」,还来自「让模型逐轮调整对视觉信息的处理方式」------一份状态随着内部演化改变了视觉关注。这比单纯堆层数更接近「人类反复端详一张图」的直觉。但循环也不是越多越好:论文发现固定一个训练好的检查点、只改推理调度,MMStar 会随循环数增加而下滑,说明收益来自训练时学出的特定状态演化路径,而非简单地多转几圈。
  • 目前未知:这种跨循环注意力重组是否是所有循环架构的普适机制?它的边界在哪?论文只用了 32 个诊断样本,且缺少更一般 Model-Loop 架构的匹配对照,尚不能据此下全称判断。

(图三:同 0.14T 预算下 MMStar 对照,LoopVL 把 1B 基线明显拉高,已逼近两个 4B 基线)

还有一个被命名为 Visual Aha Moment(视觉顿悟时刻) 的现象。在第 63 次到第 64 次层调用的两轮 Model-Loop 交界处,平均 Gini 系数从 0.405 突然跃升到 0.858,第二轮的空间熵整体更低------意味着模型从第一轮相对分散的视觉关注,转向了第二轮对少数视觉区域的集中关注;一些在第一轮排名后 50% 的视觉 token,在第二轮跃升到前 25%。即便改用完整反向传播、或移除视觉锚点与门控机制,这种现象依然存在。但要注意:注意力更集中,不等于「看图更多」,更不等于「看对了」------它只是描述分布变窄,不能自动等同于答对。论文用空间熵、Gini 和注意力覆盖率三套指标分别刻画分布,其中熵按参考答案查询位置统计、Gini 还纳入指令查询位置,采用的查询范围不同,不能把数值当成可互换的同一个指标。把热力图里「第二轮更聚焦」读成「第二轮看对了」,是常见的过度解读。

四、现在就试:两条上手路径

LoopVL 已经开源,对想动手的开发者有两条现成路径。

路径一(零门槛) :直接打开 Hugging Face Space huggingface.co/spaces/hugging-apps/loopvl。这个交互式 Demo 由 Hugging Face 开源团队用 ZeroGPU 免费算力搭好,并已转交 TierFlow 组织,输入图片加问题即可看到 LoopVL 的回答,适合先建立直观感受。上手时建议先用带文字、计数、空间关系的图表题试,这类任务最容易触发前面说的跨循环注意力重组;纯短答或纯描述类问题,循环的增益相对有限。

路径二(本地复现):把权重和代码拉到本地跑推理。

bash 复制代码
# 克隆官方仓库(组织:Tier-Flow)
git clone https://github.com/Tier-Flow/LoopVL
cd LoopVL

# 安装依赖(环境:Python + PyTorch + 含 HRM-Text 支持的 transformers)
pip install -e .

# 权重:huggingface.co/TierFlow/LoopVL
# 推理入口以仓库 README 为准,下面只给「循环调度」的概念骨架

LoopVL 的核心机制------H2L3 嵌套循环------可以压缩成下面这段概念示意(不是完整推理脚本,注释说明计算顺序):

python 复制代码
# LoopVL 默认 H2L3 调度(概念示意,非逐字源码)
# 依据论文 §2.1:L / H 各 16 层,跨调用共享各自参数
H = scale(embed(图文 token))   # 高层状态,从输入初始化
L = zeros(...)                 # 低层状态,零初始化并跨轮保留

for cycle in range(2):                 # Model-Loop,两轮
    H = reinject_visual_anchor(H, visual_embed, cycle)
    for _ in range(3):                # Module-Loop,每轮三次 L
        L = L_stack(L, cond=H)
    H = H_stack(H, cond=L)            # 整合精炼后的低层状态

logits = lm_head(H)                   # 最终 H 状态进入输出头

读懂这段,也就读懂了 LoopVL 的全部「魔法」:同样的 L、H 两份参数,靠嵌套循环被反复调用,低层高频细化、高层低频整合,计算深度由此从层数里解耦出来。

五、冷静视角:哪些话要打折

「1B 打败 4B」「循环让模型变聪明」这类标题最容易让人误判,至少四件事要说清楚:

第一,「1B」指的是语言骨干规模。Hugging Face 权重页显示整个模型约 2B;而用来对照的 4B,是同一 0.14T 预算下从头训练的稠密基线,不是业已成型的商用 4B 模型。把口径混在一起比,结论会失真。更严谨地说,论文里的「从头训练」要注明对象:视觉编码器用的是预训练好的 Penguin 并全程冻结,真正从零训练的是语言骨干与视觉接口,并非整个模型从随机权重开始。

第二,既然循环能加深度,为什么多算几遍反而更差? 作者固定一个按 H2L3 训练好的检查点,只改推理时的调度:把 Model-Loop 从 2 轮加到 3 轮、4 轮,MMStar 从 63.47 一路降到 58.20、再降到 24.00。更刺眼的是,同样是 128 次层调用,H2L3 拿 63.47,而 H4L1 只有 24.67------差别只在计算怎么分配。同样执行 64 次层调用的 H1L3 与 H2L1,只因计算分配不同,H2L1 在五项任务上全面更好。结论很直接:循环能力不等于「可以无限增加计算次数」,训练与推理的循环配置必须匹配,执行次数相同也不代表状态路径相同。

第三,它不是「同算力下循环必胜」。LoopVL 的训练 FLOPs 是 2.47×10²¹,比两个 4B 基线(2.89、2.99×10²¹)分别低约 14.5% 和 17.4%,但接近 1B 基线的 2.7 倍。它提供的是「参数与计算可以重新分配」的证据,不是「循环结构比规模匹配模型更省算力」的结论。跨团队比较还混合了作者评测与公开成绩,协议未必对齐。

第四,Visual Aha Moment 是现象描述,不是因果证明。它只有 32 个诊断样本,注意力更集中既不说明看图更多,也不说明看对了;要证明某个被重新关注的图块「导致」答对,需要专门的遮挡、替换或状态干预实验。作者自己把它列为后续验证方向,而不是已完成的因果结论。

所以这件事的增量不在于「又一个小模型逆袭」,而在于它把一个长期停留在语言模型里的假设------用运行时计算换参数规模,是否也能让模型更好地看图------第一次做了系统验证,并顺手留下了一个耐人寻味的观察:共享完全相同的参数,模型却能在不同循环里重新分配对图像的注意力。

总结

LoopVL 把「循环 Transformer」从语言模型推进到了视觉语言模型,核心是用 L/H 两份参数栈的嵌套循环(默认 32 层参数展开为 128 次层调用),在 0.14T 训练 token 的预算下,把约 1B 语言骨干的成绩拉到逼近 4B 稠密基线的水平,并以约 1/260 的训练数据追平了 Qwen3.5、InternVL 等公开 VLM。它最值得记下的两点:一是「参数复用成为多模态模型增加有效计算深度的可行路径」,二是「Visual Aha Moment」暗示循环的价值可能不止于加深度,还在于让模型逐轮重新组织视觉证据。对普通开发者,现在就能去 Hugging Face Space 或本地仓库亲手试;对做多模态 Agent 的团队,这条「学会该在什么时候再观察一次」的路线,比单纯堆参数更值得长期跟踪。

相关推荐
哔哩哔哩技术1 小时前
Index-Translate:支持 150 种语言的多模态翻译模型是如何炼成的?
人工智能
sinat_286945191 小时前
Claude Code Review
人工智能·代码复审
miofly1 小时前
GitHub 今日推荐|MOSS-Image:靠坐标框精确控制文字排版的图像生成模型
python·开源·github
尘世中一位迷途小书童1 小时前
词表(tokenizer),一个开训就改不了的决定
人工智能
Tiandaren1 小时前
么是agent、为什么要做agent、怎么做agent、怎么工程化
人工智能·python·深度学习·大模型
codigger1 小时前
大模型 Temperature 和 Top-p 到底有什么区别?一篇讲透原理与调参
ai·#人工智能·#agent
四六的六1 小时前
一次改回去越界的沙箱复盘:配置恢复了,token 还活着,检测器漏了最关键的那条
人工智能·openai·agent·个人开发·ai编程·ai大模型·ai产品
Daneas1 小时前
AI文生图提示词生成器(SD 1.5、SDXL、Flux、Krea-2)
人工智能
半摆烂日常1 小时前
手机表单的左滑操作:触摸事件的处理细节
大数据·开发语言·人工智能·智能手机·https·c#