#!/bin/bash # smolvla training set -euo pipefail # repo/env cd ~/lerobot || exit 1 # conda activate lerobot export LC_ALL=C rm -f core-* # storage / caches (use RAID to avoid filling $HOME) RAID=/raid/jade export TRANSFORMERS_CACHE=$RAID/.cache/huggingface/transformers export HF_HOME=$RAID/.cache/huggingface export HF_DATASETS_CACHE=$RAID/.cache/huggingface/datasets export HF_LEROBOT_HOME=$RAID/.cache/huggingface/lerobot export WANDB_CACHE_DIR=$RAID/.cache/wandb export TMPDIR=$RAID/.cache/tmp mkdir -p $TMPDIR export WANDB_MODE=offline # export HF_DATASETS_OFFLINE=1 # export HF_HUB_OFFLINE=1 export TOKENIZERS_PARALLELISM=false export MUJOCO_GL=egl # will only use if accelerate is used PORT=29522 # =================== CONFIG =================== ENV=libero TASK=libero_object REPO_ID=physical-intelligence/libero ROOT=$RAID POLICY=smolvla VLM=HuggingFaceTB/SmolVLM2-500M-Instruct # Optim / scheduling LR=1e-4 DECAY_LR=2.5e-6 DECAY_STEPS=30000 USE_AMP=false TRAIN_EXPERT_ONLY=true N_ACTION_STEPS=1 SEED=1000 # Training loop OFFLINE_STEPS=100000 BATCH_SIZE=32 EVAL_FREQ=0 SAVE_FREQ=300000 EVAL_BATCH_SIZE=1 NUM_EPISODES=1 # GPU selection 0, 1, 2, 3 export CUDA_VISIBLE_DEVICES=0 # naming/output dir TRAIN_DIR=$RAID/logs/lerobot/lerobot_solo_${REPO_ID//\//_}_${POLICY}_lr${LR}bs${BATCH_SIZE}steps${OFFLINE_STEPS} echo "Training dir: $TRAIN_DIR" # train rm -rf "$TRAIN_DIR" python src/lerobot/scripts/train.py \ --policy.type=$POLICY \ --policy.vlm_model_name=$VLM \ --dataset.repo_id=$REPO_ID \ --env.type=$ENV \ --env.task=$TASK \ --output_dir=$TRAIN_DIR \ --batch_size=$BATCH_SIZE \ --steps=$OFFLINE_STEPS \ --eval_freq=$EVAL_FREQ \ --save_freq=$SAVE_FREQ \ --eval.batch_size=$EVAL_BATCH_SIZE \ --eval.n_episodes=$NUM_EPISODES \ --policy.use_amp=$USE_AMP \ --policy.optimizer_lr=$LR \ --policy.repo_id=None \ --policy.scheduler_decay_lr=$DECAY_LR \ --policy.scheduler_decay_steps=$DECAY_STEPS \ --policy.n_action_steps=$N_ACTION_STEPS \ --policy.train_expert_only=$TRAIN_EXPERT_ONLY \ --policy.vlm_model_name=$VLM \ --seed=$SEED \ --wandb.enable=false