中文

SmolVLA

为新一代机器人技术设计的紧凑、高效、开源的视觉语言动作 (VLA) 模型。

🚀 认识 SmolVLA

SmolVLA 是由 Hugging Face 开发的一款仅有 4.5 亿参数的开创性视觉语言动作 (VLA) 模型。它经过精心设计,旨在在消费级硬件上实现经济高效的部署,让先进的机器人技术走进更多开发者和爱好者。

基于开放社区 LeRobot 的数据集进行训练,SmolVLA 真正体现了开源协同的力量,其性能可与规模更大的专有模型相媲美甚至超越。

📌 核心特性

紧凑高效的架构

结合精简的 SmolVLM-2 视觉语言模型和 Flow-Matching Transformer 动作专家,实现无与伦比的效率。

异步推理

通过将动作预测与执行解耦,实现实时响应,将任务完成时间平均缩短约30%。

开放与社区驱动

完全在 Hugging Face 上公开的 LeRobot 社区数据集上训练,并以开放源码形式发布,鼓励广泛使用和研究。

卓越性能

在 LIBERO 和 Meta-World 等模拟环境中表现出色,并在真实世界任务中取得了约 78.3% 的平均成功率。

🎬 运行实例

SmolVLA 概览

社区 DIY 机器人视频

🛠️ 快速上手指南

📋 模型概览

SmolVLA 是一个拥有4.5亿参数的视觉语言动作模型,专为经济实惠且高效的机器人技术而设计。它针对消费级硬件进行了优化,同时保持了竞争性的性能。

参数量: 4.5亿
月下载量: 15,383+
微调模型: 29个

1. 环境设置

在开始之前,您需要按照安装指南正确设置环境。

git clone https://github.com/huggingface/lerobot.git
cd lerobot
pip install -e ".[smolvla]"

2. 加载预训练模型

最快体验 SmolVLA 的方式是直接从 Hugging Face 加载预训练模型。

from lerobot.common.policies.smolvla.modeling_smolvla import SmolVLAPolicy
policy = SmolVLAPolicy.from_pretrained("lerobot/smolvla_base")

3. 微调预训练模型

在特定数据集上微调 SmolVLA 以获得更好的任务性能。此示例使用 SO101 抓取-放置数据集。

python lerobot/scripts/train.py \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=lerobot/svla_so101_pickplace \
  --batch_size=64 \
  --steps=20000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --wandb.enable=true

4. 从头开始训练

使用预训练的VLM和从零初始化的动作专家来训练 SmolVLA 神经网络。

python lerobot/scripts/train.py \
  --dataset.repo_id=lerobot/svla_so101_pickplace \
  --batch_size=64 \
  --steps=200000 \
  --output_dir=outputs/train/my_smolvla \
  --job_name=my_smolvla_training \
  --policy.device=cuda \
  --wandb.enable=true

🗂️ 数据集信息

SmolVLA 在社区贡献的数据集上进行训练。svla_so101_pickplace 数据集包含:

📊 更多资源

🤝 社区微调模型

探索社区构建的惊人应用!这些29个微调模型展示了SmolVLA在各种机器人任务中的多功能性。

📊 训练数据集探索器

探索用于训练SmolVLA的svla_so101_pickplace数据集。这个交互式查看器展示了真实的机器人演示数据。

💡 提示: 使用数据集查看器来了解SmolVLA学习的动作序列、摄像头角度和机器人状态。

🌐 资源与社群

加入我们,共同推进开放、经济、高效的机器人技术。我们欢迎您贡献数据、改进代码或分享您的项目。

❓ 常见问题

关于使用 SmolVLA 与 LeRobot 机械臂的常见问题解答。

训练时可以用什么物体?尺寸有要求吗?能用长方体吗?
没有严格规定——只要物体能被夹爪夹住、并且在摄像头里清晰可见即可。教程里常配合 SO-100/SO-101 机械臂使用一个约 2–4 厘米的小立方体,长方体或其他形状也完全可以。关键是保持一致:采集数据和实际运行时用同一个物体,并在采集时变换物体的位置和角度,策略的泛化能力会更好。
没有夹爪(腕部)摄像头能用 SmolVLA 吗?
可以。SmolVLA 会适配你采集数据时所用的摄像头,所以只用一个固定的外部摄像头也能工作。不过腕部摄像头通常能提升抓取精度,因为它在操作时能近距离看到物体。无论用哪种方案,训练和运行时的摄像头配置都要保持完全一致。
在哪里能找到 3D 打印(STL)文件,比如摄像头支架?
与 LeRobot 配套的 SO-100/SO-101 机械臂是开源硬件,可打印的 STL/CAD 文件放在 GitHub 上的 SO-ARM100 仓库(TheRobotStudio)。社区制作的摄像头支架常分享在 Printables/Thingiverse 上。具体链接请以 LeRobot 硬件文档为准。
训练好的策略能在树莓派/边缘设备上运行吗?
SmolVLA 很轻量(约 4.5 亿参数),能在普通硬件上运行,但仅靠树莓派 CPU 做实时推理会比较慢。推荐使用 SmolVLA 的异步推理:它把「动作预测」和「执行」分开,策略可以跑在性能更强的机器上(甚至远程),而机器人端流畅执行。若要在设备端做实时控制,最好配一块小型 GPU/加速器。
怎样只「运行/执行」训练好的策略,而不录制数据?
在 LeRobot 里,你通过评估/推理脚本运行训练好的策略,不保留数据集即可。之所以复用录制流程,是因为它负责机器人控制;你可以把输出指向一个临时目录(或事后删掉),或使用专门的评估/推理命令。具体命令名请参考当前版本的 LeRobot 文档,因为其命令行会随版本变化。
需要什么技术水平?是复制粘贴就能跑吗?
对于标准的 SO-100/SO-101 流程,基本上「照着命令走」即可——微调或运行现成脚本并不需要深入的机器学习编程。但你需要具备基本的 Python 和命令行操作能力,以及组装、标定硬件和排查驱动/USB 问题的耐心。入门阶段不需要自己编写模型代码。
如果立方体必须放在同一位置,那为什么还要用 AI,而不是回放固定轨迹?
固定轨迹只有在每次所有东西都处于完全相同位置时才有效,无法适应变化。学习得到的 VLA 策略会利用摄像头画面应对物体位置、朝向和光照的变化,还能听从不同的语言指令。教程里之所以固定位置,只是为了让第一个演示更简单;SmolVLA 真正的价值在于泛化,而泛化正是通过在多样化数据上训练获得的。