SmolVLA 模型微调
SmolVLA 是 Hugging Face LeRobot 发布的轻量 VLA 基座模型。本文以 LeRobot v0.5.0 为准;官方文档 LeRobot v0.5.0 SmolVLA 说明,它使用 lerobot/smolvla_base 作为预训练权重,面向 LeRobot 数据集微调;官方模型卡 lerobot/smolvla_base 标注其输入为多视角图像、机器人状态和可选语言指令,输出为连续动作。
如果你的目标是先建立一个可靠的训练基线,SmolVLA 通常比 Pi0/Pi0.5 更容易起步:它仍然是 VLA 模型,但环境与训练命令都在 LeRobot 官方栈内完成。
艾欧智能已经构建并发布 ioaitech/lerobot-gpu:v0.5.0 Docker 镜像。该镜像包含 LeRobot v0.5.0、GPU 训练依赖、视频解码依赖和 lerobot-train 命令,可直接用于 SmolVLA 微调。旧版本镜像用于复现历史实验,不建议作为新实验默认选择。
镜像默认发布在 Docker Hub:
ioaitech/lerobot-gpu:v0.5.0ioaitech/lerobot-gpu:v0.4.4ioaitech/lerobot-gpu:v0.3.3
中国大陆环境可加前缀,例如 swr.cn-east-3.myhuaweicloud.com/ioaitech/lerobot-gpu:v0.5.0。
版本选择
LeRobot 数据格式版本与代码版本需要匹配。训练前先查看 meta/info.json 中的 codebase_version。
| 数据格式 | 推荐镜像 | 说明 |
|---|---|---|
v3.0 | ioaitech/lerobot-gpu:v0.5.0 | 当前推荐路径,适合 SmolVLA 官方命令。 |
v3.0 | ioaitech/lerobot-gpu:v0.4.4 | 用于复现较早的 v0.4 训练环境。 |
v2.1 | ioaitech/lerobot-gpu:v0.3.3 | 用于旧数据格式或历史实验复现。 |
新实验建议统一导出或转换为 v3.0,减少版本兼容成本。
数据要求
官方文档建议从约 50 个高质量 episode 起步,并保证每种任务变化有重复演示。官方示例中 50 个 episode 覆盖 5 个方块位置,每个位置 10 次;25 个 episode 的版本效果明显不足。这个结论不能机械套用到所有机器人,但它说明了数据覆盖比单纯增加训练步数更重要。
至少确认:
- 图像字段在所有 episode 中一致。
observation.state与action维度固定。- 任务文本与动作目标一致。
- 训练集覆盖不同物体位置、光照和初始姿态。
使用镜像训练
先检查 GPU 容器:
docker run --rm --gpus all nvidia/cuda:12.1.0-base-ubuntu22.04 nvidia-smi
最小验证
docker run --rm --gpus all --shm-size 16g \
-v /path/to/lerobot_dataset:/data/input \
-v /path/to/output:/outputs \
ioaitech/lerobot-gpu:v0.5.0 \
bash -lc 'lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=local/my_dataset \
--dataset.root=/data/input \
--batch_size=8 \
--steps=1000 \
--output_dir=/outputs/smolvla_smoke \
--job_name=smolvla_smoke \
--policy.device=cuda \
--wandb.enable=false'
正式微调模板
docker run --rm --gpus all --shm-size 16g \
-v /path/to/lerobot_dataset:/data/input \
-v /path/to/output:/outputs \
ioaitech/lerobot-gpu:v0.5.0 \
bash -lc 'lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=local/my_dataset \
--dataset.root=/data/input \
--batch_size=64 \
--steps=20000 \
--output_dir=/outputs/smolvla_finetune \
--job_name=smolvla_finetune \
--policy.device=cuda \
--wandb.enable=false'
官方文档给出的参考量级是:20k steps 在单张 A100 上约 4 小时。实际时间取决于图像分辨率、数据解码、batch size 与显卡型号。
如果使用 Hugging Face Hub 数据集,去掉 --dataset.root,并将 --dataset.repo_id 改为真实仓库名:
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=your-name/your-dataset \
--batch_size=64 \
--steps=20000 \
--output_dir=outputs/train/smolvla \
--job_name=smolvla_finetune \
--policy.device=cuda \
--wandb.enable=true