跳转至

单卡训练

本页给出 OpenArmX 数据集在单张 GPU 下的训练命令模板。
多卡训练见多卡训练


通用前置

每次训练前先激活对应模型的 conda 环境并设置离线模式:

# 以 ACT 为例,其他模型替换环境激活命令
lerobot-env
export HF_HUB_OFFLINE=1
export TRANSFORMERS_OFFLINE=1

1. ACT

lerobot-env  # 激活环境
export HF_HUB_OFFLINE=1
export TRANSFORMERS_OFFLINE=1
lerobot-train \
  --dataset.repo_id=local/你的数据名称 \
  --dataset.root=你的数据绝对路径 \
  --policy.type=act \
  --policy.push_to_hub=false \
  --output_dir=outputs/你的模型名称 \
  --batch_size=32 \
  --steps=50000 \
  --log_freq=100 \
  --save_freq=5000

2. SmolVLA

source ~/anaconda3/bin/activate lerobot-vla  # 激活环境 用户可根据实际情况调整
export HF_HUB_OFFLINE=1
export TRANSFORMERS_OFFLINE=1
lerobot-train \
  --dataset.repo_id=local/你的数据名称 \
  --dataset.root=你的数据绝对路径 \
  --dataset.video_backend=pyav \
  --policy.type=smolvla \
  --policy.path=lerobot/smolvla_base \
  --policy.push_to_hub=false \
  --output_dir=outputs/你的模型名称 \
  --batch_size=16 \
  --steps=50000 \
  --wandb.enable=false \
  --log_freq=100 \
  --save_freq=5000

3. Pi0

source ~/anaconda3/bin/activate lerobot-pi  # 激活环境,用户可根据实际情况进行调整
export HF_HUB_OFFLINE=1
export TRANSFORMERS_OFFLINE=1
lerobot-train \
  --dataset.repo_id=local/你的数据名称 \
  --dataset.root=你的数据绝对路径 \
  --dataset.video_backend=pyav \
  --policy.type=pi0 \
  --policy.pretrained_path=lerobot/pi0_base \
  --policy.dtype=bfloat16 \
  --policy.gradient_checkpointing=false \
  --policy.push_to_hub=false \
  --output_dir=outputs/你的模型名称 \
  --batch_size=8 \
  --steps=50000 \
  --wandb.enable=false \
  --log_freq=100 \
  --save_freq=5000

4. Pi0.5

单卡训练 Pi0.5 需要约 40GB+ 显存,建议使用多卡

source ~/anaconda3/bin/activate lerobot-pi
export HF_HUB_OFFLINE=1
export TRANSFORMERS_OFFLINE=1
lerobot-train \
  --dataset.repo_id=local/你的数据名称 \
  --dataset.root=你的数据绝对路径 \
  --dataset.video_backend=pyav \
  --policy.type=pi05 \
  --policy.pretrained_path=lerobot/pi05_base \
  --policy.dtype=bfloat16 \
  --policy.gradient_checkpointing=true \
  --policy.compile_model=true \
  --policy.freeze_vision_encoder=false \
  --policy.train_expert_only=false \
  --policy.device=cuda \
  --policy.push_to_hub=false \
  --output_dir=outputs/你的模型名称 \
  --batch_size=4 \
  --steps=50000 \
  --wandb.enable=false \
  --log_freq=100 \
  --save_freq=5000

5. XVLA

source ~/anaconda3/bin/activate lerobot-vla
export HF_HUB_OFFLINE=1
export TRANSFORMERS_OFFLINE=1
lerobot-train \
  --dataset.repo_id=local/你的数据名称 \
  --dataset.root=你的数据绝对路径 \
  --dataset.video_backend=pyav \
  --job_name=xvla_openarmx \
  --policy.path=lerobot/xvla-base \
  --policy.dtype=bfloat16 \
  --policy.action_mode=auto \
  --policy.device=cuda \
  --policy.freeze_vision_encoder=false \
  --policy.freeze_language_encoder=false \
  --policy.train_policy_transformer=true \
  --policy.train_soft_prompts=true \
  --policy.push_to_hub=false \
  --policy.empty_cameras=0 \
  --policy.num_image_views=3 \
  --rename_map='{"observation.images.cam_head": "observation.images.image", "observation.images.cam_right": "observation.images.image2", "observation.images.cam_left": "observation.images.image3"}' \
  --output_dir=outputs/你的模型名称 \
  --batch_size=8 \
  --steps=50000 \
  --wandb.enable=false \
  --log_freq=100 \
  --save_freq=5000

训练参数速查

参数 说明
--dataset.repo_id 数据集名称,与采集时一致
--dataset.root 数据集在本机的绝对路径
--dataset.fps 限制采集帧率,采集时若非默认值需填写
--output_dir 模型输出目录
--batch_size 批次大小,显存不足时优先调小此参数
--steps 总训练步数,最少 10000 步,建议 50000 步以上
--log_freq 日志打印间隔(步数)
--save_freq 模型保存间隔(步数)
--resume=true 从上次中断处恢复训练

训练完成后,推理使用的模型路径为:

output_dir/checkpoints/最新步数/pretrained_model

实操建议

  • 新任务先用小步数冒烟训练(1000~5000 步),确认 loss 正常下降后再扩大步数
  • 所有路径尽量使用绝对路径,避免终端切换造成路径错误
  • batch_size 和显存直接相关,显存不足时先调小 batch_size