基于 ROCm + Genesis + SmolVLA 的合成数据抓取全流程

Xbot具身知识库 2026-07-28 11:55

点击下方卡片,关注【Xbotics具身智能实验室】公众号

你想要的这里都有~~


本次 AMD Hackathon 的 Physical AI 赛道,并不限定某种特定机器人,而是希望选手围绕一个核心问题展开:如何利用 AMD Radeon GPU 与 ROCm 生态,把一套完整的机器人工作流实现下来。

本文将带你从零开始,在 Genesis 仿真中生成 Franka 机械臂的专家抓取轨迹,通过 LeRobot 构建标准数据集,并对视觉‑语言‑动作模型 SmolVLA 进行微调,最终形成一个“仿真→数据→训练→评估”的完整闭环。


一、赛道评分与本文目标

大赛评分主要从五个维度考察:

  • 能力表现(30分):任务是否稳定完成
  • AMD Radeon & ROCm(20分):ROCm 运行记录、训练耗时、峰值显存、利用率
  • 创新与原创性(20分):设定自己的 baseline、进行消融实验
  • 真实应用价值(20分):能否迁移至真实场景
  • 上游开源贡献(10分):成果是否可复现、可继续开发
基于 ROCm + Genesis + SmolVLA 的合成数据抓取全流程图1
基于 ROCm + Genesis + SmolVLA 的合成数据抓取全流程图2

本教程的输出刚好覆盖以上所有要求——我们在 AMD GPU + ROCm 上完成数据生成与模型训练,记录显存、耗时与 loss 变化,保留完整的 LeRobot 数据集和权重,并留有消融实验的接口。

demo效果

基于 ROCm + Genesis + SmolVLA 的合成数据抓取全流程图3
基于 ROCm + Genesis + SmolVLA 的合成数据抓取全流程图4
基于 ROCm + Genesis + SmolVLA 的合成数据抓取全流程图5

二、环境搭建:从硬件驱动到模型层

整个项目的依赖共分六层:

  1. AMD GPU + amdgpu 驱动 – 实际计算与图形渲染
  2. ROCm + HIP + Mesa – AMD 计算平台
  3. PyTorch + AOTriton – 张量计算、自动求导、Attention 加速
  4. Genesis + Taichi – 机器人仿真、碰撞、IK、相机渲染
  5. LeRobot + Transformers – 数据集格式、策略接口、模型加载
  6. SmolVLA – 视觉+语言+机器人状态 → 动作

上层依赖下层,因此环境检查应从底向上进行。

2.1 虚拟环境与 PyTorch(ROCm版)

cd /workspacepython3 -m venv rdnasource /workspace/rdna/bin/activatepython -m pip install --upgrade pip setuptools wheel# 安装镜像提供的 ROCm 7.2.1 版本 PyTorch wheelpython -m pip install \  /torch-2.9.1+rocm7.2.1*.whl \  /torchvision-0.24.0+rocm7.2.1*.whl \  /torchaudio-2.9.0+rocm7.2.1*.whl \  /triton-3.5.1+rocm7.2.1*.whl

验证 ROCm 与 GPU 可用:

import torchprint(torch.version.hip)          # 应非空print(torch.cuda.is_available()) # 应 True

2.2 Genesis 仿真器

git clone --depth 1 https://github.com/Genesis-Embodied-AI/Genesis.git /workspace/Genesissource /workspace/rdna/bin/activatepython -m pip install /workspace/Genesis

测试导入:

import genesisprint("Genesis:", genesis.__version__)

2.3 LeRobot、Transformers 等模型依赖

python -m pip install \  "lerobot==0.4.4" transformers accelerate safetensors \  matplotlib Pillow jupyter nbconvert ipykernel num2words modelscope

2.4 NumPy 与 scikit-image(修复 ABI 兼容)

python -m pip install --force-reinstall --no-cache-dir \  "numpy==2.1.2""scikit-image>=0.22"

2.5 FFmpeg 与 TorchCodec(视频编解码)

apt-get updateapt-get install -y ffmpeg libavcodec-dev libavformat-dev \  libavutil-dev libavdevice-dev libavfilter-dev libswscale-dev libswresample-devbash setup_torchcodec.sh

验证:

import torchcodecprint("TorchCodec import ok")

2.6 缓存路径与模型完整性

将模型和数据集缓存指向持久化目录:

export HF_HOME=/workspace/cache/huggingfaceexport HF_LEROBOT_HOME=/workspace/cache/huggingface/lerobotexport MODELSCOPE_CACHE=/workspace/cache/modelscope

确保 /workspace/models/ 下存在预训练权重:

  • smolvla_base/(SmolVLA 策略配置与权重)
  • SmolVLM2-500M-Video-Instruct/(VLM 骨干)

此时你的环境已形成一条完整链路:

ROCm → PyTorch → Genesis → LeRobot → SmolVLA


三、生成专家抓取数据(Genesis + LeRobot)

3.1 一键生成

进入项目目录并执行数据生成脚本:

source /workspace/rdna/bin/activatecd /workspace/Robot_synthetic_data_generation_workshoppython scripts/02_gen_data_custom_scene.py \  --scene rustic_kitchen \  --anchor floor_origin \  --camera-layout up_wrist \  --n-episodes 1 \  --repo-id local/franka-kitchen-wrist-live \  --seed 42

这条命令背后完成了:

  • 加载厨房场景 → 创建 Franka 机械臂 → 随机放置方块
  • 专家控制器通过 逆运动学 生成抓取轨迹
  • 同时记录两路相机图像(顶视 + 手腕)、关节状态、专家动作和语言任务“Pick up the cube.”
  • 每条约 135 帧,30 FPS,一次抓取约 4.5 秒

日志中看到 lift=0.1448m sustain=39 即表示本次抓取成功。

3.2 数据保存位置

数据存入 LeRobot 本地仓库:

/workspace/cache/huggingface/lerobot/local/franka-kitchen-wrist-live/

读取验证:

from lerobot.datasets.lerobot_dataset import LeRobotDatasetds = LeRobotDataset("local/franka-kitchen-wrist-live")sample = ds[0]print("frames:", len(ds))          # 135print("task:", sample["task"])     # Pick up the cube.print("up camera shape:", sample["observation.images.up"].shape)     # [3,480,640]print("state shape:", sample["observation.state"].shape)             # [9]print("action shape:", sample["action"].shape)                       # [9]

至此,Genesis 的仿真数据被 LeRobot 转化成了 SmolVLA 能直接消费的标准格式。


四、LeRobot 数据集格式详解

LeRobot 数据集的逻辑结构:

Dataset├── Episode 0(一次完整抓取)│   ├── Frame 0│   ├── Frame 1│   └── ……├── Episode 1└── ……

每条样本的关键字段:

  • observation.images.up – 顶视相机图像
  • observation.images.side – 手腕相机图像
  • observation.state(9维)– 前7维为机械臂关节角,后2维为夹爪位置
  • action(9维)– 专家给出的目标关节/夹爪位置
  • task – 文本指令 “Pick up the cube.”
  • episode_index / frame_index

训练时,SmolVLA 使用图像、状态和语言作为输入,以专家 action 作为监督信号。

可以把 LeRobot 看作 Genesis 与 SmolVLA 之间的数据协议


五、用 SmolVLA 进行模仿学习微调

5.1 模型输入/输出

SmolVLA 是一个 视觉‑语言‑动作模型,接收:

  • 两路图像
  • 当前 9D 机器人状态
  • 语言任务

预测:

  • 下一段 9D 机器人动作(机械臂 + 夹爪)

训练目标是最小化预测动作与专家动作的差异。

5.2 加载本地预训练模型

启用离线模式,确保从 /workspace/models 加载:

export HF_HUB_OFFLINE=1export TRANSFORMERS_OFFLINE=1

5.3 启动训练

使用 100 个 episode 的数据微调:

python scripts/02_train_vla.py \  --dataset-id local/franka-kitchen-wrist-100ep \  --pretrained /workspace/models/smolvla_base \  --n-steps 4000 \  --batch-size 4 \  --num-workers 4 \  --save-every 0 \  --log-every 20 \  --seed 42 \  --output-dir ./output \  --run-name smolvla_kitchen_wrist_100ep_4000step

关键信息:

  • 设备显示 device: cuda(实际为 ROCm/HIP)
  • 启用 AMP(torch.bfloat16
  • 总参数量 450,046,176,可训练参数 99,880,992,冻结部分视觉骨干
  • 初始 loss ≈ 0.6289,最终 loss ≈ 0.0106
  • 峰值显存约 2.27 GB,训练耗时约 648 秒

5.4 训练产物

output/train/smolvla_kitchen_wrist_100ep_4000step/├── final/                     # 最终模型权重与配置├── train_summary.json         # 训练总结└── train_metrics.json         # 详细指标

六、总结与下一步

此时我们已完成:

  1. 基于 ROCm 的全链路环境搭建
  2. 利用 Genesis 生成专家抓取数据,存入 LeRobot 格式
  3. 理解 LeRobot 数据集,确认观测与动作维度
  4. 对 SmolVLA 进行模仿学习微调,loss 从 0.63 降至 0.01

所有过程均在 AMD Radeon GPU 上运行,完整记录了显存占用、训练时间和利用率,满足赛道评分要求。

下一阶段:将训练好的策略重新加载到 Genesis 仿真中,进行闭环推理,评估抓取成功率,完成从数据生成到最终性能评估的完整闭环。你还可以基于此 baseline 进行消融实验(如改变相机视角、修改任务语言描述、调整机械臂初始位姿等),充分展示创新性与真实应用价值。

基于 ROCm + Genesis + SmolVLA 的合成数据抓取全流程图6

复现提示

本文所有代码和数据集路径均指向 /workspace 下的持久化存储,建议在实例启动后首先完成第二章的环境验证,再依次执行数据生成与训练。所有依赖版本已锁定,可直接复现。

开源贡献方面,您可以将训练好的模型配置、数据集以及闭环评估脚本整理提交,推动社区在 AMD ROCm 平台上进行更广泛的机器人学习研究。


-END-

Ask Me Anything|提问箱

对文章有疑惑,或想聊更深?欢迎把你的问题丢给我们:技术方案、实操踩坑、课程与资料、项目合作、职业发展,都可以问。

怎么问:在评论区留言,或私信公众号

我们会做什么:每周集中整理高质量问题并公开回复,重点问题邀请作者或嘉宾深度解答;典型问题会加入知识库并持续更新。

提问小提示:尽量说明「你的目标—当前做法—期望产出」,附上必要信息(硬件/软件版本、数据规模等),能更快获得有用答案。

一起把问题变成知识,推动社区进步 🚀

关于科技区角:国内科技展会垂直内容策划服务商,提供从论坛内容全案策划、会展市场化IP打造到精准专业观众一站式邀约服务,以产业内容吸引高质量B端人群,打通展会从议题设计、演讲嘉宾邀约、宣传预热、精准邀观到供需对接全链路。
声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。
more
蜂群无人机首秀台风观测,填补近海低空气象数据空白
福建:完善“低空+海洋”立体网络,加快无人机、电动垂直起降飞行器等技术在海洋监测与生态保护、物流与补给、海岛低空旅游等领域应用
论坛报名丨2026上海市青少年无人机创新赛将于7月24日至25日举行,邀您参加
忆伯科技:将携「苍蓝忆识Lite」、「便携式无人机识别肩灯」等,亮相2026国际低空经济博览会
无人机空战时代来了?土耳其“阿金奇”重型  无人机将中国造CH-95击落
如何做到无人机合规飞行?公安部最新回应:“一登二查三申请”
180w浙江钱清街道无人机空中智慧监管项目公开招标,无人机监管·无人机雷达·无人机实训室丨低空项目
论坛报名丨低空有界,安全无界——2026国际低空博览会暨第五届中国无人机安全前沿论坛7月与您相约上海
驰援广西!大疆重载无人机转移受困人员
低空有界,安全无界|2026国际低空博览会暨第五届中国无人机安全前沿论坛7月与您相约上海
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号