← 全部报告
模型训练当前夹爪 · 训练规格2026-08-27

训练规格 · 当前夹爪 SmolVLA

2026-08-27 在 RTX 4090 上能跑通的 SmolVLA 微调基线命令,训练当前夹爪数据集 xlerobot-right-pick-cup-20260826-0042。附两个必须避开的坑,以及仍待实验的变量。

先说清楚现状:至今没有任何 checkpoint 在真机上抓起过杯子。所以下面不是「已验证有效的配方」——它只是当前能在 4090 上干净跑通、且避开了两个已知错误的基线。batch、增强、相机路数都还是待实验的变量,最终以实机试验判定,不以任何文档的先验为准。

① 基线命令(能干净跑通)

三路相机(含 head)、batch 16、20000 步、decay 显式对齐更新预算、torchcodec 解 AV1。挂 tmux 再跑,防家里网断。

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --policy.repo_id=Suyang99/xlerobot-smolvla-right-pick-b16-3cam-u20k \
  --policy.input_features=null \
  --policy.output_features=null \
  --dataset.repo_id=Suyang99/xlerobot-right-pick-cup-20260826-0042 \
  --batch_size=16 \
  --steps=20000 \
  --save_freq=2000 \
  --output_dir=/workspace/outputs/train/b16_3cam_u20k \
  --job_name=b16_3cam_u20k \
  --policy.device=cuda \
  --policy.scheduler_decay_steps=20000 \
  --rename_map='{"observation.images.head":"observation.images.camera1","observation.images.right_arm_wrist":"observation.images.camera2","observation.images.left_arm_wrist":"observation.images.camera3"}' \
  --dataset.video_backend=torchcodec \
  --num_workers=8 \
  --prefetch_factor=2 \
  --wandb.enable=false \
  2>&1 | tee /workspace/b16_3cam_u20k.log

② 参数逐项

参数 / arg值为什么
batch_size164090 上跑通、实测约 4.6 GB 显存。非最优,待与 32/64 做实机对照。
steps + scheduler_decay_steps20000 / 20000两者相等 → 学习率 cosine 曲线正好在 20000 步走完(S=1)。不显式设 decay 会走自动缩放、曲线走不完。
rename_map三路含 headhead→camera1、右腕→camera2、左腕→camera3。head 绝不能丢(见 ③)。
dataset.video_backendtorchcodec新数据集视频是 AV1,torchcodec 是 4090 上验证过的解码后端。
save_freq2000每 2000 步存一个可恢复 checkpoint(断网/中断能续)。
dataset.eval_split不写 = 0.0lerobot 默认 0.0 = 用全部数据。别设 0.2:它按集号切最后 20%,正好会砍掉一整个杯位。

③ 两个来自 GPT 4090 文档的坑

坑 1 · 丢掉了 head 相机。 REMOTE-GPU-SMOLVLA-4090.md 里 4 处命令都是 empty_cameras=1 + 只映双腕,把 head 丢了。head 是唯一俯看桌面、能定位杯子的相机,丢了模型就看不到杯子在哪。正确做法:保留三路(如上)。曾有一个 run 就是照这个丢 head 跑的,已作废重训。
坑 2 · image_transforms 默认带 affine 平移。 doc 里 image_transforms.enable=true 默认 6 个 transform 权重全 1.0,含 affine(随机平移 ±0.05)。而 5 个杯位在画面里间距约 0.06,±0.05 平移量级相当,可能糊掉位置线索。注意这是合理的先验、未经实测,不是定论。想精确「只色彩、不 affine」,CLI 改不到单个 transform(tfs.affine.weight=0 会报 unrecognized),要用配置文件。

④ 相机怎么选

相机任务里的价值
head🟢 俯看桌面、定位杯子 —— 绝不能丢
right wrist🟢 右手在干活,看爪子逼近/夹合
left wrist🟡 左手不动,几乎是死图、信息≈0。可选丢(省算力 + 左爪以后能换),丢它要补 empty_cameras=1。丢的应是它,不是 head。
建议:先保三路跑通、验一版,一次只动一个变量;「丢左腕」留作之后的对照实验。

⑤ 增强:一个待实验的变量

因为至今没有配方成功,增强正是值得试的方向。色彩类(亮度/对比/饱和/色相/锐度)安全、通常有益;affine 平移见坑 2,两个方向都讲得通,该做对照。开增强(含 affine)加:

  --dataset.image_transforms.enable=true \
  --dataset.image_transforms.max_num_transforms=5 \
要「只色彩、不 affine」:CLI 做不到单独关 affine,需要一个配置文件把 affine 权重设 0 再 --config_path 传入。
数据来源:训练命令与相机映射经操作者核对;lerobot 默认值取自本机 lerobot/configs/default.py、transforms/transforms.py;两个坑对照 05-training/REMOTE-GPU-SMOLVLA-4090.md。「至今没抓起过杯子」为操作者 2026-08-27 明确纠正。本页 2026-08-27 生成。