模型训练
1. ACT
以下是针对 Task 1 使用 ACT 策略、附带完整超参数的训练示例:
# 简洁训练命令
/isaac-sim/python.sh src/lerobot/scripts/lerobot_train.py \
--dataset.repo_id=your_org/your_dataset \
--dataset.video_backend=pyav \
--policy.type=act \
--output_dir=challenge2026_baseline/Part_Sorting/act \
--dataset.root=datasets/Part_Sorting/ \
--job_name=part_sorting_act \
--policy.device=cuda \
--wandb.enable=false \
--policy.repo_id=none \
--policy.push_to_hub=false
# 详细训练命令 task1
/isaac-sim/python.sh src/lerobot/scripts/lerobot_train.py \
--dataset.repo_id=your_org/your_dataset \
--dataset.root=datasets/Part_Sorting/ \
--dataset.video_backend=pyav \
--policy.type=act \
--policy.n_obs_steps=1 \
--policy.chunk_size=50 \
--policy.n_action_steps=50 \
--policy.vision_backbone=resnet18 \
--policy.pretrained_backbone_weights=ResNet18_Weights.IMAGENET1K_V1 \
--policy.dim_model=256 \
--policy.n_heads=4 \
--policy.dim_feedforward=1024 \
--policy.n_encoder_layers=4 \
--policy.n_decoder_layers=1 \
--policy.use_vae=true \
--policy.latent_dim=32 \
--policy.n_vae_encoder_layers=4 \
--policy.dropout=0.1 \
--policy.kl_weight=10.0 \
--policy.optimizer_lr=1e-5 \
--policy.optimizer_weight_decay=1e-4 \
--policy.optimizer_lr_backbone=1e-5 \
--policy.device=cuda \
--policy.use_amp=true \
--policy.push_to_hub=false \
--output_dir=challenge2026_baseline/Part_Sorting/act \
--job_name=part_sorting_act \
--resume=false \
--seed=1000 \
--num_workers=8 \
--batch_size=8 \
--steps=100000 \
--eval_freq=0 \
--log_freq=200 \
--save_checkpoint=true \
--save_freq=5000 \
--wandb.entity=your_wandb_entity
请将
your_org/your_dataset替换为您自己的数据集 repo ID,将challenge2026_baseline/Part_Sorting/act替换为您的保存文件地址,将your_wandb_entity替换为您的 WandB 用户名或团队名。若不使用 WandB,可删除--wandb.entity参数。训练act会涉及到下载resnet18-f37072fd.pth
数据集与输出参数
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
dataset.repo_id | 数据集 ID(Hugging Face 或本地组织名) | 必填 |
dataset.root | 数据集本地根路径 | 必填 |
output_dir | 检查点与日志保存目录 | 必填 |
job_name | 任务标识(显示在日志 / WandB 中) | 可选 |
resume | 是否从上次检查点续训 | false |
seed | 全局随机种子 | 1000 |
训练循环参数
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
steps | 总训练步数 | 100000 |
batch_size | 每步样本数 | 8 |
num_workers | DataLoader 工作进程数 | 8 |
eval_freq | 评估间隔步数(0 表示禁用) | 0 |
log_freq | 日志打印间隔步数 | 200 |
save_checkpoint | 是否保存检查点 | true |
save_freq | 检查点保存间隔步数 | 5000 |
ACT 策略参数
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.type | 策略算法类型 | act / pi0 |
policy.device | 运行设备 | cuda / cpu |
policy.use_amp | 是否开启混合精度训练 | true |
policy.n_obs_steps | 观测步数 | 1 |
policy.chunk_size | 动作块长度 | 50 |
policy.n_action_steps | 每次推理执行的动作步数 | 50 |
policy.vision_backbone | 视觉编码器架构 | resnet18 |
policy.pretrained_backbone_weights | 主干网络预训练权重 | ResNet18_Weights.IMAGENET1K_V1 |
policy.dim_model | Transformer 模型维度 | 256 |
policy.n_heads | 注意力头数 | 4 |
policy.dim_feedforward | 前馈网络维度 | 1024 |
policy.n_encoder_layers | 编码器层数 | 4 |
2. Diffusion Policy (DP)
以下是使用 Diffusion Policy 策略、附带完整超参数的训练示例:
/isaac-sim/python.sh src/lerobot/scripts/lerobot_train.py \
--dataset.repo_id=your_org/your_dataset \
--dataset.root=datasets/Part_Sorting \
--dataset.video_backend=pyav \
--output_dir=challenge2026_baseline/Part_Sorting/diffusion \
--policy.repo_id=none \
--policy.type=diffusion \
--policy.n_obs_steps=2 \
--policy.horizon=16 \
--policy.n_action_steps=8 \
--policy.vision_backbone=resnet18 \
--policy.pretrained_backbone_weights=null \
--policy.resize_shape=null \
--policy.crop_ratio=1.0 \
--policy.crop_shape=null \
--policy.crop_is_random=true \
--policy.use_group_norm=true \
--policy.spatial_softmax_num_keypoints=32 \
--policy.use_separate_rgb_encoder_per_camera=false \
--policy.down_dims='[512,1024,2048]' \
--policy.kernel_size=5 \
--policy.n_groups=8 \
--policy.diffusion_step_embed_dim=128 \
--policy.use_film_scale_modulation=true \
--policy.noise_scheduler_type=DDPM \
--policy.num_train_timesteps=100 \
--policy.beta_schedule=squaredcos_cap_v2 \
--policy.beta_start=0.0001 \
--policy.beta_end=0.02 \
--policy.prediction_type=epsilon \
--policy.clip_sample=true \
--policy.clip_sample_range=1.0 \
--policy.num_inference_steps=null \
--policy.compile_model=false \
--policy.compile_mode=reduce-overhead \
--policy.do_mask_loss_for_padding=false \
--policy.optimizer_lr=1e-4 \
--policy.optimizer_betas='[0.95,0.999]' \
--policy.optimizer_eps=1e-8 \
--policy.optimizer_weight_decay=1e-6 \
--policy.scheduler_name=cosine \
--policy.scheduler_warmup_steps=500 \
--job_name=part_sorting_diffusion \
--resume=false \
--seed=1000 \
--num_workers=8 \
--batch_size=32 \
--steps=100000 \
--eval_freq=0 \
--log_freq=200 \
--save_checkpoint=true \
--save_freq=5000
请将
your_org/your_dataset替换为您自己的数据集 repo ID,将challenge2026_baseline/Part_Sorting/diffusion替换为您的保存文件地址。
Diffusion Policy 策略参数 - 输入输出结构
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.type | 策略算法类型 | diffusion |
policy.n_obs_steps | 观测步数 | 2 |
policy.horizon | 动作预测 horizon | 16 |
policy.n_action_steps | 每次推理执行的动作步数 | 8 |
Diffusion Policy 策略参数 - 视觉主干网络
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.vision_backbone | 视觉编码器架构 | resnet18 |
policy.pretrained_backbone_weights | 主干网络预训练权重 | null |
policy.resize_shape | 图像预处理 resize 尺寸 (H, W) | null |
policy.crop_ratio | crop 尺寸比例 (0, 1] | 1.0 |
policy.crop_shape | crop 尺寸 (H, W) | null |
policy.crop_is_random | 是否随机 crop(训练时随机) | true |
policy.use_group_norm | 是否使用 GroupNorm 替代 BN | true |
policy.spatial_softmax_num_keypoints | SpatialSoftmax 关键点数量 | 32 |
policy.use_separate_rgb_encoder_per_camera | 是否为每个相机使用独立编码器 | false |
Diffusion Policy 策略参数 - UNet 架构
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.down_dims | UNet 下采样维度 | [512,1024,2048] |
policy.kernel_size | 卷积核大小 | 5 |
policy.n_groups | GroupNorm 分组数 | 8 |
policy.diffusion_step_embed_dim | diffusion 步数嵌入维度 | 128 |
policy.use_film_scale_modulation | 是否使用 FiLM scale 调制 | true |
Diffusion Policy 策略参数 - 噪声调度器
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.noise_scheduler_type | 噪声调度器类型 | DDPM / DDIM |
policy.num_train_timesteps | 训练时 diffusion 步数 | 100 |
policy.beta_schedule | beta 调度 | squaredcos_cap_v2 |
policy.beta_start | beta 起始值 | 0.0001 |
policy.beta_end | beta 结束值 | 0.02 |
policy.prediction_type | 预测类型 | epsilon / sample |
policy.clip_sample | 是否裁剪样本 | true |
policy.clip_sample_range | 裁剪范围 | 1.0 |
policy.num_inference_steps | 推理步数 | null(等同训练步数) |
Diffusion Policy 策略参数 - 优化器与调度器
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.optimizer_lr | 学习率 | 1e-4 |
policy.optimizer_betas | Adam betas | [0.95,0.999] |
policy.optimizer_eps | Adam eps | 1e-8 |
policy.optimizer_weight_decay | 权重衰减 | 1e-6 |
policy.scheduler_name | 学习率调度器 | cosine |
policy.scheduler_warmup_steps | warmup 步数 | 500 |
Diffusion Policy 策略参数 - 其他
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.compile_model | 是否编译模型 | false |
policy.compile_mode | 编译模式 | reduce-overhead |
policy.do_mask_loss_for_padding | 是否 mask padding 损失 | false |
3. π₀ (PI0)
下载 预训练权重
# 下载预训练权重
hf download \
lerobot/pi0_base \
--local-dir pretrained/pi0_base
hf download \
lerobot/pi05_base \
--local-dir pretrained/pi05_base
hf download google/paligemma-3b-pt-224 \
--local-dir pretrained/paligemma-3b-pt-224
在 /workspace/GlobalHumanoidRobotChallenge_2026_Baseline/src/lerobot/processor/tokenizer_processor.py 中搜索,将代码部分改为:
if self.tokenizer is not None:
# Use provided tokenizer object directly
self.input_tokenizer = self.tokenizer
elif self.tokenizer_name is not None:
if AutoTokenizer is None:
raise ImportError("AutoTokenizer is not available")
# 如果 tokenizer_name 包含 paligemma,说明是 pi0 模型,强制走本地离线路径
if "paligemma" in self.tokenizer_name.lower():
self.input_tokenizer = AutoTokenizer.from_pretrained(
"/root/.cache/huggingface/hub/models--google--paligemma-3b-pt-224/snapshots/35e4f46485b4d07967e7e9935bc3786aad50687c",
local_files_only=True
)
else:
# 否则(如 act\smolvla),正常使用传进来的 tokenizer_name 路径进行加载
self.input_tokenizer = AutoTokenizer.from_pretrained(self.tokenizer_name)
else:
raise ValueError(
"Either 'tokenizer' or 'tokenizer_name' must be provided. "
"Pass a tokenizer object directly or a tokenizer name to auto-load."
)
以下是使用 π₀ (PI0) 策略、附带完整超参数的训练示例:
# 简洁训练命令
/isaac-sim/python.sh src/lerobot/scripts/lerobot_train.py \
--policy.path=lerobot/pi0_base \
--dataset.repo_id=your_org/your_dataset \
--batch_size=64 \
--steps=20000 \
--output_dir=challenge2026_baseline/Part_Sorting/pi0 \
--job_name=part_sorting_pi0 \
--policy.device=cuda \
--wandb.enable=true
# 详细训练命令
/isaac-sim/python.sh src/lerobot/scripts/lerobot_train.py \
--dataset.repo_id=your_org/your_dataset \
--dataset.root=datasets/Part_Sorting \
--policy.type=pi0 \
--policy.paligemma_variant=gemma_2b \
--policy.action_expert_variant=gemma_300m \
--policy.dtype=float32 \
--policy.n_obs_steps=1 \
--policy.chunk_size=50 \
--policy.n_action_steps=50 \
--policy.max_state_dim=32 \
--policy.max_action_dim=32 \
--policy.num_inference_steps=10 \
--policy.time_sampling_beta_alpha=1.5 \
--policy.time_sampling_beta_beta=1.0 \
--policy.time_sampling_scale=0.999 \
--policy.time_sampling_offset=0.001 \
--policy.min_period=0.004 \
--policy.max_period=4.0 \
--policy.image_resolution='[224,224]' \
--policy.empty_cameras=0 \
--policy.gradient_checkpointing=false \
--policy.compile_model=false \
--policy.compile_mode=max-autotune \
--policy.freeze_vision_encoder=false \
--policy.train_expert_only=false \
--policy.optimizer_lr=2.5e-5 \
--policy.optimizer_betas='[0.9,0.95]' \
--policy.optimizer_eps=1e-8 \
--policy.optimizer_weight_decay=0.01 \
--policy.optimizer_grad_clip_norm=1.0 \
--policy.scheduler_warmup_steps=1000 \
--policy.scheduler_decay_steps=30000 \
--policy.scheduler_decay_lr=2.5e-6 \
--policy.tokenizer_max_length=48 \
--output_dir=challenge2026_baseline/Part_Sorting/pi0 \
--job_name=part_sorting_pi0 \
--resume=false \
--seed=1000 \
--num_workers=8 \
--batch_size=8 \
--steps=100000 \
--eval_freq=0 \
--log_freq=200 \
--save_checkpoint=true \
--save_freq=5000 \
--wandb.entity=your_wandb_entity
请将
your_org/your_dataset替换为您自己的数据集 repo ID,将challenge2026_baseline/Part_Sorting/pi0替换为您的保存文件地址,将your_wandb_entity替换为您的 WandB 用户名或团队名。若不使用 WandB,可删除--wandb.entity参数。
π₀ 策略参数 - 模型架构
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.type | 策略算法类型 | pi0 |
policy.paligemma_variant | PaliGemma 模型变体 | gemma_2b |
policy.action_expert_variant | Action Expert 变体 | gemma_300m |
policy.dtype | 数据类型 | float32 |
π₀ 策略参数 - 输入输出结构
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.n_obs_steps | 观测步数 | 1 |
policy.chunk_size | 动作块大小 | 50 |
policy.n_action_steps | 执行动作步数 | 50 |
policy.max_state_dim | 状态维度上限(填充至) | 32 |
policy.max_action_dim | 动作维度上限(填充至) | 32 |
π₀ 策略参数 - Flow Matching
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.num_inference_steps | 推理去噪步数 | 10 |
policy.time_sampling_beta_alpha | 时间采样 beta α | 1.5 |
policy.time_sampling_beta_beta | 时间采样 beta β | 1.0 |
policy.time_sampling_scale | 时间采样 scale | 0.999 |
policy.time_sampling_offset | 时间采样 offset | 0.001 |
policy.min_period | 最小周期 | 0.004 |
policy.max_period | 最大周期 | 4.0 |
π₀ 策略参数 - 图像与相机
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.image_resolution | 图像分辨率 (H, W) | [224,224] |
policy.empty_cameras | 空相机数量(补充空相机) | 0 |
π₀ 策略参数 - 训练设置
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.gradient_checkpointing | 是否启用梯度检查点 | false |
policy.compile_model | 是否编译模型 | false |
policy.compile_mode | 编译模式 | max-autotune |
π₀ 策略参数 - 微调设置
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.freeze_vision_encoder | 是否冻结视觉编码器 | false |
policy.train_expert_only | 是否仅训练 Action Expert | false |
π₀ 策略参数 - 优化器
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.optimizer_lr | 学习率 | 2.5e-5 |
policy.optimizer_betas | AdamW betas | [0.9,0.95] |
policy.optimizer_eps | AdamW eps | 1e-8 |
policy.optimizer_weight_decay | 权重衰减 | 0.01 |
policy.optimizer_grad_clip_norm | 梯度裁剪范数 | 1.0 |
π₀ 策略参数 - 学习率调度器
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.scheduler_warmup_steps | warmup 步数 | 1000 |
policy.scheduler_decay_steps | decay 步数 | 30000 |
policy.scheduler_decay_lr | decay 学习率 | 2.5e-6 |
π₀ 策略参数 - Tokenizer
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.tokenizer_max_length | tokenizer 最大长度 | 48 |
4. π₀.₅ (PI05)
以下是使用 π₀.₅ (PI05) 策略、附带完整超参数的训练示例。π₀.₅ 是 π₀ 的增强版本,支持开放世界泛化,主要差异包括使用 QUANTILES 归一化、更长的 tokenizer 长度以及 AdaRMS conditioning。
# 简洁训练命令
/isaac-sim/python.sh src/lerobot/scripts/lerobot_train.py \
--dataset.repo_id=your_org/your_dataset \
--policy.type=pi05 \
--output_dir=challenge2026_baseline/Part_Sorting/pi05 \
--job_name=part_sorting_pi05 \
--policy.repo_id=your_repo_id \
--policy.pretrained_path=lerobot/pi05_base \
--policy.compile_model=true \
--policy.gradient_checkpointing=true \
--wandb.enable=true \
--policy.dtype=bfloat16 \
--policy.freeze_vision_encoder=false \
--policy.train_expert_only=false \
--steps=3000 \
--policy.device=cuda \
--batch_size=32
# 详细训练命令
/isaac-sim/python.sh src/lerobot/scripts/lerobot_train.py \
--dataset.repo_id=your_org/your_dataset \
--dataset.root=datasets/Part_Sorting/ \
--policy.type=pi05 \
--policy.paligemma_variant=gemma_2b \
--policy.action_expert_variant=gemma_300m \
--policy.dtype=float32 \
--policy.n_obs_steps=1 \
--policy.chunk_size=50 \
--policy.n_action_steps=50 \
--policy.max_state_dim=32 \
--policy.max_action_dim=32 \
--policy.num_inference_steps=10 \
--policy.time_sampling_beta_alpha=1.5 \
--policy.time_sampling_beta_beta=1.0 \
--policy.time_sampling_scale=0.999 \
--policy.time_sampling_offset=0.001 \
--policy.min_period=0.004 \
--policy.max_period=4.0 \
--policy.image_resolution='[224,224]' \
--policy.empty_cameras=0 \
--policy.gradient_checkpointing=false \
--policy.compile_model=false \
--policy.compile_mode=max-autotune \
--policy.freeze_vision_encoder=false \
--policy.train_expert_only=false \
--policy.optimizer_lr=2.5e-5 \
--policy.optimizer_betas='[0.9,0.95]' \
--policy.optimizer_eps=1e-8 \
--policy.optimizer_weight_decay=0.01 \
--policy.optimizer_grad_clip_norm=1.0 \
--policy.scheduler_warmup_steps=1000 \
--policy.scheduler_decay_steps=30000 \
--policy.scheduler_decay_lr=2.5e-6 \
--policy.tokenizer_max_length=200 \
--output_dir=challenge2026_baseline/Part_Sorting/pi05 \
--job_name=part_sorting_pi05 \
--resume=false \
--seed=1000 \
--num_workers=8 \
--batch_size=8 \
--steps=100000 \
--eval_freq=0 \
--log_freq=200 \
--save_checkpoint=true \
--save_freq=5000 \
--wandb.entity=your_wandb_entity
请将
your_org/your_dataset替换为您自己的数据集 repo ID,将challenge2026_baseline/Part_Sorting/pi05替换为您的保存文件地址,将your_wandb_entity替换为您的 WandB 用户名或团队名。若不使用 WandB,可删除--wandb.entity参数。
π₀.₅ 策略参数 - 模型架构
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.type | 策略算法类型 | pi05 |
policy.paligemma_variant | PaliGemma 模型变体 | gemma_2b |
policy.action_expert_variant | Action Expert 变体 | gemma_300m |
policy.dtype | 数据类型 | float32 |
π₀.₅ 策略参数 - 输入输出结构
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.n_obs_steps | 观测步数 | 1 |
policy.chunk_size | 动作块大小 | 50 |
policy.n_action_steps | 执行动作步数 | 50 |
policy.max_state_dim | 状态维度上限(填充至) | 32 |
policy.max_action_dim | 动作维度上限(填充至) | 32 |
π₀.₅ 策略参数 - Flow Matching
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.num_inference_steps | 推理去噪步数 | 10 |
policy.time_sampling_beta_alpha | 时间采样 beta α | 1.5 |
policy.time_sampling_beta_beta | 时间采样 beta β | 1.0 |
policy.time_sampling_scale | 时间采样 scale | 0.999 |
policy.time_sampling_offset | 时间采样 offset | 0.001 |
policy.min_period | 最小周期 | 0.004 |
policy.max_period | 最大周期 | 4.0 |
π₀.₅ 策略参数 - 图像与相机
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.image_resolution | 图像分辨率 (H, W) | [224,224] |
policy.empty_cameras | 空相机数量(补充空相机) | 0 |
π₀.₅ 策略参数 - 训练设置
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.gradient_checkpointing | 是否启用梯度检查点 | false |
policy.compile_model | 是否编译模型 | false |
policy.compile_mode | 编译模式 | max-autotune |
π₀.₅ 策略参数 - 微调设置
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.freeze_vision_encoder | 是否冻结视觉编码器 | false |
policy.train_expert_only | 是否仅训练 Action Expert | false |
π₀.₅ 策略参数 - 优化器
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.optimizer_lr | 学习率 | 2.5e-5 |
policy.optimizer_betas | AdamW betas | [0.9,0.95] |
policy.optimizer_eps | AdamW eps | 1e-8 |
policy.optimizer_weight_decay | 权重衰减 | 0.01 |
policy.optimizer_grad_clip_norm | 梯度裁剪范数 | 1.0 |
π₀.₅ 策略参数 - 学习率调度器
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.scheduler_warmup_steps | warmup 步数 | 1000 |
policy.scheduler_decay_steps | decay 步数 | 30000 |
policy.scheduler_decay_lr | decay 学习率 | 2.5e-6 |
π₀.₅ 策略参数 - Tokenizer
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.tokenizer_max_length | tokenizer 最大长度 | 200(π₀ 为 48) |
π₀ 与 π₀.₅ 主要差异说明
| 特性 | π₀ | π₀.₅ |
|---|---|---|
| 时间条件注入 | 通过 action_time_mlp_* 将时间与动作拼接 | 通过 time_mlp_* 使用 AdaRMS conditioning |
| AdaRMS | 不使用 | 在 Action Expert 中使用 |
| Tokenizer 长度 | 48 tokens | 200 tokens |
| 离散状态输入 | False(使用 state_proj 层) | True |
| 参数量 | 较高(包含状态嵌入层) | 较低(无状态嵌入层) |
| 状态归一化 | MEAN_STD | QUANTILES |
| 动作归一化 | MEAN_STD | QUANTILES |
5. SmolVLA
以下是使用 SmolVLA 策略进行微调的训练示例。SmolVLA 基于 SmolVLM2-500M-Video-Instruct 视觉语言模型构建,支持开放世界泛化。
# 简洁训练命令
/isaac-sim/python.sh src/lerobot/scripts/lerobot_train.py \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=your_org/your_dataset \
--batch_size=64 \
--steps=20000 \
--output_dir=challenge2026_baseline/Part_Sorting/smolvla \
--job_name=part_sorting_smolvla \
--policy.device=cuda \
--wandb.enable=true
# 详细训练命令
/isaac-sim/python.sh src/lerobot/scripts/lerobot_train.py \
--dataset.repo_id=your_org/your_dataset \
--dataset.root=datasets/Part_Sorting/ \
--policy.type=smolvla \
--policy.vlm_model_name=HuggingFaceTB/SmolVLM2-500M-Video-Instruct \
--policy.load_vlm_weights=true \
--policy.dtype=float32 \
--policy.n_obs_steps=1 \
--policy.chunk_size=50 \
--policy.n_action_steps=50 \
--policy.max_state_dim=32 \
--policy.max_action_dim=32 \
--policy.num_steps=10 \
--policy.tokenizer_max_length=48 \
--policy.image_resolution='[224,224]' \
--policy.empty_cameras=0 \
--policy.freeze_vision_encoder=true \
--policy.train_expert_only=true \
--policy.train_state_proj=true \
--policy.gradient_checkpointing=false \
--policy.compile_model=false \
--policy.compile_mode=max-autotune \
--policy.attention_mode=cross_attn \
--policy.num_vlm_layers=16 \
--policy.self_attn_every_n_layers=2 \
--policy.expert_width_multiplier=0.75 \
--policy.optimizer_lr=1e-4 \
--policy.optimizer_betas='[0.9,0.95]' \
--policy.optimizer_eps=1e-8 \
--policy.optimizer_weight_decay=1e-10 \
--policy.optimizer_grad_clip_norm=10.0 \
--policy.scheduler_warmup_steps=1000 \
--policy.scheduler_decay_steps=30000 \
--policy.scheduler_decay_lr=2.5e-6 \
--policy.min_period=0.004 \
--policy.max_period=4.0 \
--output_dir=challenge2026_baseline/Part_Sorting/smolvla \
--job_name=part_sorting_smolvla \
--resume=false \
--seed=1000 \
--num_workers=8 \
--batch_size=8 \
--steps=100000 \
--eval_freq=0 \
--log_freq=200 \
--save_checkpoint=true \
--save_freq=5000 \
--wandb.entity=your_wandb_entity
请将
your_org/your_dataset替换为您自己的数据集 repo ID,将challenge2026_baseline/Part_Sorting/smolvla替换为您的保存文件地址,将your_wandb_entity替换为您的 WandB 用户名或团队名。若不使用 WandB,可删除--wandb.entity参数。
SmolVLA 策略参数 - 模型架构
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.type | 策略算法类型 | smolvla |
policy.vlm_model_name | VLM 骨干模型 | HuggingFaceTB/SmolVLM2-500M-Video-Instruct |
policy.load_vlm_weights | 是否加载预训练 VLM 权重 | true |
policy.dtype | 数据类型 | float32 |
SmolVLA 策略参数 - 输入输出结构
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.n_obs_steps | 观测步数 | 1 |
policy.chunk_size | 动作块大小 | 50 |
policy.n_action_steps | 执行动作步数 | 50 |
policy.max_state_dim | 状态维度上限(填充至) | 32 |
policy.max_action_dim | 动作维度上限(填充至) | 32 |
SmolVLA 策略参数 - 解码与 Tokenizer
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.num_steps | 推理去噪步数 | 10 |
policy.tokenizer_max_length | Tokenizer 最大长度 | 48 |
policy.use_cache | 是否使用注意力缓存 | true |
SmolVLA 策略参数 - 图像与相机
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.image_resolution | 图像预处理分辨率 (H, W) | [224,224] |
policy.empty_cameras | 空相机数量(补充空相机) | 0 |
policy.add_image_special_tokens | 是否使用图像特殊 token | false |
SmolVLA 策略参数 - 微调设置
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.freeze_vision_encoder | 是否冻结视觉编码器 | true |
policy.train_expert_only | 是否仅训练 Action Expert | true |
policy.train_state_proj | 是否训练状态投影层 | true |
SmolVLA 策略参数 - Transformer 架构
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.attention_mode | 注意力模式 | cross_attn |
policy.num_vlm_layers | VLM 使用层数 | 16 |
policy.self_attn_every_n_layers | 每隔 N 层插入自注意力层 | 2 |
policy.expert_width_multiplier | Action Expert 隐藏层宽度比例 | 0.75 |
SmolVLA 策略参数 - 优化器
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.optimizer_lr | 学习率 | 1e-4 |
policy.optimizer_betas | AdamW betas | [0.9,0.95] |
policy.optimizer_eps | AdamW eps | 1e-8 |
policy.optimizer_weight_decay | 权重衰减 | 1e-10 |
policy.optimizer_grad_clip_norm | 梯度裁剪范数 | 10.0 |
SmolVLA 策略参数 - 学习率调度器
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.scheduler_warmup_steps | warmup 步数 | 1000 |
policy.scheduler_decay_steps | decay 步数 | 30000 |
policy.scheduler_decay_lr | decay 学习率 | 2.5e-6 |
SmolVLA 策略参数 - 训练设置
| 参数 | 说明 | 默认值 / 备注 |
|---|---|---|
policy.gradient_checkpointing | 是否启用梯度检查点 | false |
policy.compile_model | 是否编译模型 | false |
policy.compile_mode | 编译模式 | max-autotune |