推理全解析:ZDTaichu5.0-9B 如何給“難token“加算力的原理與代碼實(shí)現(xiàn))
EARR熵門控循環(huán)推理全解析ZDTaichu5.0-9B 如何給難token加算力的原理與代碼實(shí)現(xiàn)【免費(fèi)下載鏈接】ZDTaichu5.0-9B項(xiàng)目地址: https://gitcode.com/gh_mirrors/zd/ZDTaichu5.0-9BZDTaichu5.0-9B 是面向視覺理解、空間推理與具身智能的多模態(tài)基礎(chǔ)模型其內(nèi)置的EARR熵門控自適應(yīng)循環(huán)推理Entropy-Gated Adaptive Recurrent Reasoning機(jī)制通過在潛空間中為較難的 token 動態(tài)增加額外循環(huán)計(jì)算在幾乎不增加推理成本的前提下顯著提升復(fù)雜任務(wù)的推理性能。本文將從原理到代碼完整剖析這套自適應(yīng)思考黑科技。什么是EARR讓難token多算幾層 傳統(tǒng)大模型對每個 token 只做一次固定深度的前向計(jì)算——無論這個問題是今天天氣還是廚房左邊是哪個房間計(jì)算量完全一樣。EARR 的核心思想是把額外算力只分配給模型拿不準(zhǔn)的位置。一次標(biāo)準(zhǔn)前向傳播會輸出當(dāng)前 token 的輸出分布logits和隱藏狀態(tài)。EARR 的流程分為四步標(biāo)準(zhǔn) Forward得到 logits 與 hidden state熵門控檢查輸出分布的不確定性是否超過閾值潛空間循環(huán)對觸發(fā)位置的中間層塊重復(fù)計(jì)算用阻尼更新逐步細(xì)化表示軌跡讀出比較整個計(jì)算軌跡選擇風(fēng)險最低的狀態(tài)必要時回滾。注意這里增加的是模型內(nèi)部的表示計(jì)算而不是額外發(fā)起一次外部工具調(diào)用因此對推理系統(tǒng)幾乎透明。熵門控如何判斷一個token難不難熵Entropy衡量的是輸出分布的不確定性模型越猶豫熵越高。EARR 在普通前向完成后計(jì)算最后一個輸入位置詞表分布的熵H只有當(dāng)H 閾值默認(rèn)1.0 nat時才啟動循環(huán)推理低熵有把握→ 直接輸出零額外開銷高熵拿不準(zhǔn)→ 進(jìn)入潛空間循環(huán)繼續(xù)精化。熵的計(jì)算刻意采用 FP32 以保證數(shù)值穩(wěn)定見 recurrent_reasoning.py#L111-L114。觸發(fā)條件的判斷邏輯在 recurrent_reasoning.py#L310-L323。 提示輸出熵反映的是模型自身的不確定性并不等價于答案真?zhèn)?。因此?nèi)部推理仍需與視覺證據(jù)、外部執(zhí)行結(jié)果和任務(wù)終態(tài)檢查結(jié)合。潛空間循環(huán)中間層塊重復(fù)計(jì)算 阻尼更新EARR 默認(rèn)選取語言模型的第 1316 層層號從 0 開始即12,13,14,15作為中間層塊觸發(fā)后把這個塊重復(fù)執(zhí)行N1 是標(biāo)準(zhǔn)深度N2、N3…… 則是對中間塊的多輪復(fù)用。直接反復(fù)套用同一層塊容易讓表示漂移甚至發(fā)散所以實(shí)現(xiàn)中引入了阻尼更新每次狀態(tài)修正只走一小步權(quán)重1/N按候選軌跡深度自適應(yīng)確定同時保留對初始表示的錨定約束h_new (1 - w) · h_in w · Block(h_in)這一段核心邏輯位于軌跡評估函數(shù) recurrent_reasoning.py#L655-L665其中damping_weight 1.0 / max_candidate_n保證整個候選軌跡使用同一固定阻尼權(quán)重避免中途切換步長引入震蕩。軌跡讀出KL收斂判斷與自動回滾 循環(huán)到什么時候停EARR 用雙重停止判據(jù)而不是簡單的循環(huán)次數(shù)停止條件說明代碼位置熵上升候選熵 上一接受候選熵說明越算越亂立即停止并回滾到上一個最佳狀態(tài)recurrent_reasoning.py#L710-L719KL 提前收斂KL(當(dāng)前分布 ‖ 上一接受分布) 1e-4輸出幾乎不再變化接受當(dāng)前結(jié)果recurrent_reasoning.py#L728-L738KL 散度同樣在 FP32 下計(jì)算并做了非負(fù)截?cái)喾乐股崛胝`差導(dǎo)致的微小負(fù)值recurrent_reasoning.py#L117-L129。整個評估 N2 → 比較 → 接受或回滾的候選軌跡循環(huán)完整實(shí)現(xiàn)在 recurrent_reasoning.py#L631-L755。代碼實(shí)現(xiàn)剖析兩種推理路徑EARR 以 Mixin 形式RecurrentReasoningMixin注入模型主模型在 modeling.py#L135 繼承它并在 modeling.py#L964 處調(diào)用統(tǒng)一入口_forward_with_recurrent_reasoning不新增任何模型參數(shù)。實(shí)現(xiàn)區(qū)分兩條路徑Prefill 推理無 KV 緩存直接對當(dāng)前輸入 token 重新計(jì)算前綴層 中間塊實(shí)現(xiàn)在 recurrent_reasoning.py#L757-L936Decode 推理逐 token 解碼時讀取歷史緩存。由于每次候選評估都可能改寫緩存代碼通過凍結(jié)歷史緩存 每次分叉fork一份臨時工作緩存保證候選互不污染快照函數(shù) recurrent_reasoning.py#L531-L563、緩存分叉 recurrent_reasoning.py#L611-L629整條解碼路徑見 recurrent_reasoning.py#L938-L1083。機(jī)制文檔與完整說明見 README_zh.md模型主體代碼見 modeling.py。EARR超參數(shù)配置5個環(huán)境變量快速上手 ?將 modeling.py 與 recurrent_reasoning.py 拷貝進(jìn)模型目錄后通過環(huán)境變量即可配置代碼中統(tǒng)一在 recurrent_reasoning.py#L59-L86 讀取環(huán)境變量默認(rèn)值作用RECURRENT_REASONING_LAYER_INDICES12,13,14,15重復(fù)計(jì)算的中間層塊必須連續(xù)、升序RECURRENT_REASONING_MAX_ITERS1額外循環(huán)上限0表示關(guān)閉 EARRRECURRENT_REASONING_THRESHOLD1.0觸發(fā)循環(huán)的輸出熵閾值natRECURRENT_REASONING_KL_THRESHOLD1e-4KL 提前收斂停止閾值0關(guān)閉RECURRENT_REASONING_VERBOSE0輸出熵值、停止原因等調(diào)試日志調(diào)參建議想讓更多位置觸發(fā)推理就調(diào)低THRESHOLD擔(dān)心速度則調(diào)小MAX_ITERS。效果如何空間與具身推理全面提升 在 Transformers 庫、batch_size1 的設(shè)置下開啟 EARR 后 ZDTaichu5.0-9B 在復(fù)雜空間推理與具身交互基準(zhǔn)上全面小幅提升AreaBenchmark基礎(chǔ)模型with EARR復(fù)雜空間推理ViewSpatial0.5410.5427復(fù)雜空間推理MMSI-Bench0.3680.374復(fù)雜空間推理MindCube-tiny0.74040.75具身交互RoboSpatial0.68000.7000對空間具身任務(wù)而言EARR 恰好可以圍繞困難的對象關(guān)系、參照系轉(zhuǎn)換和操作前提判斷分配額外計(jì)算——這正是提升最集中的場景。內(nèi)部循環(huán)改善當(dāng)前判斷外部任務(wù)循環(huán)根據(jù)新觀測更新后續(xù)行動兩者承擔(dān)不同層次的工作??偨Y(jié)EARR 用熵門控 阻尼循環(huán) 雙判據(jù)停止 軌跡回滾四件套把思考深度變成運(yùn)行時按需求分配的資源簡單的 token 走快車道困難的位置才獲得潛空間加算。這套機(jī)制無需額外參數(shù)、不改變外部接口是 ZDTaichu5.0-9B 在空間推理與 Agent 任務(wù)上保持第一梯隊(duì)的關(guān)鍵設(shè)計(jì)之一?!久赓M(fèi)下載鏈接】ZDTaichu5.0-9B項(xiàng)目地址: https://gitcode.com/gh_mirrors/zd/ZDTaichu5.0-9B創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考