Dexbotic 是一个基于 PyTorch 构建的开源 VLA 模型工具,面向具身智能领域的研究者和开发者,提供一站式的 VLA 研究服务。

开源地址:https://github.com/Dexmal/dexbotic

本文提供两个实践案例:

  • ⌚️实践1:快速开始,进行SFT监督微调
  • 🐳实践2:基于 SimpleVLA-RL 进行GRPO微调

🏗️ 系统架构,如下图所示:

从数据来源到模型训练、推理,再到仿真与真实世界部署,形成了一个闭环的具身智能开发体系。

在这里插入图片描述

核心模块拆解
模块 核心作用 关键组件/特性
Embodiments(具身载体) 提供多源机器人数据输入 支持 UR5、Franka、ALOHA 等主流机械臂及其他机器人平台,产生原始数据(Raw Data)
Data Layer(数据层) 统一数据格式与处理 - Dexdata Format:定义标准化数据结构,兼容多源机器人数据
- Dexdata Process:提供数据清洗、格式转换(如 LeRobot/RLDS → Dexdata)
Modular Framework(模块化框架) 核心模型训练与推理引擎 - Vision Encoder:CLIP、sigLIP、PE 等视觉编码器
- LLM:Qwen、StepFun、PaliGemma 等大语言模型
- Action Expert扩散模型流匹配离散自回归预测 等动作生成策略
- VLA模型: 支持 π0、π0.5DM0、OFT、CogACT、MemVLA 等主流 VLA 模型
- 微调算法: SFT监督微调、GRPO
Experiment Layer(实验层) 管理训练与推理全流程 - Experiment Centric:以实验为核心的配置与调度
- Training PPL:分布式训练管线(支持 DeepSpeed 优化)
- Inference PPL:实时推理服务(支持 API 调用)
Simulation & Real World(仿真与真实视觉) 模型评估与验证 - 仿真环境:用于快速迭代与基准测试
- 真实世界:验证模型在物理场景中的泛化能力
Infra(基础设施) 提供灵活算力支持 - 云服务:阿里云、火山引擎等大规模云端训练平台
- 消费级 GPU:RTX 4090/5090 等本地训练部署

🌟 1、核心特性

统一的模块化 VLA 框架

  • 围绕 VLA 模型构建,兼容主流大语言模型的开源接口
  • 整合具身操作与导航能力,支持多种领先的具身操作/导航策略
  • 预留全身控制接口,适配未来技术演进

多机器人训练与部署支持

  • 支持 UR5、Franka、ALOHA 等主流机器人平台
  • 提供统一的训练数据格式与通用化部署脚本
  • 持续扩展更多主流机器人平台适配

云/本地灵活训练

  • 支持阿里云、火山引擎等大规模云端训练平台
  • 适配消费级 GPU(如 RTX 4090)的本地训练场景

标准化数据体系

  • 定义统一的 Dexdata 数据格式,兼容多源机器人数据
  • 提供 LeRobot、RLDS(Libero)等数据集的转换脚本

🚀 2、环境搭建

前置条件
  • Ubuntu 20.04 / 22.04
  • NVIDIA GPU(推荐:RTX 4090 / A100 / H100;训练建议 8 卡,部署单卡即可)
  • 已安装 NVIDIA Docker
操作步骤
# 克隆仓库
git clone https://github.com/Dexmal/dexbotic.git

# 启动 Docker 容器
docker run -it --rm --gpus all --network host \
  -v /path/to/dexbotic:/dexbotic \
  dexmal/dexbotic \
  bash

# 容器内环境初始化
cd /dexbotic
conda activate dexbotic
pip install -e .

3、基本使用:训练模型与推理

训练运行
# 分布式训练(torchrun)
torchrun playground/my_experiment.py

训练过程中,系统会:

  • 加载并预处理数据集
  • 按配置将模型 checkpoint 保存至 output_dir
  • (可选)通过 Weights & Biases 记录训练指标
  • save_steps 配置定期保存模型
推理运行

训练完成后,启动推理服务:

# 启动 Flask 推理服务
python playground/my_experiment.py --task inference

推理 API 调用示例:

curl -X POST http://localhost:7891/process_frame \
  -F "text=Grab the red object" \
  -F "image=@/path/to/your/image.jpg"

# 响应示例
# {"response": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1.0]}
模型评估

使用 dexbotic-benchmark 进行仿真基准评估:

cd dexbotic-benchmark
docker run --gpus all --network host -v $(pwd):/workspace \
  dexmal/dexbotic_benchmark \
  bash /workspace/scripts/env_sh/libero.sh /workspace/evaluation/configs/libero/example_libero.yaml

⌚️4、实践1 :快速开始

运行预训练模型

以 Libero CogACT 模型为例:

# 创建权重目录并下载预训练权重
mkdir -p checkpoints/libero
cd checkpoints/libero
git clone https://huggingface.co/Dexmal/libero-db-cogact libero_cogact
下载数据集

在 Hugging Face 提供了预处理的模拟器数据:

数据集目录结构建议:

data/
  libero/
    libero_10/{video,jsonl}
    libero_goal/
    libero_object/
    libero_spatial/
启动训练
# 8 卡分布式训练示例(Libero 数据集)
torchrun --nproc_per_node=8 playground/benchmarks/libero/libero_cogact.py

# (可选)使用 DeepSpeed 降低显存占用(RTX 4090 8 卡场景)
# 需配合 scripts/deepspeed/zero3_offload.json 配置

🐳5、实践2 :基于 SimpleVLA-RL 进行GRPO微调

我们可以使用Dexbotic 基于SimpleVLA-RLVLA模型进行,实现强化学习(RL)后训练。

前置条件
  • 操作系统:Ubuntu 20.04 或 22.04 (默认使用上面搭建的docker环境就好)
  • 显卡要求:NVIDIA RTX H20(训练推荐8块GPU,部署使用1块GPU即可)
  • 已安装NVIDIA Docker
步骤1:克隆代码仓库
git clone git@gitlab.dexmal.com:robotics/dexbotic.git
步骤2:启动Docker容器
docker run -it --rm --gpus all \
  -v /path/to/dexbotic:/dexbotic \
  dexmal/dexbotic:rl \
  bash
步骤3:激活Dexbotic环境
cd /dexbotic
conda activate dexbotic-rl
pip install -e .
启动强化学习后训练
deepspeed playground/benchmarks/libero/libero_simplevla_rl.py \
    --task=train \
    --sft_model_path=/path/to/sft-checkpoint \
    --dataset_name=libero_10

强化学习后训练的轨迹采样过程,需要一定时间收集足够的轨迹数据以完成逐步更新,过程中请耐心等待。

📊 6、数据格式

官网提供的仿真数据已经过处理和格式化,可以直接使用:

Dataset Link
Libero 🤗 Hugging Face
CALVIN 🤗 Hugging Face
Simpler-Env 🤗 Hugging Face
RoboTwin 2.0 🤗 Hugging Face
ManiSkill2 🤗 Hugging Face

按照以下目录结构,组织数据:

[Your Code Path]
├── dexbotic
├── docs
├── data
│   ├── libero
│   │   ├── libero_10
│   │   │   ├── video
│   │   │   └── jsonl
│   │   ├── libero_goal
│   │   ├── libero_object
│   │   └── libero_spatial
│   ├── calvin
│   │   └── task_ABC_D
│   │       ├── video
│   │       └── jsonl
│   ├── robotwin
│   │   └── video
│   │   └── jsonl
│   ├── maniskill2
│   │   └── video
│   │   └── jsonl
│   └── simpler
│       ├── video
│       └── jsonl
└── ...

📊 7、自定义数据使用

数据格式要求

Dexbotic 采用统一的 Dexdata 格式存储机器人数据集,单集数据以 .jsonl 文件存储,每行对应一帧数据,格式示例:

{
    "images_1": {"type": "video", "url": "url1", "frame_idx": 21}, 
    "images_2": {"type": "video", "url": "url2", "frame_idx": 21},
    "images_3": {"type": "video", "url": "url3", "frame_idx": 21},
    "state": [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1.0],
    "prompt": "open the door",
    "is_robot": true
}

数据转换

我们提供了主流数据集到 Dexdata 格式的转换脚本:

  • LeRobot 转 Dexdata:script/convert_data/convert_lerobot_to_dexdata.py
  • RLDS(Libero)转 Dexdata:script/convert_data/convert_rlds_to_dexdata.py

⚠️ 注:不同 RLDS 数据集的观测键值存在差异,RLDS 转换脚本仅作为参考,建议根据实际数据集调整。

数据格式参考:https://github.com/dexmal/dexbotic/blob/main/docs/Data.md

分享完成~

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐