| #!/bin/bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| set -euo pipefail |
|
|
| |
| BENCHMARK=${1:-libero} |
| shift || true |
|
|
| |
| export NCCL_DEBUG=WARN |
| export NCCL_IB_DISABLE=0 |
| export NCCL_IB_TIMEOUT=22 |
| export NCCL_IB_RETRY_CNT=4 |
| export NCCL_SOCKET_IFNAME=^docker0,lo |
| export HF_ENDPOINT=https://hf-mirror.com |
|
|
| NODES=${SLURM_NNODES:-4} |
| GPUS_PER_NODE=${SLURM_GPUS_PER_NODE:-8} |
| TOTAL_GPUS=$((NODES * GPUS_PER_NODE)) |
|
|
| |
| if [ -n "${SLURM_NODELIST:-}" ]; then |
| MASTER_ADDR=$(scontrol show hostname "$SLURM_NODELIST" | head -n1) |
| else |
| MASTER_ADDR="localhost" |
| fi |
| MASTER_PORT=${MASTER_PORT:-29500} |
|
|
| echo "============================================" |
| echo " DreamZero SLURM Training" |
| echo "============================================" |
| echo " Nodes: $NODES" |
| echo " GPUs/node: $GPUS_PER_NODE" |
| echo " Total GPUs: $TOTAL_GPUS" |
| echo " Master: $MASTER_ADDR:$MASTER_PORT" |
| echo " Benchmark: $BENCHMARK" |
| echo "============================================" |
|
|
| |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" |
| OUTPUT_DIR="${OUTPUT_DIR:-$REPO_ROOT/output/${BENCHMARK}_full_${NODES}nodes}" |
|
|
| |
| torchrun \ |
| --nnodes="$NODES" \ |
| --nproc_per_node="$GPUS_PER_NODE" \ |
| --rdzv_id="dz_sft_${BENCHMARK}" \ |
| --rdzv_backend=c10d \ |
| --rdzv_endpoint="$MASTER_ADDR:$MASTER_PORT" \ |
| "$REPO_ROOT/groot/vla/experiment/experiment.py" \ |
| report_to=wandb \ |
| data="dreamzero/${BENCHMARK}" \ |
| wandb_project=dreamzero-sft \ |
| train_architecture=full \ |
| model=dreamzero/vla \ |
| model/dreamzero/action_head=wan_flow_matching_action_tf_wan22 \ |
| model/dreamzero/transform=dreamzero_cotrain \ |
| per_device_train_batch_size=1 \ |
| global_batch_size=$((TOTAL_GPUS * 4)) \ |
| save_steps=2000 \ |
| save_total_limit=4 \ |
| training_args.learning_rate=1e-5 \ |
| training_args.warmup_ratio=0.05 \ |
| training_args.deepspeed="groot/vla/configs/deepspeed/zero3_multinode.json" \ |
| training_args.bf16=true \ |
| training_args.tf32=true \ |
| training_args.eval_bf16=true \ |
| output_dir="$OUTPUT_DIR" \ |
| model.gradient_checkpointing=true \ |
| dataloader_num_workers=8 \ |
| dataloader_pin_memory=true \ |
| optim=adamw_bnb_8bit \ |
| bf16=true tf32=true eval_bf16=true \ |
| "$@" |
|
|