右臂那套 state dropout 流程(见 右臂完整手册)从代码到验收照抄,这页只列跟右臂不一样的地方,以及右臂那一轮真实踩过的坑。机制部分不重复。
| 项 | 值 |
|---|---|
数据集 REPO_ID | xlerobot-team/xlerobot-left-pick-cup-sep3-clean-20260905(54 集 / 13,693 帧) |
| 任务文本 | Pick up the cup with the left arm.实读自 meta/tasks.parquet。脚本自己会读,不用手传 —— 手传反而有传错的风险。 |
| 项 | 右臂(已跑完) | 左臂(这次) |
|---|---|---|
| 数据集 | right-pick-cup-20260826-0042 | left-pick-cup-sep3-clean-20260905 |
| TAG | right-sd | left-sd |
| 模型仓库(自动拼) | …-right-sd-p0.2-b16-u20000 | …-left-sd-p0.2-b16-u20000 |
| 图像增强 AUG | 开(train_config 实读 enable=True) | 上一轮是关的 —— 这次必须显式 AUG=1 |
| state dropout | 相同。左臂的 state 捷径实测同样强:照抄当前关节角对下一帧 action 的误差中位 0.53°(右臂 0.66°),逐维相关 0.946–0.997。 | |
| 配方 | B_eff 16 / lr 1e-4 / 20000 更新 / warmup 1000 / p_end 0.2 —— 不要改 | |
REPO_ID=xlerobot-team/xlerobot-left-pick-cup-sep3-clean-20260905 \
TAG=left-sd AUG=1 ./train_smolvla_state_dropout.sh
AUG=1 这次是必须的。这份数据的 54 集实测是两批不同光照(见
抓取位点图那一页),而上一轮训练一点颜色扰动都没做。right_arm 六维 + x.vel / y.vel / theta.vel —— 训练集里 std 恰好为 0
录左臂时右臂不动、底盘不动,于是这九维在 13,693 帧里是常数。而 lerobot 的归一化是 (x−mean)/(std+1e-8),对 std==0 没有任何保护 —— 真机上右臂是连着的、报真实角度,那六维会被放大约 1e8 倍。
推理端已修(run_policy_trials.py 的 install_state_guard(),从 checkpoint 自己的统计量推,左右通用)。上机前确认日志里有这一行:
== state 恒定维保护【已启用】: 9 维在训练集里恒定(std==0),喂给策略前钉回训练均值
看不到就是没生效,那一批数据不作数。
python3 -c "
from huggingface_hub import HfApi
print(HfApi().dataset_info('xlerobot-team/xlerobot-left-pick-cup-sep3-clean-20260905').lastModified)"
hf upload-large-folder --repo-type=dataset … 先传。录制完不会自动补传,右臂那次踩过。pip install -U "lerobot[dataset,training,smolvla]" huggingface_hub
hf auth login && hf auth whoami
tmux new -s train-left # 独立会话名,别和右臂那个混用
python -c "import torch,torchcodec;print(torch.__version__,torchcodec.__version__)"2.8.0+cu128 / 0.7.0。默认会装出 torchcodec 0.11.1,和 torch 2.8 不兼容,导入报 undefined symbol: torch_dtype_float4_e2m1fn_x2,而 lerobot 会静默退回 pyav、慢好几倍还不报错。修法见第五节。cd /workspace
git clone -b claude/right-arm-batch-16-training-hgq1l4 \
https://<用户名>:<PAT>@github.com/ginagina19992023/Robotic_challenge.git
cd Robotic_challenge/05-training
-b 这个分支参数不能省,漏了会拉 main、看不到那三个文件。PAT 要用 classic token(ghp_ 开头、勾 repo),不是网页密码;只显示一次,忘了只能 Regenerate。粘贴时别把示例里的尖括号一起抄进去。python state_dropout.py # 不需要 GPU,退火分段点全 ok 才算过
SD_DEBUG_EVERY=5 BENCH=1 SD_DEBUG=1 AUG=1 \
REPO_ID=xlerobot-team/xlerobot-left-pick-cup-sep3-clean-20260905 TAG=left-sd \
./train_smolvla_state_dropout.sh
[state-dropout] step N/40 p=… 置零 x/16,p 从 1.000 一路降到 0.200 才算通过。SD_DEBUG_EVERY=5 不能漏:默认每 200 次前向才打一行,40 步烟测天然到不了,漏传只会看到开头横幅,容易误判成"补丁没生效"。AUG=1 REPO_ID=xlerobot-team/xlerobot-left-pick-cup-sep3-clean-20260905 \
TAG=left-sd ./train_smolvla_state_dropout.sh
Ctrl-B 再 D 脱离,断线不杀训练。想提前测中间档(如 012000)可以边训边拉,不影响已存的档。python 03-software/scripts/chunk_sweep.py \
<新checkpoint>/checkpoints/020000/pretrained_model \
~/.cache/huggingface/lerobot/xlerobot-team/xlerobot-left-pick-cup-sep3-clean-20260905 \
"Pick up the cup with the left arm." left 12 50 0.70
chunk_sweep.py,不要用 vision_sweep*.py —— 后者只取动作块第一步、只在起手位测,在那里任何模型都接近 0,没有分辨力。0.70 是 phase:从够取过程的 70% 处起手。对照基准(同一测法、同一 phase):现役 sep3-left/020000 是 +0.949,右臂最好的是 +1.02。| 级别 | 坑 | 修法 |
|---|---|---|
| 阻断 | torchcodec 装成 0.11.1,和 torch 2.8.0+cu128 不兼容,import 报 undefined symbol;不修则静默退回 pyav,训练慢几倍但不报错 | pip uninstall -y torchcodec && pip install "torchcodec==0.7.0" |
| 阻断 | 脚本里 --accelerator.gradient_accumulation.steps 现装的 lerobot CLI 不认,报 unrecognized arguments | 分支上已删。本机 05-training/ 里这一行还在(第 116 行)—— 用本机版本要先删。配方里 ACCUM 本来就是 1,删掉不改变任何数值。 |
| 易错 | 命令敲错机器:git clone 在 Pod 上跑,scp 在 Jetson 上跑并指向 Pod | — |
| 易错 | hf 在 Jetson 上 command not found | pip install -U huggingface_hub |
| 易错 | 漏传 SD_DEBUG_EVERY=5,40 步烟测看不到 p 在动 | 见第四步。本机版 state_dropout.py 还不支持这个变量,只有分支上支持。 |
05-training/ 里:train_smolvla_state_dropout.sh 仍带那行会报错的 --accelerator 参数,state_dropout.py 不支持 SD_DEBUG_EVERY。
按本页第三步从分支 clone 就没问题;但两边迟早要合成一份,否则以后必然有人用本机版本踩空。今天用修正后的测法复测发现:现役左臂模型接近段的斜率已经是 +0.949(r=0.995),两批光照下都一样。它不是"学不会看图"。右臂最好的那个是 +1.02,也是同一档。
换句话说,左臂和右臂现在是同一个病:起手位不瞄(斜率 ≈ 0),而真机每次都从 home 起步,走不到会瞄的那一段就先闭了爪。所以这一轮重训要回答的问题应该是 「state dropout 能不能把起手段的斜率带起来」,而不是「左臂能不能学会看图」——后者它已经会了。
claude/right-arm-batch-16-training-hgq1l4 · 本页数字实测于 2026-09-08 本机 Jetson