LeRobot documentation

SmolVLA

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.6.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

SmolVLA

SmolVLA 是 Hugging Face 推出的轻量级机器人基础模型。它专为在 LeRobot 数据集上进行便捷的微调而设计,助力加速您的开发进程!

SmolVLA architecture.
图 1。SmolVLA 的输入包括:(i) 多个摄像头视角,(ii) 机器人当前的感觉运动状态,以及 (iii) 自然语言指令。这些输入被编码为上下文特征,用于在生成动作块时条件化动作专家。

设置您的环境

  1. 按照我们的安装指南安装 LeRobot。

  2. 运行以下命令安装 SmolVLA 依赖项:

    pip install -e ".[smolvla]"

收集数据集

SmolVLA 是一个基础模型,因此需要在您自己的数据上进行微调,才能在您的环境中获得最佳性能。 我们建议以录制约 50 个任务片段作为起点。请按照我们的指南开始操作:录制数据集

在您的数据集中,请确保为引入的每种变化(例如,在方块拾取-放置任务中,方块在桌面上的位置)都提供足够的演示。

我们建议参考 SmolVLA 论文 中使用的数据集,链接如下:

🔗 SVLA SO100 PickPlace

在此数据集中,我们记录了 50 个 episode,涵盖 5 个不同的立方体位置。对于每个位置,我们收集了 10 个 pick-and-place 交互的 episode。这种将每种变化重复多次的结构有助于模型更好地泛化。我们尝试了类似的包含 25 个 episode 的数据集,但数量不足,导致性能不佳。因此,数据的质量和数量绝对是关键。 当您的数据集在 Hub 上可用后,您就可以使用我们的微调脚本将 SmolVLA 适配到您的应用场景中。

使用您的数据微调 SmolVLA

使用 smolvla_base,即我们预训练的 450M 模型,并在您的数据上进行微调。 在单个 A100 GPU 上训练该模型 20k 步大约需要 4 小时。您应根据性能和具体用例调整训练步数。

如果没有 GPU 设备,您可以使用我们的 notebook 在 Google Colab 上进行训练

使用 --dataset.repo_id 将数据集传递给训练脚本。如果您想测试安装,请运行以下命令,其中我们使用了为 SmolVLA Paper 收集的数据集之一。请将其替换为您自己的数据集,以便在您的数据上进行微调。

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=lerobot/svla_so100_pickplace \
  --policy.repo_id=${HF_USER}/my_smolvla \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --batch_size=64 \
  --steps=20000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --trackio.enable=true
  • --policy.repo_id 是微调后的模型推送到的 Hub 仓库。
  • --rename_map 将数据集的相机名称映射为 smolvla_base 所期望的 camera1、camera2 和 camera3 名称。如果不使用该参数,训练会因特征不匹配错误而停止。请按照相同方式映射您自己的相机名称(参见 重命名映射)。
You can start with a small batch size and increase it incrementally, if the GPU allows it, as long as loading times remain short.

微调是一门艺术。若要全面了解微调的各种选项,请运行

lerobot-train --help

Comparison of SmolVLA across task variations.
图 2:SmolVLA 在不同任务变体上的对比。从左到右依次为: (1) 拾放方块计数,(2) 拾放方块计数,(3) 在扰动条件下的拾放方块计数,以及 (4) 在真实世界 SO101 上对乐高积木进行拾放任务的泛化能力。

评估微调后的模型并实时运行

同样,在录制剧集时,建议您已登录 HuggingFace Hub。您可以按照相应的步骤操作:录制数据集。 登录后,您可以通过以下方式在您的环境中运行推理:

lerobot-rollout \
  --strategy.type=base \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_blue_follower_arm \
  --robot.cameras="{ top: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30}}" \
  --rename_map='{"observation.images.top": "observation.images.camera1", "observation.images.wrist": "observation.images.camera2"}' \
  --task="Grasp a lego block and put it in the bin." \
  --policy.path=${HF_USER}/FINETUNE_MODEL_NAME

将 --robot.port、--robot.id、--robot.cameras 和 --policy.path 替换为您自己的端口、机器人 ID、相机(与数据集中相同的相机名称和分辨率)以及微调后的模型。传入与训练时相同的 --rename_map,以及与数据集录制时相同的 --task 描述。

您可以向上述命令添加的可选标志:

  • RTC(在推理速度较慢时实现更流畅的动作,例如在低功耗硬件上):--inference.type=rtc --inference.rtc.execution_horizon=10 --inference.rtc.max_guidance_weight=10.0
  • 查看摄像头流:--display_data=true
  • 自动停止:--duration=60(以秒为单位)。默认情况下,策略会一直运行,直到你按下 Ctrl+C。

要记录评估回合,并可选使用遥操作者在回合之间重置场景,请改用 --strategy.type=episodic。有关所有策略,请参阅 策略部署。

Update on GitHub