Qwen3.5-0.8B-GDN2-LoopSpatial

English summary. v4 = the GDN2 v2 backbone + looping (Ouro-style K=2 weight sharing) + spatial module (multi-point injection

  • closed-loop write-back). On top of the GDN2 conversion, this checkpoint carries two research components: a loop mechanism — the whole 24-layer text block is applied K times per forward with shared weights, a zero-init learned loop_emb marking each refinement round — and the v3 spatial state module (32 slots, 7 gated injection points), upgraded to closed-loop: SlotFeedback writes the LM's intermediate hidden states back into the slots, so the workspace is no longer read-only. As of v4.1 the weights are the jointly-trained full model (loop, spatial, math CoT, and photo VQA all in the mix from step 0).

中文摘要。 v4 = GDN2 v2 主干 + 循环(Ouro 式 K=2 权值共享)+ 空间模块(多点注入 + 闭环回写)。 在 GDN2 改造之上, 本权重同时携带两个研究组件:

  1. 一个循环机制——整个 24 层文本块每次前向权重共享地应用 K 次,以零初始化的 可学习 loop_emb 轮次标记区分精化轮次;
  2. v3 的空间状态模块(32 槽位、7 个门控注入点),并升级为闭环: SlotFeedback 把语言模型的中间隐状态回写进槽位,槽位不再只读。

权重形态(v4.1 起)是联合训练完全体(plane,Plan E):循环、空间、数学 CoT、 照片 VQA 从训练第 0 步同时进配比——实测证明"同时训练可共存、先后抛光必跷跷板" (先后抛光会在 '\n' → <|im_end|> 终止边界上互相污染)。v4.0 的嫁接版权重与评测 数字保留在审计仓库与本文"已知限制"末尾。

这是什么

  • 基础模型:Qwen/Qwen3.5-0.8B(Apache-2.0);直接上游是作者的 tysgydk/Qwen3.5-0.8B-GDN2(v2 主干)与 tysgydk/Qwen3.5-0.8B-GDN2-Spatial(v3.1 空间模块)。
  • 主干:与 v2/v3 相同结构(model_type: qwen3_5_gdn2,Architecture Qwen35GDN2ForConditionalGeneration,24 层 = 18 层线性注意力 + 6 层全注意力, bfloat16)。本仓库的 config.json 与 v2 的 config.json 逐字节一致。
  • 两个可选附加件:K=2 循环(loop_patch.py)与空间通路 (spatial_runtime.py + spatial.safetensors)。不 patch 循环、不构建槽位时, 本权重就是一个带空间模块的 GDN2 VLM。

仓库内容

关键文件(按体积从大到小;体积取自仓库文件列表):

文件 大小 作用
model.safetensors ~1.93 GB 主干权重(联合训练完全体)
spatial.safetensors ~64.1 MB 空间模块权重 + 循环的 loop_emb.weight
tokenizer.json ~12.8 MB 快速分词器
vocab.json ~6.7 MB BPE 词表
merges.txt ~3.35 MB BPE 合并规则
tokenizer_config.json ~16.7 KB 分词器配置(Qwen2Tokenizer、`eos_token: <
chat_template.jinja ~7.8 KB 千问对话模板(含 <think> 分支)
README.md ~11.8 KB 原始 model card
spatial_runtime.py ~6.9 KB 空间通路运行时(与 -Spatial 仓库中的同名文件逐字节相同)
loop_patch.py ~5.7 KB 循环补丁:patch_loop(text_model, num_loops)
modeling_qwen3_5_gdn2.py ~3.9 KB GDN2 自定义建模代码(与 v2 相同)
config.json ~2.9 KB HF 配置(与 v2 逐字节相同)
preprocessor_config.json / video_preprocessor_config.json ~390 B / ~385 B 图像 / 视频预处理参数
generation_config.json ~179 B 生成默认值:eos_token_id: 248044、use_cache: true
configuration.json ~51 B ModelScope 元信息:{"framework":"Pytorch","task":"image-text-to-text"}
.gitattributes ~2.2 KB LFS 规则(含 *.safetensors)

loop_patch.py 的要点(可取证):

  • LoopEmbedding 为 nn.Embedding(K, hidden) 且零初始化;K 次迭代中把 loop_emb.weight[k] 加到输入上,作为轮次标记。
  • 被 patch 的是 language_model 子模块的 forward,按 transformers 5.17.0 modeling_qwen3_5.Qwen3_5TextModel.forward 复制后把层循环重复 K 次。
  • 带 cache 时用"轮次优先"的虚拟槽位(slot = k*num_layers + i),每轮保留自己的 KV / 循环态(K=2 相当于 48 个虚拟层);FLA 侧有 18 个 GDN 槽位(源码注释)。
  • 每轮结束后调用 self.spatial_round_update(hidden_states, k)(若存在)—— 即闭环回写发生在循环轮次之间,且不在最后一轮触发。

spatial_runtime.py 与 -Spatial 仓库中的版本完全相同:FULL_ATTN_LAYERS = [3, 7, 11, 15, 19, 23]、 D_SLOT = 512、N_SLOTS = 32,7 个门控注入点(6 层 + 最终隐状态), GatedSpatialRead 的 gate 零初始化、读取形式为 hidden + tanh(gate) * delta。

用法

K=1 默认用法与 v2/v3 完全相同——不 patch 循环时,本权重就是一个带空间模块的 GDN2 VLM:

import torch
from transformers import AutoModelForImageTextToText, AutoProcessor

model = AutoModelForImageTextToText.from_pretrained(
    "tysgydk/Qwen3.5-0.8B-GDN2-LoopSpatial", trust_remote_code=True,
    dtype=torch.bfloat16, device_map="cuda")
processor = AutoProcessor.from_pretrained(
    "tysgydk/Qwen3.5-0.8B-GDN2-LoopSpatial", trust_remote_code=True)

K=2 循环是可选附加件,需要仓库内的 loop_patch.py(Ouro 式定次块循环, loop_emb 权重存放在 spatial.safetensors 里):

import sys; sys.path.insert(0, model_dir)
from loop_patch import patch_loop
patch_loop(model.model.language_model, 2)
from safetensors.torch import load_file
model.model.language_model.loop_emb.weight.data.copy_(
    load_file(f"{model_dir}/spatial.safetensors")["loop_emb.weight"])

空间模块用法同 v3:spatial_runtime.py 的 attach_spatial 构建槽位并挂上 7 个门控注入点;不构建槽位(或 hook.clear() 之后)空间通路完全惰性。 循环与空间可同时开启——闭环回写(spatial_round_update)发生在循环轮次之间。

环境要求:transformers >= 5.17、flash-linear-attention >= 0.5.2。

能力一览(v4.1 完全体,K=1 模式实测)

基准 本模型 参照
TextVQA val 512(精确 / 宽松,标准协议) 58.4% / 73.0% v2 发布版 63.3% / 73.6%
TextVQA val 512(stop-at-\n 协议*) 63.7% / 73.4% v2 发布版 63.3% / 73.6%
语言评测 loss(96 条留出集) 1.931 v2 发布版 1.776
合成属性任务 39/40 v2 发布版 39/40
GSM8K(K=1 / K=2,n=200) 38.5% / 39.0% v2 发布版 K=1 36.5%
BLINK val(K=2,真实照片) 55.3% 基线总分 39.6;VC 子项 **56.4%**(基线 39.5)
合成遮挡·更近 closer(n=300) 84% v3.1 86%
合成遮挡 occlude 68% v3.1 67%
跨视角 xview_side 73% v3.1 68%
遮挡 2 跳 occlude_2hop 45% v3.1 52%
遮挡 3 跳 occlude_3hop 80% —

* stop-at-\n(遇换行即停)是 VQA 评测框架的标准做法。本模型的标准协议精确率与 宽松率之间的差几乎全部来自"答案正确但未在换行处停下"(终止边界效应,详见下文), 换行截停后精确率回到 v2 发布版水平。

循环:v4.1 判决与"按任务选 K"

v4.1 完全体上(n=200,贪心,同协议头对头):K=2 循环 39.0% vs K=1 38.5%—— 循环在数学上不再倒挂(此前所有非联合训练的形态 K=2 都低于 K=1:嫁接版 31.0、 Plan C 21.5)。数学返利依赖与循环共同训练的注意力/MLP 权重,这是完全体与嫁接版的 本质差别。

历史峰值参考:训练腿 loop2p3 曾达 K=2 **43.0%**(n=400 配对 McNemar p=0.001), 但其照片域终止崩盘不可发布。v4.1 的 K=2 增益(+0.5)尚属噪声级,循环的真正价值 在空间反馈闭环(中区槽位跨轮精化),不在数学。

结论仍是按任务选 K:K=2 在照片 OCR 类提取任务上仍收税(标准协议 45.7% vs K=1 58.4%;stop-at-\n 协议 58.6% vs 63.7%——overthinking 机制),K=1 是零税默认。

训练配方(可取证部分)

  • 数据/配比:v4.1 为联合训练完全体(plane,Plan E)——循环、空间、数学 CoT、 照片 VQA 从第 0 步同时进入训练配比;先后抛光会在 '\n' → <|im_end|> 终止边界 上互相污染。
  • 空间监督:槽位 xyz MSE(同 v3 系列,注意力加权、免匹配)。
  • 循环标记:loop_emb 零初始化,训练中学出轮次区分。
  • 具体步数、学习率、数据规模在本仓库 model card 中未说明。

已知限制

  • 0.8B 研究型模型;空间模块在合成场景上训练。
  • 标准协议(不截停)下 TextVQA 精确率 58.4%,低于 v2 纯血版(63.3%);差距几乎 全部来自终止边界效应(答案正确但未在换行处停下),stop-at-\n 协议下为 63.7% (v2 为 63.3%)。语言评测 loss 略高(1.931 vs 1.776)。
  • K=2 循环在照片 OCR 类任务上仍收税(见上节);K=1 为零税默认。
  • 合成榜 distance 子项较 v3.1 有回落(45% vs 61%)。
  • 思考模式(enable_thinking=True):0.8B 基底从未学会闭合 <think> 块 (已验证:原版基底行为完全相同)。请使用默认的非思考模式。
  • 槽位预算 32 个;更密集的场景未测试。K>2 未测试。

v4.0(嫁接版)历史记录:TextVQA 60.0/73.2(标准协议;stop-at-\n 协议 63.3/73.4)、GSM8K K=1/K=2 = 36.5/31.0(循环增益未穿过嫁接)、属性任务 40/40、 遮挡 2 跳 45%。嫁接版权重仍在审计仓库留档。

同系列仓库

仓库 版本 说明
tysgydk/Qwen3.5-0.8B-GDN2 v2 GDN2 改造主干(无空间模块、无循环)
tysgydk/Qwen3.5-0.8B-GDN2-Spatial v3.1 只读多点注入空间模块;无循环
tysgydk/Qwen3.5-0.8B-GDN2-LoopSpatial v4 本仓库:循环(K=2 权重共享)+ 闭环空间模块(LM 隐状态回写槽位)
tysgydk/gdn2-audit — 全部中间权重与评测的审计归档
tysgydk/world3d(数据集) — world3d 真 3D 空间推理数据集,本模型空间模块的训练集

与 -Spatial(v3.1)的关键差别有两点:本仓库多了一个 Ouro 式 K=2 权重共享循环, 并且空间模块从只读升级为闭环——loop_patch.py 在每轮之间调用 spatial_round_update,把 LM 的中间隐状态写回槽位,使槽位能跨轮精化。

引用

基于千问 3.5(Apache-2.0)和 FLA 的 GatedDeltaNet2 构建,循环机制受 Ouro 启发。 使用本权重请引用千问、FLA/GDN 与 Ouro 的原始论文。

Downloads last month
44
Safetensors
Model size
1.0B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial

Finetuned
(577)
this model
Finetunes
1 model