Instructions to use tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial", trust_remote_code=True) messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoModelForImageTextToText model = AutoModelForImageTextToText.from_pretrained("tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial
- SGLang
How to use tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial with Docker Model Runner:
docker model run hf.co/tysgydke/Qwen3.5-0.8B-GDN2-LoopSpatial
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_embmarking 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 改造之上, 本权重同时携带两个研究组件:
- 一个循环机制——整个 24 层文本块每次前向权重共享地应用 K 次,以零初始化的
可学习
loop_emb轮次标记区分精化轮次; - 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,ArchitectureQwen35GDN2ForConditionalGeneration,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 的原始论文。
- ModelScope: https://modelscope.cn/models/tysgydk/Qwen3.5-0.8B-GDN2-LoopSpatial
- Hugging Face:
- Downloads last month
- 44