vla-sft-code-dreamzero / scripts /train /robotwin_training.sh
poet70's picture
Upload folder using huggingface_hub
ac29381 verified
Raw
History Blame Contribute Delete
3.45 kB
#!/bin/bash
# DreamZero RoboTwin Full Fine-Tuning Script (Wan2.2-TI2V-5B, custom RobotWinDataset)
export HYDRA_FULL_ERROR=1
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
# Activate DreamZero virtual environment
VENV_DIR="/root/autodl-tmp/venvs/dreamzero"
if [ -f "$VENV_DIR/bin/activate" ]; then
source "$VENV_DIR/bin/activate"
fi
# ============ CONFIGURATION ============
ROBOTWIN_DATA_DIR=${ROBOTWIN_DATA_DIR:-"/root/autodl-tmp/data/robotwin_gear"}
OUTPUT_DIR=${OUTPUT_DIR:-"$REPO_ROOT/checkpoints/dreamzero_robotwin_full"}
if [ -z "${NUM_GPUS:-}" ]; then
NUM_GPUS=$(nvidia-smi -L 2>/dev/null | wc -l)
fi
PER_DEVICE_BS=${PER_DEVICE_BS:-1}
CKPT_DIR="${CHECKPOINT_DIR:-/root/autodl-tmp/checkpoints}"
WAN22_DIR="$CKPT_DIR/Wan2.2-TI2V-5B"
TOKENIZER_DIR="$CKPT_DIR/umt5-xxl"
CLIP_DIR="$CKPT_DIR/DreamZero-DROID"
# ========================================
# Auto-download weights if missing
source /etc/network_turbo 2>/dev/null
if [ ! -d "$WAN22_DIR" ] || [ -z "$(ls -A "$WAN22_DIR" 2>/dev/null)" ]; then
echo "Downloading Wan2.2-TI2V-5B..."
huggingface-cli download Wan-AI/Wan2.2-TI2V-5B --local-dir "$WAN22_DIR"
fi
if [ ! -d "$TOKENIZER_DIR" ] || [ -z "$(ls -A "$TOKENIZER_DIR" 2>/dev/null)" ]; then
echo "Downloading umt5-xxl..."
huggingface-cli download google/umt5-xxl --local-dir "$TOKENIZER_DIR"
fi
if [ ! -d "$ROBOTWIN_DATA_DIR" ]; then
echo "ERROR: RoboTwin data not found at $ROBOTWIN_DATA_DIR"; exit 1
fi
cd "$REPO_ROOT"
# ZeRO config
if [ "$NUM_GPUS" -le 2 ]; then
DEEPSPEED_CFG=${DEEPSPEED_CFG:-"groot/vla/configs/deepspeed/zero2_offload.json"}
else
DEEPSPEED_CFG=${DEEPSPEED_CFG:-"groot/vla/configs/deepspeed/zero2.json"}
fi
torchrun --standalone --nproc_per_node "$NUM_GPUS" \
groot/vla/experiment/experiment.py \
report_to="${REPORT_TO:-none}" \
data=dreamzero/robotwin \
wandb_project="${WANDB_PROJECT:-dreamzero-robotwin-sft}" \
train_architecture=full \
model=dreamzero/vla \
model/dreamzero/action_head=wan_flow_matching_action_tf_wan22 \
model/dreamzero/transform=dreamzero_cotrain \
num_frames=12 action_horizon=12 state_horizon=1 num_views=1 \
num_frame_per_block=2 num_action_per_block=12 \
num_state_per_block=1 max_chunk_size=4 frame_seqlen=50 \
image_resolution_width=320 image_resolution_height=160 \
max_state_dim=44 max_action_dim=32 \
seed=42 \
training_args.learning_rate="${LR:-1e-5}" \
training_args.deepspeed="$DEEPSPEED_CFG" \
save_steps="${SAVE_STEPS:-2000}" \
training_args.warmup_ratio=0.05 \
output_dir="$OUTPUT_DIR" \
per_device_train_batch_size="$PER_DEVICE_BS" \
max_steps="${MAX_STEPS:-200000}" \
weight_decay=1e-5 save_total_limit=2 \
upload_checkpoints=false bf16=true tf32=true eval_bf16=true \
dataloader_pin_memory=true dataloader_num_workers=4 \
save_lora_only=false save_strategy=steps \
robotwin_dataset_dir="$ROBOTWIN_DATA_DIR" \
dit_version="$WAN22_DIR" \
text_encoder_pretrained_path="$WAN22_DIR/models_t5_umt5-xxl-enc-bf16.pth" \
image_encoder_pretrained_path="$CLIP_DIR/models_clip-open-clip-xlm-roberta-large-vit-huge-14.pth" \
vae_pretrained_path="$WAN22_DIR/Wan2.2_VAE.pth" \
tokenizer_path="$TOKENIZER_DIR"
echo "============================================"
echo " RoboTwin training finished! Output: $OUTPUT_DIR"
echo "============================================"