多模态

紫东太初开源 ZDTaichu5.0-9B 空间智能模型:不只“看懂图片”,还想成为机器人的空间大脑

yiwan-cat2026-09-16 21:31
紫东太初开源 ZDTaichu5.0-9B 空间智能模型:不只“看懂图片”,还想成为机器人的空间大脑

一个多模态模型会识图、会 OCR、会回答图表问题,已经不算稀奇。

真正困难的是:当视角发生变化、物体彼此遮挡,或者机器人需要连续完成多个步骤时,模型还能不能回答“谁在谁的左边”“换个角度后目标在哪里”“下一步应该调用什么技能”?

这正是紫东太初最新开源的 ZDTaichu5.0-9B 想解决的问题。

它不是一个直接输出关节控制量的 VLA,也不是单纯为跑分训练的视觉问答模型。更准确地说,它是一款面向通用视觉理解、空间推理、Agent 工具调用与具身智能适配的 9B 级多模态基础模型:先把视觉世界看懂,再为规划器、工具系统或机器人控制栈提供高层判断。

项目当前已经开放模型权重、推理代码、Hugging Face / ModelScope 下载入口,以及适配后的 vLLM 服务方案。

本文核验时间:2026 年 9 月 16 日。当前公开材料以项目 Blog、GitHub README 和模型卡为主,尚未提供一篇完整的同行评审论文或正式技术报告。因此,本文会把“官方已公开事实”“Benchmark 结果”和“工程判断”分开说明。

先看结论:它到底值得关注什么?

项目 官方信息
参数规模 约 9B
语言骨干 Qwen3.5-9B LLM Decoder
视觉编码器 C-RADIOv4-H
输入 文本、单图、多图、视频
视觉分辨率 任意分辨率输入
上下文 模型卡标注最高 128K tokens
权重体积 Hugging Face 文件页约 19.6 GB
主要能力 通用视觉、空间推理、高层具身理解、Agent 工具调用
服务方式 Transformers 离线推理;官方改造版 vLLM 提供 OpenAI 兼容接口
权重许可 NVIDIA Open Model License,并需遵守 Qwen3.5 等上游声明

如果只用一句话概括:

ZDTaichu5.0-9B 的价值,不是用 9B 参数取代所有大模型,而是在保留通用视觉能力的同时,把多视角、三维关系、可供性和高层具身规划补得更完整。

它不是“看见”,而是试图建立空间关系

普通视觉问答更像是在一张图里找证据:读文字、识物体、数数量、回答属性。

空间智能多走了几步:

  1. 二维关系:物体位于谁的左侧、上方或附近;
  2. 跨视角关联:同一场景换一个相机位置后,仍能对应同一批物体;
  3. 三维关系与心智旋转:从有限画面推断遮挡、深度、朝向与结构;
  4. 可供性理解:判断物体能被怎样操作,动作需要满足什么前提;
  5. 高层技能规划:把任务拆成可交给外部工具或机器人技能库的步骤。

图 2|官方 3D spatial relations 案例输入(来源:项目 Blog,case-06)。


图 3|官方 Multi-object spatial relations 案例输入(来源:项目 Blog,case-07)。

这两张图看起来并不“高清”:一张带明显运动模糊,另一张只有稀疏彩色标记。它们恰好说明空间任务的难点——模型不能只靠漂亮的静态物体特写,而要在视角变化、遮挡和弱视觉证据下维持关系判断。

放进机器人系统,它处在哪一层?


这里必须划清一条边界:空间推理模型不等于完整的 VLA,更不等于低层控制器。

ZDTaichu5.0-9B 可以根据图像、视频和任务描述给出空间判断、高层技能计划或工具调用参数;但电机控制、轨迹生成、碰撞检查、力控、安全约束和执行后的终态验证,仍要由外部系统负责。

放到一套真实机器人栈里,更合理的链路是:

相机 / 视频 / 任务指令
        ↓
ZDTaichu5.0-9B
空间关系 + 可供性 + 高层技能计划
        ↓
Schema 校验 / 权限与安全检查
        ↓
技能库 / 运动规划器 / VLA 动作专家
        ↓
机器人执行 → 新观测 → 再规划

因此,它更像“具身大脑”的高层感知与推理模块,而不是直接替代实时动作生成模型。



图4|官方 Multi-view indoor spatial understanding 案例的两幅输入(来源:项目 Blog,case-10)。模型需要跨视角关联同一室内空间,而不是把两张图分别回答。

EARR:难题多想一步,简单题直接通过

ZDTaichu5.0-9B 公开了一个很值得研究的机制:Entropy-Gated Adaptive Recurrent Reasoning,熵门控自适应循环推理,简称 EARR。

直觉并不复杂。

模型正常前向计算后,会得到当前 token 的概率分布。如果分布很集中,说明模型相对确定,可以直接继续生成;如果分布熵较高,意味着模型自己也拿不准,EARR 就让一段中间层在潜空间中额外循环,对隐藏状态继续细化。

它不是在文本里强制输出更长的思维链,也不是再次调用一个外部模型,而是在模型内部动态增加计算深度。

官方给出的稳定化设计包括:

  • 阻尼与锚定更新:限制每次隐藏状态修正幅度,避免循环发散;
  • 双重停止信号:同时观察输出分布的 KL 散度和隐藏状态残差;
  • 轨迹读出与回滚:在多个候选状态中选择风险更低的结果,必要时退回先前状态。

不过,这里不能把“低熵”误解成“答案正确”。模型可能非常自信地答错,所以 EARR 仍然需要视觉证据、工具执行反馈与任务终态检查配合。

公开的 batch size=1 结果中,开启 EARR 后:

Benchmark 基础模型 开启 EARR
ViewSpatial 0.5410 0.5427
MMSI-Bench 0.3680 0.3740
MindCube-tiny 0.7404 0.7500
RoboSpatial 0.6800 0.7000

增益并非数量级跃升,但方向一致。它更像一种“按难度分配计算”的推理增强机制,而不是把 9B 模型凭空变成更大模型。

训练数据怎么把“空间感”喂出来?

官方 Blog 披露了五阶段、约 1.28T tokens 的数据课程:

阶段 Token 规模 重点
Stage 1 364B 双语图文、OCR 语料、短视频描述
Stage 2 737B 文档、PDF/OCR、长尾中文视觉数据、视频
Stage 3 136B 图像推理、视频问答、空间与物理任务、CAD 类问题
Stage 4 28B 长视频与高难专家指令
Stage 5 10B 过滤、采样与合成的空间、OCR、结构化视觉任务

训练上下文也从 8K、16K、32K 逐步扩展到 128K,最后加入高质量退火和基于可验证奖励的 GRPO:答案正确性、空间坐标命中和输出格式都可以成为自动奖励信号。

这条路线有一个很明确的工程含义:空间能力不是只靠换视觉编码器得到的,而是来自数据课程、任务构造、可验证奖励和推理机制的组合。

Benchmark 怎么看,才不被“第一”带跑?


图 5|官方与 10B 级开源模型的 Benchmark 对比。

官方对比中,ZDTaichu5.0-9B 在多项空间与 Agent 指标上领先所列同规模开源模型:

  • ViewSpatial:62.50;
  • MMSI-Bench:47.20;
  • MindCube-tiny:78.27;
  • VSI-Bench:59.69;
  • TAU2-Bench:87.70;
  • Claw-Eval general:71.40;
  • IFEval:93.70。

与此同时,它并非每个通用视觉指标都第一。例如 MMStar、OCRBench、MathVista Mini 等项目上,Qwen3.5-9B 或其他模型仍有更高分数。这反而更符合它的定位:重点补强空间与具身理解,而不是宣称所有能力全面领先。

还要注意三点:

  1. 官方表格同时使用了本地评测结果与其他模型公开报告的外部成绩,未必是完全相同的推理栈;
  2. TAU2-Bench 与 Claw-Eval 的本地评测使用 DeepSeek-V4-Flash-0731 作为模拟用户和/或裁判;
  3. ViewSpatial、MMSI-Bench、MindCube-tiny、VSI-Bench 的评测提示中增加了特定输出格式要求。

所以这些分数适合说明“能力方向很强”,但不能直接换算成真实机器人成功率、控制频率或跨本体泛化能力。

Quick Start:先跑通一张图

1. 环境与硬件前提

官方离线示例固定了以下主要版本:

pip install transformers==5.3.0 torch==2.10.0 torchvision==0.25.0 accelerate timm

注意:官方 README 当前把 transformers 误写成了 tranformer,直接复制会安装失败。上面的命令已按正确包名修正。

模型文件约 19.6 GB。官方没有公布“最低显存”或统一吞吐数据,因此不能把 24 GB、32 GB 或某张消费卡写成已验证配置。按 BF16 权重体积推断,单卡 24 GB 会比较紧张;32 GB 级 GPU 更适合先做单图、短输出验证,但 128K 长上下文、视频和高并发还会显著增加 KV Cache 与视觉 token 开销。这是工程估算,不是官方 Benchmark。

建议单独创建环境,不要直接覆盖现有训练环境:

python -m venv .venv-zdtaichu
source .venv-zdtaichu/bin/activate
python -m pip install -U pip
pip install transformers==5.3.0 torch==2.10.0 torchvision==0.25.0 accelerate timm

2. 下载并设置模型

模型可以从 Hugging Face 或 ModelScope 下载。以 Hugging Face 路径为例:

export ZDTAICHU_MODEL_ID=TaichuAI/ZDTaichu5.0-9B
export CUDA_VISIBLE_DEVICES=0

如果服务器需要离线运行,可以先将仓库完整下载到本地,再把 ZDTAICHU_MODEL_ID 改为本地目录。

3. 最小离线推理脚本

保存为 demo.py:

import os
import torch
from transformers import AutoModel, AutoProcessor

model_id = os.environ["ZDTAICHU_MODEL_ID"]

processor = AutoProcessor.from_pretrained(
    model_id,
    trust_remote_code=True,
    use_fast=False,
)

model = AutoModel.from_pretrained(
    model_id,
    trust_remote_code=True,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    attn_implementation="sdpa",
).eval()

messages = [{
    "role": "user",
    "content": [
        {"type": "image", "image": "floorplan.png"},
        {"type": "text", "text": "Which room is directly to the left of the kitchen?"},
    ],
}]

inputs = processor.from_messages(
    messages,
    return_tensors="pt",
).to(model.device)

with torch.inference_mode():
    output_ids = model.generate(
        **inputs,
        max_new_tokens=256,
        do_sample=False,
    )

generated_ids = output_ids[:, inputs["input_ids"].shape[1]:]
answer = processor.batch_decode(
    generated_ids,
    skip_special_tokens=True,
)[0]
print(answer)

运行:

python demo.py

成功判据不是输出某句固定答案,而是:模型和处理器能够加载,GPU 上完成一次生成,并针对平面图给出可读的空间关系回答。

最常见的失败原因:

  • 安装命令中的 transformers 包名写错;
  • 依赖版本与当前环境冲突;
  • 模型约 19.6 GB,加载后显存不足;
  • trust_remote_code=True 未开启,导致自定义架构无法加载;
  • 输入图片路径不存在,或当前工作目录不对。

服务化:暴露 OpenAI 兼容接口

官方不是直接使用标准 vLLM,而是提供了适配 ZDTaichu5.0 架构、量化与 speculative decoding 的 v0.26.0-zdtaichu 分支和 Docker 镜像。

官方推荐命令:

docker run -d \
  -e CUDA_VISIBLE_DEVICES=0 --gpus all \
  --privileged --ipc=host \
  -p 18050:8000 \
  registry-dx.wair.ac.cn/taichu-public/vllm-openai:v0.26.0.zdtaichu_5_0 \
  TaichuAI/ZDTaichu5.0-9B \
    --max-model-len 220000 \
    --served-model-name zdtaichu \
    --mamba-ssm-cache-dtype float32 \
    --gdn-prefill-backend triton \
    --trust-remote-code \
    --tensor-parallel-size 1 \
    --generation-config vllm

这套镜像要求 CUDA ≥ 12.9、NVIDIA Driver ≥ 575.51.03。

这里还有一个版本边界:模型卡写的是“最高 128K tokens”,而服务示例设置了 --max-model-len 220000。后者是服务启动参数,不应直接改写成“模型已公开验证 220K 原生上下文”。正式部署前应按真实图片数量、视频帧数和并发重新压测,并从更保守的长度开始。

服务启动后,接口地址为:

http://<host>:18050/v1

最小图像请求:

import base64
import requests

def data_url(path: str, mime: str) -> str:
    with open(path, "rb") as f:
        data = base64.b64encode(f.read()).decode()
    return f"data:{mime};base64,{data}"

body = {
    "model": "zdtaichu",
    "messages": [{
        "role": "user",
        "content": [
            {"type": "text", "text": "描述场景中的空间关系。"},
            {"type": "image_url", "image_url": {
                "url": data_url("scene.png", "image/png")
            }},
        ],
    }],
    "temperature": 0,
    "top_p": 0.95,
    "top_k": 20,
}

resp = requests.post(
    "http://127.0.0.1:18050/v1/chat/completions",
    json=body,
    timeout=600,
)
resp.raise_for_status()
print(resp.json()["choices"][0]["message"]["content"])

对于空间定位任务,官方建议 temperature=0;其他任务使用 temperature=1.0、top_p=0.95、top_k=20。

Demo 命令不等于生产配置

官方 Docker 示例使用了 --privileged。在生产环境中,不应默认让推理容器获得广泛宿主权限。更稳妥的做法是:

  • 先验证是否确实需要 --privileged,能删除就删除;
  • 固定镜像版本或 digest,避免环境漂移;
  • 将模型缓存单独挂载,并设定磁盘配额;
  • 限制接口访问来源,增加鉴权、并发上限与请求体大小限制;
  • 对图片、视频类型及帧数做白名单校验;
  • 对工具调用先做 Schema 校验、权限判断和必要的人工确认。

模型卡也明确说明:模型本身不会执行工具。真正执行外部动作的是周围的应用程序,因此安全责任不能交给一次模型输出。

怎样接入机器人或空间 Agent?



图 6|官方 Embodied skill planning 案例输入与标注视图(来源:项目 Blog,case-14)。任务要求将目标物体放入满足空间条件的礼盒。

第一版不建议让模型直接控制机械臂。更稳妥的接入方式是固定一个高层输出协议:

{
  "target": "loki",
  "relation": ["right", "nearest"],
  "selected_container": "giftbox_2",
  "skill": "pick_and_place",
  "confidence": 0.82,
  "preconditions": ["target_visible", "container_reachable"]
}

随后由外部系统完成:

JSON Schema 校验
→ 目标与地图实体绑定
→ 可达性 / 碰撞 / 安全检查
→ 调用 pick_and_place 技能
→ 视觉或力觉验证终态
→ 把新观测交回模型

如果用于你现有的 FAST-LIVO2 + YOLO 语义地图路线,它最合适的初始角色不是替代定位或检测,而是放在更上层:

  • 输入当前 RGB、多视角历史帧、商品语义实体和任务描述;
  • 判断跨视角物体关系、遮挡与可供性;
  • 输出高层查找、移动、观察或抓取意图;
  • 由 FAST-LIVO2、Persistent Semantic Map、YOLO/深度与机器人技能栈完成坐标落地和执行。

这样能把“大模型擅长的语义与空间推理”和“几何系统擅长的厘米级定位”分开,系统边界会更可靠。

Jetson 能不能直接跑?

当前官方材料没有给出 Jetson Orin 的部署、量化权重或端侧延迟。

尤其是官方 vLLM Docker 要求 CUDA 12.9 以上,而 JetPack 5.1.5 对应的 CUDA 11.4 明显不满足。这意味着:

它目前不能按官方 Docker 命令直接搬到你现有的 Orin 环境。

如果要做端侧尝试,需要另行解决量化、算子兼容、视觉编码器支持、KV Cache、视频帧采样和推理后端适配。更现实的第一阶段是:

Orin:相机 / YOLO / 深度 / 定位 / 控制
             ↓ 局域网
5090 工作站:ZDTaichu5.0-9B 空间推理与高层规划
             ↓
Orin:校验后执行具体技能

先验证模型是否真正改善任务成功率,再决定是否投入端侧量化与 TensorRT/其他后端适配。

适合什么,不适合什么?

适合

  • 需要多图、视频和跨视角空间推理的研究;
  • 机器人高层任务规划、可供性判断与技能选择;
  • 室内场景、货架、实验室、工业工位等空间 Agent;
  • 需要中文能力、OCR、图表理解与空间能力兼顾的本地多模态系统;
  • 想研究自适应循环推理、困难 token 动态算力分配的团队。

暂不适合

  • 直接替代低层 VLA 动作专家或实时控制器;
  • 需要官方 Jetson 一键部署与明确端侧 FPS 的项目;
  • 显存非常有限、又没有量化与分层卸载条件的设备;
  • 需要已同行评审论文、完整消融与训练细节才能立项的严谨复现;
  • 只看单张普通图片、对空间能力没有需求的轻量应用。

如果是我,我会怎么落地?

我会分五步,不会一上来就接机器人:

  1. 离线小样本评测:挑 50~100 个真实场景,测试空间关系、遮挡、多视角关联和可供性;
  2. 与现有模型盲测:同一输入对比 Qwen3.5-9B 或当前在用 VLM,先确认增益;
  3. 固定结构化输出:只允许模型输出预定义 JSON,不直接执行工具;
  4. 接数字孪生或仿真:验证技能选择、失败恢复和终态检查;
  5. 再接真实机器人:保留几何定位、运动规划、碰撞检测与安全控制闭环。

EARR 也应作为可控开关做 A/B 测试:记录准确率、首 token 延迟、总生成延迟和循环触发比例,而不是默认“开了就一定更好”。

最后总结

ZDTaichu5.0-9B 最值得关注的,不只是 9B 这个尺寸,而是它试图把过去分散的能力收拢到同一个模型里:

通用视觉理解
→ 多视角与三维空间推理
→ 可供性与高层具身规划
→ Agent 工具调用

它目前仍有清晰边界:没有完整技术论文,没有官方 Jetson 数据,Benchmark 也不能等同于真实机器人成功率。但对于正在做空间语义地图、机器人高层规划、多模态物理世界理解的团队,它已经是一个值得尽快做小规模实测的开源底座。

真正正确的打开方式,不是把它宣传成“9B VLA 控制一切”,而是把它放到该在的位置:让模型负责理解与决策,让几何、控制与安全系统负责把决策可靠地变成动作。

项目地址

点赞收藏
// 评论0
0 / 500
还没有评论,快来抢沙发