LeRobot 文档
微调 SmolVLA
并获得增强的文档体验
开始使用
微调 SmolVLA
SmolVLA 是 Hugging Face 的轻量级机器人基础模型。它专为在 LeRobot 数据集上轻松微调而设计,可帮助您加速开发!
图 1. SmolVLA 的输入包括:(i) 多个摄像头视角,(ii) 机器人当前的感官运动状态,以及 (iii) 一条自然语言指令,这些输入被编码成上下文特征,用于在生成动作块时对动作专家进行条件化。
设置您的环境
请遵循我们的安装指南来安装 LeRobot。
运行以下命令安装 SmolVLA 依赖项
pip install -e ".[smolvla]"
收集数据集
SmolVLA 是一个基础模型,因此需要在您自己的数据上进行微调,才能在您的设置中获得最佳性能。我们建议录制约 50 个任务片段作为起点。请遵循我们的指南开始操作:录制数据集
在您的数据集中,请确保为您引入的每种变化(例如,如果是方块拾取放置任务,则为方块在桌子上的位置)提供足够的演示。
我们建议您参考下面链接的数据集,该数据集曾在 SmolVLA 论文中使用过
在这个数据集中,我们记录了 50 个片段,涵盖 5 个不同的方块位置。对于每个位置,我们收集了 10 个拾取和放置交互的片段。这种多次重复每种变化的结构有助于模型更好地泛化。我们尝试过一个包含 25 个片段的类似数据集,但这并不足以支持良好性能。因此,数据的质量和数量绝对是关键。当您的数据集在 Hub 上可用后,您就可以使用我们的微调脚本来使 SmolVLA 适应您的应用了。
在您的数据上微调 SmolVLA
使用 smolvla_base
,这是我们预训练的 4.5 亿参数模型,并在您的数据上进行微调。在单张 A100 GPU 上,训练模型 20k 步大约需要 4 小时。您应根据性能和您的用例来调整训练步数。
如果您没有 GPU 设备,可以使用我们的 notebook 在 上进行训练。
通过 --dataset.repo_id
将您的数据集传递给训练脚本。如果您想测试安装是否成功,请运行以下命令,其中我们使用了为 SmolVLA 论文 收集的一个数据集。
cd lerobot && lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=${HF_USER}/mydataset \
--batch_size=64 \
--steps=20000 \
--output_dir=outputs/train/my_smolvla \
--job_name=my_smolvla_training \
--policy.device=cuda \
--wandb.enable=true
微调是一门艺术。要全面了解微调的选项,请运行
lerobot-train --help
图 2:SmolVLA 在不同任务变化下的比较。从左到右:(1) 方块拾取放置计数,(2) 方块拾取放置计数,(3) 受干扰下的方块拾取放置计数,以及 (4) 在真实世界 SO101 环境下对乐高积木拾取放置的泛化能力。
评估微调后的模型并实时运行
与录制片段时类似,建议您登录到 HuggingFace Hub。您可以按照相应的步骤操作:录制数据集。登录后,您可以通过以下命令在您的设置中运行推理
lerobot-record \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM0 \ # <- Use your port
--robot.id=my_blue_follower_arm \ # <- Use your robot id
--robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30}}" \ # <- Use your cameras
--dataset.single_task="Grasp a lego block and put it in the bin." \ # <- Use the same task description you used in your dataset recording
--dataset.repo_id=${HF_USER}/eval_DATASET_NAME_test \ # <- This will be the dataset name on HF Hub
--dataset.episode_time_s=50 \
--dataset.num_episodes=10 \
# <- Teleop optional if you want to teleoperate in between episodes \
# --teleop.type=so100_leader \
# --teleop.port=/dev/ttyACM0 \
# --teleop.id=my_red_leader_arm \
--policy.path=HF_USER/FINETUNE_MODEL_NAME # <- Use your fine-tuned model
根据您的评估设置,您可以配置为评估套件录制的时长和片段数量。
< > 在 GitHub 上更新