Skip to main content

Model Training

1. ACT

The following is a training example for Task 1 using the ACT policy, including the complete set of hyperparameters:

# Concise Training Command
/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


# Detailed Training Command for Task 1
/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

Replace your_org/your_dataset with your own dataset repo ID, replace challenge2026_baseline/Part_Sorting/act with the path where you want to save the output, and replace your_wandb_entity with your WandB username or team name. If you do not use WandB, you can remove the --wandb.entity argument. Training ACT requires downloading resnet18-f37072fd.pth.

Dataset and Output Parameters

ParameterDescriptionDefault / Notes
dataset.repo_idDataset ID (Hugging Face or a local organization name)Required
dataset.rootLocal root path of the datasetRequired
output_dirDirectory for saving checkpoints and logsRequired
job_nameJob identifier (shown in logs / WandB)Optional
resumeWhether to resume training from the previous checkpointfalse
seedGlobal random seed1000

Training Loop Parameters

ParameterDescriptionDefault / Notes
stepsTotal number of training steps100000
batch_sizeNumber of samples per step8
num_workersNumber of DataLoader worker processes8
eval_freqEvaluation interval in steps (0 disables evaluation)0
log_freqLog printing interval in steps200
save_checkpointWhether to save checkpointstrue
save_freqCheckpoint saving interval in steps5000

ACT Policy Parameters

ParameterDescriptionDefault / Notes
policy.typePolicy algorithm typeact / pi0
policy.deviceExecution devicecuda / cpu
policy.use_ampWhether to enable mixed-precision trainingtrue
policy.n_obs_stepsNumber of observation steps1
policy.chunk_sizeAction chunk length50
policy.n_action_stepsNumber of action steps executed per inference call50
policy.vision_backboneVision encoder architectureresnet18
policy.pretrained_backbone_weightsPretrained backbone weightsResNet18_Weights.IMAGENET1K_V1
policy.dim_modelTransformer model dimension256
policy.n_headsNumber of attention heads4
policy.dim_feedforwardFeed-forward network dimension1024
policy.n_encoder_layersNumber of encoder layers4

2. Diffusion Policy (DP)

The following is a training example using Diffusion Policy and includes the complete set of hyperparameters:

/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

Replace your_org/your_dataset with your own dataset repo ID, replace challenge2026_baseline/Part_Sorting/diffusion with the path where you want to save the output.

Diffusion Policy Parameters - Input/Output Structure

ParameterDescriptionDefault / Notes
policy.typePolicy algorithm typediffusion
policy.n_obs_stepsNumber of observation steps2
policy.horizonAction prediction horizon16
policy.n_action_stepsNumber of action steps executed per inference call8

Diffusion Policy Parameters - Vision Backbone

ParameterDescriptionDefault / Notes
policy.vision_backboneVision encoder architectureresnet18
policy.pretrained_backbone_weightsPretrained backbone weightsnull
policy.resize_shapeImage preprocessing resize dimensions (H, W)null
policy.crop_ratioCrop size ratio (0, 1]1.0
policy.crop_shapeCrop dimensions (H, W)null
policy.crop_is_randomWhether to apply a random crop during trainingtrue
policy.use_group_normWhether to use GroupNorm instead of BatchNormtrue
policy.spatial_softmax_num_keypointsNumber of SpatialSoftmax keypoints32
policy.use_separate_rgb_encoder_per_cameraWhether to use a separate encoder for each camerafalse

Diffusion Policy Parameters - UNet Architecture

ParameterDescriptionDefault / Notes
policy.down_dimsUNet downsampling dimensions[512,1024,2048]
policy.kernel_sizeKernel size5
policy.n_groupsNumber of GroupNorm groups8
policy.diffusion_step_embed_dimDiffusion timestep embedding dimension128
policy.use_film_scale_modulationWhether to use FiLM scale modulationtrue

Diffusion Policy Parameters - Noise Scheduler

ParameterDescriptionDefault / Notes
policy.noise_scheduler_typeNoise scheduler typeDDPM / DDIM
policy.num_train_timestepsNumber of diffusion steps during training100
policy.beta_scheduleBeta schedulesquaredcos_cap_v2
policy.beta_startInitial beta value0.0001
policy.beta_endFinal beta value0.02
policy.prediction_typePrediction typeepsilon / sample
policy.clip_sampleWhether to clip samplestrue
policy.clip_sample_rangeClipping range1.0
policy.num_inference_stepsNumber of inference stepsnull (equivalent to the number of training steps)

Diffusion Policy Parameters - Optimizer and Scheduler

ParameterDescriptionDefault / Notes
policy.optimizer_lrLearning rate1e-4
policy.optimizer_betasAdam betas[0.95,0.999]
policy.optimizer_epsAdam eps1e-8
policy.optimizer_weight_decayWeight decay1e-6
policy.scheduler_nameLearning rate schedulercosine
policy.scheduler_warmup_stepsNumber of warmup steps500

Diffusion Policy Parameters - Other Settings

ParameterDescriptionDefault / Notes
policy.compile_modelWhether to compile the modelfalse
policy.compile_modeCompilation modereduce-overhead
policy.do_mask_loss_for_paddingWhether to mask the loss on padding elementsfalse

3. π₀ (PI0)

Download Pretrained Weights

# Download Pretrained Weights
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

In the following file: /workspace/GlobalHumanoidRobotChallenge_2026_Baseline/src/lerobot/processor/tokenizer_processor.py Locate the relevant section and replace the code with:

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")

# If tokenizer_name contains "paligemma", the model is PI0, so force loading from the local offline path
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:
# Otherwise (for example, ACT or SmolVLA), load normally from the provided tokenizer_name path
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."
)

The following is a training example using the π₀ (PI0) policy, including the complete set of hyperparameters:

# Concise Training Command
/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

# Detailed Training Command
/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

Replace your_org/your_dataset with your own dataset repo ID, replace challenge2026_baseline/Part_Sorting/pi0 with the path where you want to save the output, and replace your_wandb_entity with your WandB username or team name. If you do not use WandB, you can remove the --wandb.entity argument.

π₀ Policy Parameters - Model Architecture

ParameterDescriptionDefault / Notes
policy.typePolicy algorithm typepi0
policy.paligemma_variantPaliGemma model variantgemma_2b
policy.action_expert_variantAction Expert variantgemma_300m
policy.dtypeData typefloat32

π₀ Policy Parameters - Input/Output Structure

ParameterDescriptionDefault / Notes
policy.n_obs_stepsNumber of observation steps1
policy.chunk_sizeAction chunk size50
policy.n_action_stepsNumber of action steps to execute50
policy.max_state_dimMaximum state dimension (inputs are padded to this size)32
policy.max_action_dimMaximum action dimension (inputs are padded to this size)32

π₀ Policy Parameters - Flow Matching

ParameterDescriptionDefault / Notes
policy.num_inference_stepsNumber of denoising steps during inference10
policy.time_sampling_beta_alphaTime-sampling beta α1.5
policy.time_sampling_beta_betaTime-sampling beta β1.0
policy.time_sampling_scaleTime-sampling scale0.999
policy.time_sampling_offsetTime-sampling offset0.001
policy.min_periodMinimum period0.004
policy.max_periodMaximum period4.0

π₀ Policy Parameters - Images and Cameras

ParameterDescriptionDefault / Notes
policy.image_resolutionImage resolution (H, W)[224,224]
policy.empty_camerasNumber of empty cameras used for padding0

π₀ Policy Parameters - Training Settings

ParameterDescriptionDefault / Notes
policy.gradient_checkpointingWhether to enable gradient checkpointingfalse
policy.compile_modelWhether to compile the modelfalse
policy.compile_modeCompilation modemax-autotune

π₀ Policy Parameters - Fine-Tuning Settings

ParameterDescriptionDefault / Notes
policy.freeze_vision_encoderWhether to freeze the vision encoderfalse
policy.train_expert_onlyWhether to train only the Action Expertfalse

π₀ Policy Parameters - Optimizer

ParameterDescriptionDefault / Notes
policy.optimizer_lrLearning rate2.5e-5
policy.optimizer_betasAdamW betas[0.9,0.95]
policy.optimizer_epsAdamW eps1e-8
policy.optimizer_weight_decayWeight decay0.01
policy.optimizer_grad_clip_normGradient clipping norm1.0

π₀ Policy Parameters - Learning Rate Scheduler

ParameterDescriptionDefault / Notes
policy.scheduler_warmup_stepsNumber of warmup steps1000
policy.scheduler_decay_stepsNumber of decay steps30000
policy.scheduler_decay_lrFinal learning rate after decay2.5e-6

π₀ Policy Parameters - Tokenizer

ParameterDescriptionDefault / Notes
policy.tokenizer_max_lengthMaximum tokenizer length48

4. π₀.₅ (PI05)

The following is a training example using the π₀.₅ (PI05) policy, including the complete set of hyperparameters. π₀.₅ is an enhanced version of π₀ that supports open-world generalization. Its main differences include QUANTILES normalization, a longer tokenizer length, and AdaRMS conditioning.

# Concise Training Command
/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

# Detailed Training Command
/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

Replace your_org/your_dataset with your own dataset repo ID, replace challenge2026_baseline/Part_Sorting/pi05 with the path where you want to save the output, and replace your_wandb_entity with your WandB username or team name. If you do not use WandB, you can remove the --wandb.entity argument.

π₀.₅ Policy Parameters - Model Architecture

ParameterDescriptionDefault / Notes
policy.typePolicy algorithm typepi05
policy.paligemma_variantPaliGemma model variantgemma_2b
policy.action_expert_variantAction Expert variantgemma_300m
policy.dtypeData typefloat32

π₀.₅ Policy Parameters - Input/Output Structure

ParameterDescriptionDefault / Notes
policy.n_obs_stepsNumber of observation steps1
policy.chunk_sizeAction chunk size50
policy.n_action_stepsNumber of action steps to execute50
policy.max_state_dimMaximum state dimension (inputs are padded to this size)32
policy.max_action_dimMaximum action dimension (inputs are padded to this size)32

π₀.₅ Policy Parameters - Flow Matching

ParameterDescriptionDefault / Notes
policy.num_inference_stepsNumber of denoising steps during inference10
policy.time_sampling_beta_alphaTime-sampling beta α1.5
policy.time_sampling_beta_betaTime-sampling beta β1.0
policy.time_sampling_scaleTime-sampling scale0.999
policy.time_sampling_offsetTime-sampling offset0.001
policy.min_periodMinimum period0.004
policy.max_periodMaximum period4.0

π₀.₅ Policy Parameters - Images and Cameras

ParameterDescriptionDefault / Notes
policy.image_resolutionImage resolution (H, W)[224,224]
policy.empty_camerasNumber of empty cameras used for padding0

π₀.₅ Policy Parameters - Training Settings

ParameterDescriptionDefault / Notes
policy.gradient_checkpointingWhether to enable gradient checkpointingfalse
policy.compile_modelWhether to compile the modelfalse
policy.compile_modeCompilation modemax-autotune

π₀.₅ Policy Parameters - Fine-Tuning Settings

ParameterDescriptionDefault / Notes
policy.freeze_vision_encoderWhether to freeze the vision encoderfalse
policy.train_expert_onlyWhether to train only the Action Expertfalse

π₀.₅ Policy Parameters - Optimizer

ParameterDescriptionDefault / Notes
policy.optimizer_lrLearning rate2.5e-5
policy.optimizer_betasAdamW betas[0.9,0.95]
policy.optimizer_epsAdamW eps1e-8
policy.optimizer_weight_decayWeight decay0.01
policy.optimizer_grad_clip_normGradient clipping norm1.0

π₀.₅ Policy Parameters - Learning Rate Scheduler

ParameterDescriptionDefault / Notes
policy.scheduler_warmup_stepsNumber of warmup steps1000
policy.scheduler_decay_stepsNumber of decay steps30000
policy.scheduler_decay_lrFinal learning rate after decay2.5e-6

π₀.₅ Policy Parameters - Tokenizer

ParameterDescriptionDefault / Notes
policy.tokenizer_max_lengthMaximum tokenizer length200 (π₀ uses 48)

Key Differences Between π₀ and π₀.₅

Featureπ₀π₀.₅
Time conditioning injectionConcatenates time and actions through action_time_mlp_*Uses AdaRMS conditioning through time_mlp_*
AdaRMSNot usedUsed in the Action Expert
Tokenizer length48 tokens200 tokens
Discrete state inputFalse (uses the state_proj layer)True
Parameter countHigher (includes a state embedding layer)Lower (no state embedding layer)
State normalizationMEAN_STDQUANTILES
Action normalizationMEAN_STDQUANTILES

5. SmolVLA

The following is a fine-tuning example using the SmolVLA policy. SmolVLA is built on the SmolVLM2-500M-Video-Instruct vision-language model and supports open-world generalization.

# Concise Training Command
/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

# Detailed Training Command
/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

Replace your_org/your_dataset with your own dataset repo ID, replace challenge2026_baseline/Part_Sorting/smolvla with the path where you want to save the output, and replace your_wandb_entity with your WandB username or team name. If you do not use WandB, you can remove the --wandb.entity argument.

SmolVLA Policy Parameters - Model Architecture

ParameterDescriptionDefault / Notes
policy.typePolicy algorithm typesmolvla
policy.vlm_model_nameVLM backbone modelHuggingFaceTB/SmolVLM2-500M-Video-Instruct
policy.load_vlm_weightsWhether to load pretrained VLM weightstrue
policy.dtypeData typefloat32

SmolVLA Policy Parameters - Input/Output Structure

ParameterDescriptionDefault / Notes
policy.n_obs_stepsNumber of observation steps1
policy.chunk_sizeAction chunk size50
policy.n_action_stepsNumber of action steps to execute50
policy.max_state_dimMaximum state dimension (inputs are padded to this size)32
policy.max_action_dimMaximum action dimension (inputs are padded to this size)32

SmolVLA Policy Parameters - Decoding and Tokenizer

ParameterDescriptionDefault / Notes
policy.num_stepsNumber of denoising steps during inference10
policy.tokenizer_max_lengthMaximum tokenizer length48
policy.use_cacheWhether to use the attention cachetrue

SmolVLA Policy Parameters - Images and Cameras

ParameterDescriptionDefault / Notes
policy.image_resolutionImage preprocessing resolution (H, W)[224,224]
policy.empty_camerasNumber of empty cameras used for padding0
policy.add_image_special_tokensWhether to use special image tokensfalse

SmolVLA Policy Parameters - Fine-Tuning Settings

ParameterDescriptionDefault / Notes
policy.freeze_vision_encoderWhether to freeze the vision encodertrue
policy.train_expert_onlyWhether to train only the Action Experttrue
policy.train_state_projWhether to train the state projection layertrue

SmolVLA Policy Parameters - Transformer Architecture

ParameterDescriptionDefault / Notes
policy.attention_modeAttention modecross_attn
policy.num_vlm_layersNumber of VLM layers used16
policy.self_attn_every_n_layersInsert a self-attention layer every N layers2
policy.expert_width_multiplierAction Expert hidden-layer width multiplier0.75

SmolVLA Policy Parameters - Optimizer

ParameterDescriptionDefault / Notes
policy.optimizer_lrLearning rate1e-4
policy.optimizer_betasAdamW betas[0.9,0.95]
policy.optimizer_epsAdamW eps1e-8
policy.optimizer_weight_decayWeight decay1e-10
policy.optimizer_grad_clip_normGradient clipping norm10.0

SmolVLA Policy Parameters - Learning Rate Scheduler

ParameterDescriptionDefault / Notes
policy.scheduler_warmup_stepsNumber of warmup steps1000
policy.scheduler_decay_stepsNumber of decay steps30000
policy.scheduler_decay_lrFinal learning rate after decay2.5e-6

SmolVLA Policy Parameters - Training Settings

ParameterDescriptionDefault / Notes
policy.gradient_checkpointingWhether to enable gradient checkpointingfalse
policy.compile_modelWhether to compile the modelfalse
policy.compile_modeCompilation modemax-autotune