Download scripts/train/quick_start.sh from poet70/vla-sft-code-dreamzero: direct link, hf CLI and curl.
- Browser
- Download file 4.59 kB
-
https://huggingface.co/poet70/vla-sft-code-dreamzero/resolve/refs%2Fpr%2F1/scripts/train/quick_start.sh
- Command line
-
hf download hf://poet70/vla-sft-code-dreamzero@refs/pr/1/scripts/train/quick_start.sh
-
curl -L -o quick_start.sh https://huggingface.co/poet70/vla-sft-code-dreamzero/resolve/refs%2Fpr%2F1/scripts/train/quick_start.sh
4.59 kB
| # DreamZero 单节点快速启动脚本 (5 步验证) | |
| # | |
| # 用法: | |
| # bash scripts/train/quick_start.sh libero # 单卡验证 LIBERO | |
| # bash scripts/train/quick_start.sh manifeel 4 # 4 卡 ManiFeel | |
| # bash scripts/train/quick_start.sh robotwin 2 # 2 卡 RoboTwin | |
| # | |
| # 前置条件: 权重文件已下载到 checkpoints/ 目录 | |
| set -euo pipefail | |
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | |
| REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" | |
| BENCHMARK="${1:-libero}" | |
| NUM_GPUS="${2:-1}" | |
| OUTPUT_DIR="${OUTPUT_DIR:-$REPO_ROOT/output/quickstart_${BENCHMARK}}" | |
| PER_DEVICE_BS="${PER_DEVICE_BS:-1}" | |
| MAX_STEPS="${MAX_STEPS:-5}" | |
| echo "============================================" | |
| echo " DreamZero Quick Start" | |
| echo "============================================" | |
| echo " Benchmark: $BENCHMARK" | |
| echo " GPUs: $NUM_GPUS" | |
| echo " Max steps: $MAX_STEPS" | |
| echo " Output: $OUTPUT_DIR" | |
| echo "============================================" | |
| # ============ 验证权重文件 ============ | |
| CKPT_DIR="${CHECKPOINT_DIR:-$REPO_ROOT/checkpoints}" | |
| WAN22_DIR="$CKPT_DIR/Wan2.2-TI2V-5B" | |
| TOKENIZER_DIR="$CKPT_DIR/umt5-xxl" | |
| CLIP_DIR="$CKPT_DIR/clip-encoder" | |
| if [ ! -d "$WAN22_DIR" ]; then | |
| echo "ERROR: 未找到 Wan2.2 权重: $WAN22_DIR" | |
| echo "请先运行: bash scripts/data/download_checkpoints.sh" | |
| exit 1 | |
| fi | |
| if [ ! -d "$TOKENIZER_DIR" ]; then | |
| echo "ERROR: 未找到 tokenizer: $TOKENIZER_DIR" | |
| echo "请先运行: bash scripts/data/download_checkpoints.sh" | |
| exit 1 | |
| fi | |
| if [ ! -f "$CLIP_DIR/models_clip_open-clip-xlm-roberta-large-vit-huge-14.pth" ]; then | |
| echo "ERROR: 未找到 CLIP encoder: $CLIP_DIR" | |
| echo "请先运行: bash scripts/data/download_checkpoints.sh" | |
| exit 1 | |
| fi | |
| # ============ 数据集选择 ============ | |
| case "$BENCHMARK" in | |
| libero) | |
| DATA_CFG="dreamzero/libero" | |
| NUM_FRAMES=12 | |
| ACTION_HORIZON=12 | |
| NUM_VIEWS=1 | |
| MAX_STATE_DIM=44 | |
| MAX_ACTION_DIM=32 | |
| NUM_FRAME_PER_BLOCK=2 | |
| NUM_ACTION_PER_BLOCK=12 | |
| LR=1e-5 | |
| ;; | |
| manifeel) | |
| DATA_CFG="dreamzero/manifeel" | |
| NUM_FRAMES=12 | |
| ACTION_HORIZON=12 | |
| NUM_VIEWS=3 | |
| MAX_STATE_DIM=44 | |
| MAX_ACTION_DIM=32 | |
| NUM_FRAME_PER_BLOCK=2 | |
| NUM_ACTION_PER_BLOCK=12 | |
| LR=1e-5 | |
| ;; | |
| robotwin) | |
| DATA_CFG="dreamzero/robotwin" | |
| NUM_FRAMES=12 | |
| ACTION_HORIZON=12 | |
| NUM_VIEWS=1 | |
| MAX_STATE_DIM=44 | |
| MAX_ACTION_DIM=32 | |
| NUM_FRAME_PER_BLOCK=2 | |
| NUM_ACTION_PER_BLOCK=12 | |
| LR=1e-5 | |
| ;; | |
| *) | |
| echo "ERROR: 未知 benchmark: $BENCHMARK (可选: libero, manifeel, robotwin)" | |
| exit 1 | |
| ;; | |
| esac | |
| # ============ 自动选择 DeepSpeed 配置 ============ | |
| if [ "$NUM_GPUS" -le 2 ]; then | |
| DEEPSPEED_CFG="groot/vla/configs/deepspeed/zero2.json" | |
| elif [ "$NUM_GPUS" -le 8 ]; then | |
| DEEPSPEED_CFG="groot/vla/configs/deepspeed/zero2_offload.json" | |
| else | |
| DEEPSPEED_CFG="groot/vla/configs/deepspeed/zero3_multinode.json" | |
| fi | |
| cd "$REPO_ROOT" | |
| torchrun --standalone --nproc_per_node "$NUM_GPUS" \ | |
| groot/vla/experiment/experiment.py \ | |
| report_to=none \ | |
| data="$DATA_CFG" \ | |
| train_architecture=full \ | |
| model=dreamzero/vla \ | |
| model/dreamzero/action_head=wan_flow_matching_action_tf_wan22 \ | |
| model/dreamzero/transform=dreamzero_cotrain \ | |
| num_frames="$NUM_FRAMES" \ | |
| action_horizon="$ACTION_HORIZON" \ | |
| num_views="$NUM_VIEWS" \ | |
| max_state_dim="$MAX_STATE_DIM" \ | |
| max_action_dim="$MAX_ACTION_DIM" \ | |
| num_frame_per_block="$NUM_FRAME_PER_BLOCK" \ | |
| num_action_per_block="$NUM_ACTION_PER_BLOCK" \ | |
| num_state_per_block=1 \ | |
| max_chunk_size=4 \ | |
| frame_seqlen=50 \ | |
| image_resolution_width=320 \ | |
| image_resolution_height=160 \ | |
| per_device_train_batch_size="$PER_DEVICE_BS" \ | |
| max_steps="$MAX_STEPS" \ | |
| save_strategy=no \ | |
| optim=adamw_bnb_8bit \ | |
| training_args.learning_rate="$LR" \ | |
| training_args.deepspeed="$DEEPSPEED_CFG" \ | |
| training_args.bf16=true \ | |
| training_args.tf32=true \ | |
| training_args.eval_bf16=true \ | |
| output_dir="$OUTPUT_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 "============================================" | |
| echo " Quick start 完成! (benchmark: $BENCHMARK)" | |
| echo "============================================" | |