| #!/bin/bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| set -euo pipefail |
|
|
| PROJECT_DIR="/home/user02/linhdang/Antokenizer" |
| cd "$PROJECT_DIR" |
|
|
| |
| IMAGE_SHARDS_DIR="$PROJECT_DIR/dataset/image10k/train" |
| VIDEO_SHARDS_DIR="$PROJECT_DIR/dataset/dataset_10m" |
| UNIVERSAL_ROOT="$PROJECT_DIR/dataset/universal_3d" |
|
|
| |
| INIT_CKPT="checkpoints/stage1_5/balanced/mavt-stage1_5-balanced-step=0120000-val/loss=0.1238.ckpt" |
|
|
| mkdir -p logs checkpoints/stage3_dgx |
|
|
| |
| if [ -d "$PROJECT_DIR/.venv" ]; then |
| source "$PROJECT_DIR/.venv/bin/activate" |
| elif [ -d "$HOME/miniconda3" ]; then |
| source "$HOME/miniconda3/etc/profile.d/conda.sh" |
| conda activate base |
| fi |
|
|
| export PYTHONPATH="$PROJECT_DIR/src:${PYTHONPATH:-}" |
| export TORCH_NCCL_BLOCKING_WAIT=1 |
| export OMP_NUM_THREADS=8 |
| export TOKENIZERS_PARALLELISM=false |
|
|
| |
| THREED_RENDERS="$UNIVERSAL_ROOT/3d_objects/renders" |
| N_3D=$(find -L "$THREED_RENDERS" -mindepth 1 -maxdepth 1 -type d 2>/dev/null | wc -l) |
| echo "========================================" |
| echo " MAVT Stage 3 — Image + Video + 3D" |
| echo " GPUs requested: 2" |
| echo " Image shards: $IMAGE_SHARDS_DIR" |
| echo " Video shards: $VIDEO_SHARDS_DIR" |
| echo " Universal root: $UNIVERSAL_ROOT" |
| echo " 3D objects: $N_3D renders" |
| echo " Init ckpt: $INIT_CKPT" |
| echo "========================================" |
|
|
| if [ "$N_3D" -lt 1000 ]; then |
| echo "[FATAL] Too few 3D objects ($N_3D). Expected ≥ 1000." |
| exit 1 |
| fi |
|
|
| if [ ! -f "$INIT_CKPT" ]; then |
| echo "[FATAL] Init checkpoint not found: $INIT_CKPT" |
| exit 1 |
| fi |
|
|
| |
| |
| |
| CKPT_ARG="--model.init_from_ckpt $INIT_CKPT" |
|
|
| |
| srun --mpi=none python train.py fit \ |
| --config configs/model/mavt_base.yaml \ |
| --config configs/train/universal_data/stage3_universal.yaml \ |
| --config configs/train/universal_data/stage3_paths.yaml \ |
| --data.image_shards_dir "$IMAGE_SHARDS_DIR" \ |
| --data.video_shards_dir "$VIDEO_SHARDS_DIR" \ |
| --data.video_max_shards 100 \ |
| --data.universal_data_root "$UNIVERSAL_ROOT" \ |
| --data.active_modalities '["image", "video", "threed"]' \ |
| --model.active_modalities '["image", "video", "threed"]' \ |
| --data.image_resolution 256 \ |
| --data.video_frames 16 \ |
| --data.video_resolution 256 \ |
| --data.triplane_res 256 \ |
| --data.batch_size 6 \ |
| --data.num_workers 6 \ |
| --data.pin_memory true \ |
| --data.persistent_workers true \ |
| --data.prefetch_factor 3 \ |
| --model.training_stage 3 \ |
| --model.init_siglip2 true \ |
| --model.use_lpips true \ |
| --model.use_clip false \ |
| --model.w_l1 1.0 \ |
| --model.w_lpips 0.2 \ |
| --model.w_sem 0.3 \ |
| --model.w_temp 0.05 \ |
| --model.warmup_steps 500 \ |
| --model.total_steps 50000 \ |
| --model.weight_decay 0.01 \ |
| --model.grad_clip 1.0 \ |
| $CKPT_ARG \ |
| --trainer.devices 2 \ |
| --trainer.strategy ddp_find_unused_parameters_true \ |
| --trainer.precision bf16-mixed \ |
| --trainer.max_steps 50000 \ |
| --trainer.accumulate_grad_batches 2 \ |
| --trainer.log_every_n_steps 50 \ |
| --trainer.val_check_interval 1000 \ |
| --trainer.logger.class_path lightning.pytorch.loggers.WandbLogger \ |
| --trainer.logger.init_args.project mavt \ |
| --trainer.logger.init_args.name stage3_threed |
|
|