
EARR熵门控循环推理全解析ZDTaichu5.0-9B 如何给难token加算力的原理与代码实现【免费下载链接】ZDTaichu5.0-9B项目地址: https://gitcode.com/gh_mirrors/zd/ZDTaichu5.0-9BZDTaichu5.0-9B 是面向视觉理解、空间推理与具身智能的多模态基础模型其内置的EARR熵门控自适应循环推理Entropy-Gated Adaptive Recurrent Reasoning机制通过在潜空间中为较难的 token 动态增加额外循环计算在几乎不增加推理成本的前提下显著提升复杂任务的推理性能。本文将从原理到代码完整剖析这套自适应思考黑科技。什么是EARR让难token多算几层 传统大模型对每个 token 只做一次固定深度的前向计算——无论这个问题是今天天气还是厨房左边是哪个房间计算量完全一样。EARR 的核心思想是把额外算力只分配给模型拿不准的位置。一次标准前向传播会输出当前 token 的输出分布logits和隐藏状态。EARR 的流程分为四步标准 Forward得到 logits 与 hidden state熵门控检查输出分布的不确定性是否超过阈值潜空间循环对触发位置的中间层块重复计算用阻尼更新逐步细化表示轨迹读出比较整个计算轨迹选择风险最低的状态必要时回滚。注意这里增加的是模型内部的表示计算而不是额外发起一次外部工具调用因此对推理系统几乎透明。熵门控如何判断一个token难不难熵Entropy衡量的是输出分布的不确定性模型越犹豫熵越高。EARR 在普通前向完成后计算最后一个输入位置词表分布的熵H只有当H 阈值默认1.0 nat时才启动循环推理低熵有把握→ 直接输出零额外开销高熵拿不准→ 进入潜空间循环继续精化。熵的计算刻意采用 FP32 以保证数值稳定见 recurrent_reasoning.py#L111-L114。触发条件的判断逻辑在 recurrent_reasoning.py#L310-L323。 提示输出熵反映的是模型自身的不确定性并不等价于答案真伪。因此内部推理仍需与视觉证据、外部执行结果和任务终态检查结合。潜空间循环中间层块重复计算 阻尼更新EARR 默认选取语言模型的第 1316 层层号从 0 开始即12,13,14,15作为中间层块触发后把这个块重复执行N1 是标准深度N2、N3…… 则是对中间块的多轮复用。直接反复套用同一层块容易让表示漂移甚至发散所以实现中引入了阻尼更新每次状态修正只走一小步权重1/N按候选轨迹深度自适应确定同时保留对初始表示的锚定约束h_new (1 - w) · h_in w · Block(h_in)这一段核心逻辑位于轨迹评估函数 recurrent_reasoning.py#L655-L665其中damping_weight 1.0 / max_candidate_n保证整个候选轨迹使用同一固定阻尼权重避免中途切换步长引入震荡。轨迹读出KL收敛判断与自动回滚 循环到什么时候停EARR 用双重停止判据而不是简单的循环次数停止条件说明代码位置熵上升候选熵 上一接受候选熵说明越算越乱立即停止并回滚到上一个最佳状态recurrent_reasoning.py#L710-L719KL 提前收敛KL(当前分布 ‖ 上一接受分布) 1e-4输出几乎不再变化接受当前结果recurrent_reasoning.py#L728-L738KL 散度同样在 FP32 下计算并做了非负截断防止舍入误差导致的微小负值recurrent_reasoning.py#L117-L129。整个评估 N2 → 比较 → 接受或回滚的候选轨迹循环完整实现在 recurrent_reasoning.py#L631-L755。代码实现剖析两种推理路径EARR 以 Mixin 形式RecurrentReasoningMixin注入模型主模型在 modeling.py#L135 继承它并在 modeling.py#L964 处调用统一入口_forward_with_recurrent_reasoning不新增任何模型参数。实现区分两条路径Prefill 推理无 KV 缓存直接对当前输入 token 重新计算前缀层 中间块实现在 recurrent_reasoning.py#L757-L936Decode 推理逐 token 解码时读取历史缓存。由于每次候选评估都可能改写缓存代码通过冻结历史缓存 每次分叉fork一份临时工作缓存保证候选互不污染快照函数 recurrent_reasoning.py#L531-L563、缓存分叉 recurrent_reasoning.py#L611-L629整条解码路径见 recurrent_reasoning.py#L938-L1083。机制文档与完整说明见 README_zh.md模型主体代码见 modeling.py。EARR超参数配置5个环境变量快速上手 ⚡将 modeling.py 与 recurrent_reasoning.py 拷贝进模型目录后通过环境变量即可配置代码中统一在 recurrent_reasoning.py#L59-L86 读取环境变量默认值作用RECURRENT_REASONING_LAYER_INDICES12,13,14,15重复计算的中间层块必须连续、升序RECURRENT_REASONING_MAX_ITERS1额外循环上限0表示关闭 EARRRECURRENT_REASONING_THRESHOLD1.0触发循环的输出熵阈值natRECURRENT_REASONING_KL_THRESHOLD1e-4KL 提前收敛停止阈值0关闭RECURRENT_REASONING_VERBOSE0输出熵值、停止原因等调试日志调参建议想让更多位置触发推理就调低THRESHOLD担心速度则调小MAX_ITERS。效果如何空间与具身推理全面提升 在 Transformers 库、batch_size1 的设置下开启 EARR 后 ZDTaichu5.0-9B 在复杂空间推理与具身交互基准上全面小幅提升AreaBenchmark基础模型with EARR复杂空间推理ViewSpatial0.5410.5427复杂空间推理MMSI-Bench0.3680.374复杂空间推理MindCube-tiny0.74040.75具身交互RoboSpatial0.68000.7000对空间具身任务而言EARR 恰好可以围绕困难的对象关系、参照系转换和操作前提判断分配额外计算——这正是提升最集中的场景。内部循环改善当前判断外部任务循环根据新观测更新后续行动两者承担不同层次的工作。总结EARR 用熵门控 阻尼循环 双判据停止 轨迹回滚四件套把思考深度变成运行时按需求分配的资源简单的 token 走快车道困难的位置才获得潜空间加算。这套机制无需额外参数、不改变外部接口是 ZDTaichu5.0-9B 在空间推理与 Agent 任务上保持第一梯队的关键设计之一。【免费下载链接】ZDTaichu5.0-9B项目地址: https://gitcode.com/gh_mirrors/zd/ZDTaichu5.0-9B创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考