#!/bin/bash # Atlas online training: detection + planning + lane + caption. # Default: visual_token_mode=online, live frozen StreamPETR + TopoMLP. # Data: 28k det + 24k plan + 28k lane + 169k caption = ~249k samples/epoch # WARNING: caption data is 6x larger than other tasks — consider downsampling. # # Usage: # bash scripts/train_with_caption_balanced.sh # RESUME_CKPT=work_dirs/atlas_with_caption/epoch-4/checkpoint.pt bash scripts/train_with_caption_balanced.sh # NUM_GPUS=8 bash scripts/train_with_caption_balanced.sh set -e PROJECT_ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$PROJECT_ROOT" NUM_GPUS=${NUM_GPUS:-4} PLANNING_TABLE3_MODE=${PLANNING_TABLE3_MODE:-atlas_high_level_ego} EXTRA_ARGS="" if [ -n "$RESUME_CKPT" ]; then EXTRA_ARGS="--resume $RESUME_CKPT" fi deepspeed --num_gpus "$NUM_GPUS" train_atlas.py \ --llm_model pretrained/vicuna-7b-v1.5 \ --data_json data/atlas_nuscenes_train.json,data/atlas_planning_train_uniad_command.json,data/openlane_subsetB_lane_train_4pt.json,data/atlas_caption_train.json \ --data_root /home/guoyuanbo/autodl-tmp/data/nuscenes \ --visual_token_mode online \ --planning_table3_mode "$PLANNING_TABLE3_MODE" \ --streampetr_config configs/streampetr_atlas_aligned.py \ --streampetr_ckpt pretrained/streampetr/streampetr_eva02_ep24.pth \ --topomlp_config configs/topomlp_atlas_aligned.py \ --topomlp_ckpt work_dirs/topomlp_atlas_aligned/epoch_24.pth \ --deepspeed configs/ds_zero2.json \ --output_dir work_dirs/atlas_with_caption_online \ --epochs 8 \ --lr 2e-5 \ --weight_decay 1e-4 \ --batch_size 1 \ --gradient_accumulation_steps 2 \ --warmup_ratio 0.03 \ --max_grad_norm 1.0 \ --log_steps 100 \ --save_epochs 1 \ --keep_last_n_ckpts 3 \ --seed 42 \ --num_workers 4 \ $EXTRA_ARGS