| #!/bin/bash |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| <<comment |
| # Usage: |
| cd scripts/ |
| MODEL=<ar|mdlm|udlm> |
| sbatch \ |
| --export=ALL,MODEL=${MODEL} \ |
| --job-name=train_qm9_no-guidance_${MODEL} \ |
| train_qm9_no-guidance.sh |
| comment |
|
|
| |
| cd ../ || exit |
| source setup_env.sh |
| export NCCL_P2P_LEVEL=NVL |
| export HYDRA_FULL_ERROR=1 |
|
|
| |
| |
| |
| if [ -z "${MODEL}" ]; then |
| echo "MODEL is not set" |
| exit 1 |
| fi |
| if [ -z "${USE_SIMPLE_CE_LOSS}" ]; then |
| USE_SIMPLE_CE_LOSS=False |
| fi |
| RUN_NAME="${MODEL}_no-guidance" |
| if [ "${USE_SIMPLE_CE_LOSS}" = "True" ]; then |
| RUN_NAME="${RUN_NAME}_simple-ce" |
| fi |
|
|
| if [ "${MODEL}" = "ar" ]; then |
| |
| DIFFUSION="absorbing_state" |
| PARAMETERIZATION="ar" |
| T=0 |
| TIME_COND=False |
| ZERO_RECON_LOSS=False |
| elif [ "${MODEL}" = "mdlm" ]; then |
| |
| DIFFUSION="absorbing_state" |
| PARAMETERIZATION="subs" |
| T=0 |
| TIME_COND=False |
| ZERO_RECON_LOSS=False |
| elif [ "${MODEL}" = "udlm" ]; then |
| |
| DIFFUSION="uniform" |
| PARAMETERIZATION="d3pm" |
| T=0 |
| TIME_COND=True |
| ZERO_RECON_LOSS=True |
| else |
| echo "MODEL must be one of ar, mdlm, udlm" |
| exit 1 |
| fi |
|
|
| |
| |
| srun python -u -m main \ |
| diffusion="${DIFFUSION}" \ |
| parameterization="${PARAMETERIZATION}" \ |
| T=${T} \ |
| time_conditioning=${TIME_COND} \ |
| zero_recon_loss=${ZERO_RECON_LOSS} \ |
| data=qm9 \ |
| data.label_col=null \ |
| data.label_col_pctile=null \ |
| data.num_classes=null \ |
| eval.generate_samples=False \ |
| loader.global_batch_size=2048 \ |
| loader.eval_global_batch_size=4096 \ |
| backbone="dit" \ |
| model=small \ |
| model.length=32 \ |
| optim.lr=3e-4 \ |
| lr_scheduler=cosine_decay_warmup \ |
| lr_scheduler.warmup_t=1000 \ |
| lr_scheduler.lr_min=3e-6 \ |
| training.guidance=null \ |
| callbacks.checkpoint_every_n_steps.every_n_train_steps=5_000 \ |
| training.compute_loss_on_pad_tokens=True \ |
| training.use_simple_ce_loss=${USE_SIMPLE_CE_LOSS} \ |
| trainer.max_steps=25_000 \ |
| trainer.val_check_interval=1.0 \ |
| wandb.name="qm9_${RUN_NAME}" \ |
| hydra.run.dir="${PWD}/outputs/qm9/${RUN_NAME}" |
|
|