转载请注明出处:莫潇羽@无忆研习社(www.wuyi.wiki)
📌 快速摘要
本文核心结论:
小米机器人团队于 2026 年 2 月正式开源了具身智能大模型 Xiaomi-Robotics-0,这是一个拥有 47 亿参数的视觉-语言-动作(VLA)模型。它基于 Qwen3-VL-4B-Instruct 预训练语言模型与 Diffusion Transformer(DiT)组合而成的 Mixture-of-Transformers(MoT)架构,在 LIBERO、CALVIN、SimplerEnv 三大主流仿真测试基准中全面超越 30 余个竞品模型,达到当前业界最优水平(SOTA)。在真实双臂机器人平台上,它可以流畅完成折叠毛巾、拆解积木等复杂操作任务,成功率极高。更重要的是,它解决了困扰 VLA 模型已久的"推理延迟"问题,实现了消费级 GPU 上的实时控制执行。
项目已在 GitHub 全面开源,包括推理代码、预训练权重、微调权重和评测脚本,研究者和开发者可以直接上手部署。
往下看,有更详细的原理拆解、架构分析和手把手操作教程。
一、为什么说这个开源项目值得深入了解
如果你关注机器人领域,一定听说过一个绕不开的词汇——"具身智能"(Embodied Intelligence)。这个词描述的是一种让 AI 不仅能在数字世界里"聊天、写作、画图",更能在物理世界中像人一样"感知环境、理解意图、做出动作"的能力。
过去几年,学界和工业界提出了 VLA 模型(Vision-Language-Action,视觉-语言-动作模型)这一范式,试图将大语言模型的理解能力和机器人的控制能力统一在同一个框架内。思路是好的,但实际落地时有一个让人头疼的拦路虎:推理延迟。
具体来说,VLA 模型参数量动辄数十亿,在推理时需要消耗大量计算资源,产生数百毫秒甚至更长的延迟。机器人执行动作是一个连续的、高频的过程,如果每次"思考"都要等半秒乃至一秒,机器人的动作就会出现卡顿、抖动,甚至完全脱离控制分布,做出危险的异常动作。
Xiaomi-Robotics-0 的诞生,正是为了直面这个挑战。它不是一个"实验室里的美好愿景",而是一个在消费级 GPU 上、在真实机器人硬件上,已经跑通的完整技术方案。
莫潇羽在追踪这个领域已有一段时间,看到这个开源成果时,第一反应是:国内公司在具身智能这条路上,真的已经走到了一个相当扎实的位置。本文接下来会带你从原理到操作,把这个项目彻底拆解清楚。
二、具身智能与 VLA 模型:给小白的背景科普
在正式进入 Xiaomi-Robotics-0 的技术细节之前,我们先把基础概念捋一遍。如果你已经熟悉这些,可以直接跳到第三节。
2.1 什么是具身智能
"具身智能"(Embodied AI)这个概念,核心是强调 AI 需要"有身体"。传统 AI 处理的是抽象的信息——文字、图片、音频——它不需要与物理世界发生交互。而具身智能要求 AI 系统能够通过传感器感知三维真实世界,并通过执行器(机械臂、轮子、腿等)对物理世界施加影响。
简单打个比方:ChatGPT 这类大模型,是"大脑";具身智能,是把这个大脑装进一个有手有脚、能跑能搬的机器人身体里。
这带来了一系列全新的挑战:
- 感知必须是实时的,延迟不能超过几十毫秒;
- 动作必须是连续的,相邻动作之间要平滑过渡;
- 环境是开放的,机器人遇到的情况千变万化,模型必须有强泛化能力;
- 资源是有限的,不能依赖超大型数据中心实时推理,必须能在机器人本地运行。
2.2 什么是 VLA 模型
VLA 是 Vision-Language-Action 的缩写,中文叫"视觉-语言-动作模型"。这类模型的输入是视觉信息(摄像头图像)和语言指令(人说的话或命令),输出是机器人需要执行的控制动作(关节角度、末端执行器位置等)。
VLA 模型的出现,是站在视觉大模型(VLM,Vision-Language Model)的肩膀上的。VLM 本身已经具备很强的"看图说话""理解语义"能力,VLA 是在此基础上,额外学会了"把理解转化为物理动作"这一步。
目前业界主流的 VLA 模型有 Google 的 RT-2、Physical Intelligence 的 π0 等,但它们要么不开源,要么无法在消费级硬件上实时运行。Xiaomi-Robotics-0 的开源,填补了这一空白。
三、Xiaomi-Robotics-0 核心架构深度解析
3.1 整体框架概览
Xiaomi-Robotics-0 的整体架构可以用一句话概括:以预训练 VLM 为认知大脑,以 Diffusion Transformer 为运动小脑,通过 Mixture-of-Transformers(MoT)设计将两者有机融合。
模型接受三类输入:
- 视觉观察(Observation Images):来自机器人摄像头的多视角图像,包括基础视角和手腕视角;
- 语言指令(Language Instruction):人类用自然语言给出的任务描述;
- 本体感知状态(Robot Proprioceptive State):机器人自身的关节角度、末端执行器位置等实时状态信息。
模型输出的是一个"动作块"(Action Chunk),即未来一小段时间内的动作序列,而不是单一的下一帧动作。
下面是一个模型架构的逻辑示意(简化版):
输入层
├── 多视角图像(摄像头帧)
├── 语言指令(自然语言)
└── 机器人本体状态(关节/末端位置)
│
▼
┌─────────────────────────────┐
│ VLM(视觉语言模型) │ ← Qwen3-VL-4B-Instruct
│ 处理图像 + 语言 → KV Cache │
└──────────────┬──────────────┘
│ KV Cache(条件向量)
▼
┌─────────────────────────────┐
│ DiT(Diffusion Transformer)│
│ 以 flow matching 从噪声中 │
│ 生成平滑的 Action Chunk │
└──────────────┬──────────────┘
│
▼
动作序列(Action Chunk)
→ 机器人执行器
3.2 视觉语言模型(VLM)部分:认知大脑
Xiaomi-Robotics-0 的 VLM 底座采用的是 Qwen3-VL-4B-Instruct,这是阿里通义团队开源的视觉语言模型,在多项视觉问答和空间推理任务上表现出色。
VLM 的职责是"理解世界":
- 读取摄像头图像,理解场景中有哪些物体、它们的位置关系;
- 理解人类给出的语言指令,即使是模糊的、不精确的表述也能处理;
- 将视觉信息和语言信息融合,产生一组 KV Cache(键值缓存),作为后续动作生成的条件信息。
VLM 这一侧的参数在训练后期会被冻结(frozen),即不再更新权重。这个设计选择至关重要,它解决了 VLA 模型训练中最容易出现的"灾难性遗忘"问题——机器人学会了怎么动手,却忘了怎么看世界。通过冻结 VLM,Xiaomi-Robotics-0 在动作训练完成后,依然保持了原始 VLM 在视觉语言理解任务上的完整能力。
3.3 扩散 Transformer(DiT)部分:运动小脑
如果 VLM 是负责"思考"的大脑,那 Diffusion Transformer(DiT)就是负责"运动协调"的小脑。
DiT 的工作原理基于**流匹配(Flow Matching)**技术。这是扩散模型的一个变体,不需要传统扩散模型那么多的去噪步骤,生成速度更快、动作更平滑。
具体流程如下:
- DiT 从一个随机噪声向量出发;
- 以 VLM 产生的 KV Cache 和机器人当前状态作为条件;
- 通过多步流匹配迭代,逐步将噪声向量"塑形"成一个合理的动作序列;
- 最终输出一个 Action Chunk,即包含未来若干时间步动作的连续序列。
这里有个很重要的设计点:输出的是序列,而不是单步动作。这样做的好处是,机器人可以"提前规划"一小段时间内的动作,动作之间的连续性和平滑性大幅提升,不会出现一步一顿的僵硬感。
3.4 Mixture-of-Transformers(MoT)架构:解耦是关键
MoT 架构的核心思想是职责分离:让擅长理解的部分专注于理解,让擅长生成动作的部分专注于动作。
在过去的 VLA 模型设计中,有一种做法是直接在 LLM 的输出头上加一个线性层来预测动作,这样虽然简单,但会让 LLM 的表示空间受到动作数据的"污染",导致语言理解能力退化。MoT 架构通过把 VLM 和 DiT 拆分成两个独立的模块,并通过条件注意力机制(Conditional Attention)联结,既保留了 VLM 的通用感知能力,又让 DiT 专心学习高频动作生成。
用一个类比来理解:VLM 相当于一个经验丰富的调度员,看着现场情况告诉工人"应该往哪里走、做什么事";DiT 是工人,专注于把调度员的指令转化成精确的手部动作,而不需要自己去理解大局。
四、训练方案:如何炼出这个模型
4.1 数据规模
训练 Xiaomi-Robotics-0 使用了两类数据:
- 机器人轨迹数据:约 2 亿个时间步(200M timesteps)的机器人操作轨迹,来源包括开源数据集和小米内部通过远程操控(Teleoperation)采集的数据;
- 积木拆解任务(Lego Disassembly):338 小时;
- 毛巾折叠任务(Towel Folding):400 小时;
- 视觉语言数据:超过 8000 万条(80M samples)通用视觉语言样本,用于维持 VLM 的语义理解能力。
两类数据按照 1:6 的比例混合训练,即每训练 6 条机器人轨迹数据,就混入 1 条视觉语言数据。这个比例是通过大量消融实验调出来的,目的是在"学会动手"和"不忘看世界"之间找到最优平衡。
数据规模可以用一张简表来感受:
|
数据类型 |
规模 |
|
机器人轨迹数据 |
约 2 亿时间步 |
|
毛巾折叠采集时长 |
400 小时 |
|
积木拆解采集时长 |
338 小时 |
|
视觉语言数据 |
约 8000 万条样本 |
|
VL与轨迹混合比 |
1:6 |
4.2 三阶段训练流程
Xiaomi-Robotics-0 的训练分为三个主要阶段,每个阶段有明确的目标。
第一阶段:VLM 跨模态预训练(Cross-Modal Pre-training)
这个阶段的目标是让 VLM 初步具备"动作意识"。研究团队引入了一个叫做 Action Proposal(动作建议) 的机制:在 VLM 处理图像时,额外要求它预测当前场景下合理的动作分布,而不仅仅是生成文字描述。
这个机制的本质是让 VLM 的特征空间提前向动作空间靠拢。就像一个翻译,在翻译之前先了解对方的语言习惯,后续翻译起来会更顺畅。
第二阶段:DiT 专项预训练(DiT Specialized Pre-training)
完成第一阶段后,VLM 的权重被冻结,DiT 从零开始训练。DiT 以 VLM 输出的 KV Cache 作为条件,学习通过 flow matching 从噪声中重建精准的动作序列。
这一阶段的训练数据以机器人轨迹为主,同时混入少量视觉语言数据防止特征分布偏移。
第三阶段:目标任务后训练(Target Task Post-training)
前两阶段赋予了模型通用能力,第三阶段则针对特定机器人平台和特定任务进行专门微调。这个阶段引入了几个重要的技术设计:
- 异步执行(Asynchronous Execution):机器人在执行当前动作块的剩余动作时,同时开始推理下一个动作块,两个过程并行进行,彻底消除"等待推理"的卡顿感;
- 干净动作前缀(Clean Action Prefix):在每次推理时,将上一个动作块中已经提交执行的前 Δtc 步动作作为前缀输入,帮助模型保持时序连贯性,避免相邻动作块之间出现跳跃;
- Λ 形注意力掩码(Λ-shape Attention Mask):这是一种特殊设计的注意力掩码,让模型在推理时优先关注最近的视觉反馈,而不是过度依赖历史轨迹的时序相关性,使机器人对环境扰动的响应更灵敏。
4.3 异步执行的数学直觉
为了让不熟悉工程细节的读者也能理解"异步执行"为什么能解决延迟问题,莫潇羽用一个简单的公式来说明:
设模型推理延迟为 (\Delta t_{inf}),每个 Action Chunk 的长度为 (T_{chunk}),从当前 chunk 中提取前缀的步数为 (\Delta t_c)。
系统需要满足的关键约束是:
[
\Delta t_c > \Delta t_{inf}
]
这意味着,前缀中留给推理的"时间窗口"必须大于推理本身所需的延迟。只要这个条件成立,推理任务就能在机器人执行期间完全完成,机器人永远都有动作可以执行,动作流永不中断。
这个设计本质上是一种**流水线(Pipeline)**思想,在机器人领域实现了软件工程中"生产者-消费者"模式的类比。
五、性能表现:在三大仿真测试中全面 SOTA
Xiaomi-Robotics-0 在三个主流机器人仿真测试基准上进行了评测,全面超越了包括其他大型 VLA 模型在内的 30+ 对比方法。
5.1 LIBERO
LIBERO 是一个考察机器人在多样化任务中泛化能力的仿真测试套件,包含多种操作任务。
Xiaomi-Robotics-0 在 LIBERO 上取得了 98.7% 的平均成功率,这是一个相当高的数字,表明模型在各类任务上都具备很强的稳定性。
5.2 SimplerEnv
SimplerEnv 是一个更贴近真实场景的评测基准,测试视角更加多样:
|
测试项 |
成功率 |
|
Visual Matching(视觉匹配) |
85.5% |
|
Visual Aggregation(视觉聚合) |
74.7% |
|
WidowX 机械臂任务 |
79.2% |
5.3 CALVIN
CALVIN 测试的是机器人在长序列任务中的表现,以"平均完成长度"(Average Length)衡量,满分为 5:
|
测试分组 |
平均完成长度 |
|
ABC-D |
4.75 |
|
ABCD-D |
4.80 |
接近满分的表现说明模型在需要连续执行多个步骤的复杂任务中,依然能保持极高的可靠性。
5.4 真实机器人测试
仿真测试毕竟是仿真,更重要的是真实世界里的表现。Xiaomi-Robotics-0 在双臂机器人平台上完成了两项代表性测试:
积木拆解(Lego Disassembly):这是一项需要精确手眼协调的刚性物体操作任务,涉及多步骤连续动作规划和抓握精度。
毛巾折叠(Towel Folding):毛巾是典型的柔性物体,形状会随操作而变化,对模型的实时感知和动作调整能力提出了更高要求。
在两项任务上,Xiaomi-Robotics-0 均实现了高成功率,并且相比其他对比方法,在**吞吐量(Throughput,即单位时间内完成的任务数量)**上也具有显著优势,这直接体现了实时执行能力的提升。
5.5 VLM 能力保留验证
一个很有意义的测试是:在完成所有机器人动作训练之后,模型在纯视觉语言理解任务上的表现是否退化?
结果显示,Xiaomi-Robotics-0 的预训练版本在 VLM 基准测试上与底层 Qwen3-VL-4B-Instruct 的表现基本一致,证明训练过程成功避免了灾难性遗忘,模型的"看世界"能力得到完整保留。
六、手把手部署教程:如何在本地跑起来
接下来是很多开发者和研究者最关心的部分:怎么把这个模型跑起来。莫潇羽把官方 GitHub 的安装和推理流程整理成更适合初学者阅读的步骤,一步步来。
6.1 环境要求
在开始之前,需要确认你的机器满足以下条件:
- 操作系统:Linux(推荐 Ubuntu 20.04 / 22.04)
- Python 版本:3.12
- CUDA 版本:12.8(需与 PyTorch 2.8.0 配套)
- GPU:消费级 NVIDIA GPU 即可(推荐 RTX 3090 / 4090,显存 ≥ 24GB)
- Conda 包管理器(建议使用 Anaconda 或 Miniconda)
给小白的提示:如果你的电脑没有 NVIDIA 独立显卡,或者不确定 CUDA 版本,可以在终端运行 nvidia-smi 查看 GPU 信息,或者先在云服务器(如阿里云 PAI、腾讯云 GCC)上尝试。
6.2 克隆项目并搭建环境
第一步:从 GitHub 克隆项目
git clone https://github.com/XiaomiRobotics/Xiaomi-Robotics-0
cd Xiaomi-Robotics-0
第二步:创建 Conda 虚拟环境
为什么要创建虚拟环境?因为不同项目对 Python 版本和依赖库的要求各不相同,虚拟环境可以隔离这些差异,避免版本冲突。
# 创建名为 mibot 的 Python 3.12 环境
conda create -n mibot python=3.12 -y
# 激活环境
conda activate mibot
第三步:安装 PyTorch
注意这里指定了 CUDA 12.8 的版本,如果你的 CUDA 版本不同,需要去 pytorch.org 查找对应的安装命令。
pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0 \
--index-url https://download.pytorch.org/whl/cu128
第四步:安装 Transformers
pip install transformers==4.57.1
第五步:安装 Flash Attention 2
Flash Attention 是一种高效注意力计算库,能够显著加速 Transformer 推理,对大模型的实时运行至关重要。
# 先安装 ninja(加速编译)
pip uninstall -y ninja && pip install ninja
# 安装 flash-attn(可能需要几分钟编译时间)
pip install flash-attn==2.8.3 --no-build-isolation
# 如果上面的命令太慢,可以用预编译的 whl 包(适用于 Python 3.12 + CUDA 12)
pip install https://github.com/Dao-AILab/flash-attention/releases/download/v2.8.3/flash_attn-2.8.3+cu12torch2.8cxx11abiTRUE-cp312-cp312-linux_x86_64.whl
第六步:安装必要的系统库
这些是 OpenGL 相关的系统库,用于仿真环境渲染:
sudo apt-get install -y libegl1 libgl1 libgles2
6.3 下载模型权重
模型权重已发布在 Hugging Face,地址是 https://huggingface.co/XiaomiRobotics。
你可以直接用 huggingface_hub 下载:
pip install huggingface_hub
python -c "
from huggingface_hub import snapshot_download
snapshot_download(
repo_id='XiaomiRobotics/Xiaomi-Robotics-0',
local_dir='./model_weights'
)
"
给小白的提示:如果你在国内访问 Hugging Face 速度较慢,可以使用镜像站hf-mirror.com,将HF_ENDPOINT环境变量设置为镜像地址即可:export HF_ENDPOINT=https://hf-mirror.com
6.4 运行推理示例
环境搭建完成后,就可以尝试跑推理了。以下是官方提供的一个完整推理代码示例,莫潇羽加了更详细的中文注释方便理解:
import torch
from transformers import AutoProcessor, AutoModelForVLA # 根据实际API调整
# 1. 指定模型路径(本地权重或 HuggingFace 仓库名)
model_path = "./model_weights" # 或者 "XiaomiRobotics/Xiaomi-Robotics-0"
# 2. 加载处理器(负责图像预处理和动作编解码)
processor = AutoProcessor.from_pretrained(model_path, trust_remote_code=True)
# 3. 加载模型,使用 bfloat16 精度以节省显存,并启用 Flash Attention
model = AutoModelForVLA.from_pretrained(
model_path,
torch_dtype=torch.bfloat16,
attn_implementation="flash_attention_2",
trust_remote_code=True,
).cuda().eval()
# 4. 构建多视角输入的 prompt
# 这里模拟了一个"从多个摄像头视角观察"的场景
la