VLA训练流程梳理¶
目的:基于实验室现有半人形机器人,采集了大概50条双臂抓取方块的任务数据,现在在此基础上,先跑通smolVLA的本地微调及部署全流程。
0724已完成:
✓ ROS1 rosbag 数据采集
✓ Foxglove / rosbag info 数据查看
✓ 各话题频率统计
✓ LeRobot环境安装
✓ SmolVLA下载
✓ 官方数据集加载
✓ Rerun可视化
✓ 官方数据20步冒烟训练
✓ RTX 3060 CUDA训练验证
✓ TorchCodec问题绕过,使用PyAV
-
对rosbag中的数据进行分析 1、使用rosbag info xxx.bag来查看都有哪些话题消息
2、使用/vla_data/data_process/bag_rate.py来一次性检测所有rosbag包中所有话题消息的频率,需要首先进入到ros1的docker环境,然后执行具体命令python3 bag_rate.py ../rosbags/2026-xxx.bag
3、使用foxglove来查看具体图像信息以及关节数据变化曲线 -
lerobot框架及基座模型权重下载 1、lerobot的环境似乎和ros1 noetic环境会有什么冲突,所以lerobot的conda环境直接建立在宿主机上,需要回放rosbag消息或对原始bag消息进行处理时进入ros1的docker环境
2、具体参照官方文档 -
官方数据集加载进行冒烟测试 1、下载官方数据集
2、官方数据集可视化lerobot-edit-dataset \ --repo_id lerobot/svla_so100_pickplace \ --operation.type info \ --operation.show_features true
3、进行20次冒烟测试
其中视频解码采用的是PyAV,PyAV通常比TorchCodec慢一些,但更容易部署和排查。后续想加快速度,可以修复环境来支持TorchCodec。 标准是放入3路图像,现在只放入了2路,所以empty=1.lerobot-train \ --policy.path=lerobot/smolvla_base \ --policy.push_to_hub=false \ --policy.empty_cameras=1 \ --dataset.repo_id=lerobot/svla_so100_pickplace \ --dataset.video_backend=pyav \ --rename_map='{"observation.images.top":"observation.images.camera1","observation.images.wrist":"observation.images.camera2"}' \ --batch_size=1 \ --steps=20 \ --log_freq=1 \ --output_dir=outputs/train/smolvla_smoke_test \ --job_name=smolvla_smoke_test \ --policy.device=cuda \ --wandb.enable=false
下一步任务: