单卡训练¶
本页给出 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