|
import argparse |
|
from s5.utils.util import str2bool |
|
from s5.train import train |
|
from s5.dataloading import Datasets |
|
|
|
if __name__ == "__main__": |
|
|
|
parser = argparse.ArgumentParser() |
|
|
|
parser.add_argument("--USE_WANDB", type=str2bool, default=False, |
|
help="log with wandb?") |
|
parser.add_argument("--wandb_project", type=str, default=None, |
|
help="wandb project name") |
|
parser.add_argument("--wandb_entity", type=str, default=None, |
|
help="wandb entity name, e.g. username") |
|
parser.add_argument("--dir_name", type=str, default='./cache_dir', |
|
help="name of directory where data is cached") |
|
parser.add_argument("--dataset", type=str, choices=Datasets.keys(), |
|
default='mnist-classification', |
|
help="dataset name") |
|
|
|
|
|
parser.add_argument("--n_layers", type=int, default=6, |
|
help="Number of layers in the network") |
|
parser.add_argument("--d_model", type=int, default=128, |
|
help="Number of features, i.e. H, " |
|
"dimension of layer inputs/outputs") |
|
parser.add_argument("--ssm_size_base", type=int, default=256, |
|
help="SSM Latent size, i.e. P") |
|
parser.add_argument("--blocks", type=int, default=8, |
|
help="How many blocks, J, to initialize with") |
|
parser.add_argument("--C_init", type=str, default="trunc_standard_normal", |
|
choices=["trunc_standard_normal", "lecun_normal", "complex_normal"], |
|
help="Options for initialization of C: \\" |
|
"trunc_standard_normal: sample from trunc. std. normal then multiply by V \\ " \ |
|
"lecun_normal sample from lecun normal, then multiply by V\\ " \ |
|
"complex_normal: sample directly from complex standard normal") |
|
parser.add_argument("--discretization", type=str, default="zoh", choices=["zoh", "bilinear"]) |
|
parser.add_argument("--mode", type=str, default="pool", choices=["pool", "last"], |
|
help="options: (for classification tasks) \\" \ |
|
" pool: mean pooling \\" \ |
|
"last: take last element") |
|
parser.add_argument("--activation_fn", default="half_glu1", type=str, |
|
choices=["full_glu", "half_glu1", "half_glu2", "gelu"]) |
|
parser.add_argument("--conj_sym", type=str2bool, default=True, |
|
help="whether to enforce conjugate symmetry") |
|
parser.add_argument("--clip_eigs", type=str2bool, default=False, |
|
help="whether to enforce the left-half plane condition") |
|
parser.add_argument("--bidirectional", type=str2bool, default=False, |
|
help="whether to use bidirectional model") |
|
parser.add_argument("--dt_min", type=float, default=0.001, |
|
help="min value to sample initial timescale params from") |
|
parser.add_argument("--dt_max", type=float, default=0.1, |
|
help="max value to sample initial timescale params from") |
|
|
|
|
|
parser.add_argument("--prenorm", type=str2bool, default=True, |
|
help="True: use prenorm, False: use postnorm") |
|
parser.add_argument("--batchnorm", type=str2bool, default=True, |
|
help="True: use batchnorm, False: use layernorm") |
|
parser.add_argument("--bn_momentum", type=float, default=0.95, |
|
help="batchnorm momentum") |
|
parser.add_argument("--bsz", type=int, default=64, |
|
help="batch size") |
|
parser.add_argument("--epochs", type=int, default=100, |
|
help="max number of epochs") |
|
parser.add_argument("--early_stop_patience", type=int, default=1000, |
|
help="number of epochs to continue training when val loss plateaus") |
|
parser.add_argument("--ssm_lr_base", type=float, default=1e-3, |
|
help="initial ssm learning rate") |
|
parser.add_argument("--lr_factor", type=float, default=1, |
|
help="global learning rate = lr_factor*ssm_lr_base") |
|
parser.add_argument("--dt_global", type=str2bool, default=False, |
|
help="Treat timescale parameter as global parameter or SSM parameter") |
|
parser.add_argument("--lr_min", type=float, default=0, |
|
help="minimum learning rate") |
|
parser.add_argument("--cosine_anneal", type=str2bool, default=True, |
|
help="whether to use cosine annealing schedule") |
|
parser.add_argument("--warmup_end", type=int, default=1, |
|
help="epoch to end linear warmup") |
|
parser.add_argument("--lr_patience", type=int, default=1000000, |
|
help="patience before decaying learning rate for lr_decay_on_val_plateau") |
|
parser.add_argument("--reduce_factor", type=float, default=1.0, |
|
help="factor to decay learning rate for lr_decay_on_val_plateau") |
|
parser.add_argument("--p_dropout", type=float, default=0.0, |
|
help="probability of dropout") |
|
parser.add_argument("--weight_decay", type=float, default=0.05, |
|
help="weight decay value") |
|
parser.add_argument("--opt_config", type=str, default="standard", choices=['standard', |
|
'BandCdecay', |
|
'BfastandCdecay', |
|
'noBCdecay'], |
|
help="Opt configurations: \\ " \ |
|
"standard: no weight decay on B (ssm lr), weight decay on C (global lr) \\" \ |
|
"BandCdecay: weight decay on B (ssm lr), weight decay on C (global lr) \\" \ |
|
"BfastandCdecay: weight decay on B (global lr), weight decay on C (global lr) \\" \ |
|
"noBCdecay: no weight decay on B (ssm lr), no weight decay on C (ssm lr) \\") |
|
parser.add_argument("--jax_seed", type=int, default=1919, |
|
help="seed randomness") |
|
|
|
train(parser.parse_args()) |
|
|