| #!/usr/bin/env bash |
| set -euo pipefail |
|
|
| DATA_ROOT="${DATA_ROOT:-./datasets/celeba-hq-256}" |
| SAVE_DIR="${SAVE_DIR:-./runs/celebahq256_rtm}" |
| NUM_GPUS="${NUM_GPUS:-4}" |
| DINO_CACHE_DIR="${DINO_CACHE_DIR:-./dinov2_cache}" |
|
|
| export PYTORCH_CUDA_ALLOC_CONF="${PYTORCH_CUDA_ALLOC_CONF:-expandable_segments:True}" |
|
|
| mkdir -p "$SAVE_DIR" "$DINO_CACHE_DIR" |
|
|
| CKPT_DIR="$SAVE_DIR/train" |
| RESTORE_ARGS=() |
| if [ -f "$CKPT_DIR/latest-model.th" ]; then |
| echo "[train_celebahq256] resuming from $CKPT_DIR/latest-model.th" |
| RESTORE_ARGS+=(--restore_path "$CKPT_DIR/latest-model.th") |
| [ -f "$CKPT_DIR/latest-model-ema.th" ] && RESTORE_ARGS+=(--restore_ema_path "$CKPT_DIR/latest-model-ema.th") |
| [ -f "$CKPT_DIR/latest-opt.th" ] && RESTORE_ARGS+=(--restore_optimizer_path "$CKPT_DIR/latest-opt.th") |
| [ -f "$CKPT_DIR/latest-sched.th" ] && RESTORE_ARGS+=(--restore_scheduler_path "$CKPT_DIR/latest-sched.th") |
| [ -f "$CKPT_DIR/latest-log.jsonl" ] && RESTORE_ARGS+=(--restore_log_path "$CKPT_DIR/latest-log.jsonl") |
| fi |
|
|
| torchrun --nnodes=1 --nproc_per_node="$NUM_GPUS" --standalone train.py \ |
| --hps celebahq256 \ |
| --save_dir "$SAVE_DIR" \ |
| --data_root "$DATA_ROOT" \ |
| --num_epochs 6000 \ |
| --use_se True \ |
| --residual_type convex \ |
| --latent_dim 512 \ |
| --dec_blocks '1x1,4m1,4x2,8m4,8x4,16m8,16x5,32m16,32x5,64m32,64x5,128m64,128x4,256m128,256x1' \ |
| --custom_width_str '256:64,128:128,64:512,32:768,16:768,8:768,4:768,1:768' \ |
| --force_factor 5 \ |
| --imle_force_resample 2 \ |
| --lr 0.0003 \ |
| --search_type lpips \ |
| --n_batch 24 \ |
| --imle_batch 128 \ |
| --iters_per_save 1000 \ |
| --iters_per_images 5000 \ |
| --iters_per_ckpt 500000 \ |
| --use_rtm True \ |
| --H_cycles 4 --L_cycles 2 --refinement_steps 4 \ |
| --num_tokens 4 \ |
| --rtm_hidden_size 256 \ |
| --dino_cache_dir "$DINO_CACHE_DIR" \ |
| "${RESTORE_ARGS[@]}" |
|
|