vshirasuna's picture
Added evaluate method and option to save for each epoch in finetune
60b6403
raw
history blame
11.9 kB
import argparse
def get_parser(parser=None):
if parser is None:
parser = argparse.ArgumentParser()
# Model
# model_arg = parser.add_argument_group('Model')
parser.add_argument("--n_head", type=int, default=8, help="GPT number of heads")
parser.add_argument("--n_layer", type=int, default=12, help="GPT number of layers")
parser.add_argument(
"--q_dropout", type=float, default=0.5, help="Encoder layers dropout"
)
parser.add_argument(
"--d_dropout", type=float, default=0.1, help="Decoder layers dropout"
)
parser.add_argument(
"--n_embd", type=int, default=768, help="Latent vector dimensionality"
)
parser.add_argument(
"--fc_h", type=int, default=512, help="Fully connected hidden dimensionality"
)
parser.add_argument("--n_output", type=int, default=1)
# Train
# train_arg = parser.add_argument_group('Train')
parser.add_argument("--n_batch", type=int, default=512, help="Batch size")
parser.add_argument(
"--unlike_alpha", type=float, default=1.0, help="unlikelihood loss alpha weight"
)
parser.add_argument(
"--from_scratch",
action="store_true",
default=False,
help="train on qm9 from scratch",
)
parser.add_argument(
"--unlikelihood",
action="store_true",
default=False,
help="use unlikelihood loss with gpt pretrain",
)
parser.add_argument(
"--grad_acc",
type=int,
default=1,
help="number of batches to accumulate gradients",
)
parser.add_argument(
"--checkpoint_every",
type=int,
default=1000,
help="save checkpoint every x iterations",
)
parser.add_argument(
"--clip_grad", type=int, default=50, help="Clip gradients to this value"
)
parser.add_argument(
"--lr_start", type=float, default=3 * 1e-4, help="Initial lr value"
)
parser.add_argument(
"--lr_end", type=float, default=3 * 1e-4, help="Maximum lr weight value"
)
parser.add_argument(
"--lr_multiplier", type=int, default=1, help="lr weight multiplier"
)
parser.add_argument(
"--n_last", type=int, default=1000, help="Number of iters to smooth loss calc"
)
parser.add_argument("--n_jobs", type=int, default=1, help="Number of threads")
parser.add_argument(
"--accelerator",
type=str,
default="ddp",
help="The accelerator backend to use (previously known as distributed_backend)",
)
parser.add_argument(
"--num_nodes",
type=int,
default=1,
help="number of GPU nodes for distributed training",
)
parser.add_argument(
"--device",
type=str,
default="cuda",
help='Device to run: "cpu" or "cuda:<device number>"',
)
parser.add_argument("--seed", type=int, default=12345, help="Seed")
parser.add_argument(
"--init_params_from",
type=str,
default="",
help="Path to a ckpt used to initialize the parameters if no restart_path is provided",
)
parser.add_argument(
"--train_decoder_every",
type=int,
default=10,
help="Optimize decoder params every n batches",
)
parser.add_argument(
"--lr_decoder", type=float, default=1e-4, help="Learning rate for decoder part"
)
parser.add_argument(
"--local_rank",
type=int,
default=-1,
help="local_rank for distributed training on gpus",
)
parser.add_argument("--gpu", default=None, type=int, help="GPU id to use.")
parser.add_argument(
"--dist-backend", default="nccl", type=str, help="distributed backend"
)
parser.add_argument(
"--tensorboard_path", default="./runs/deepspeed", help="tensorboard log dir"
)
# common_arg = parser.add_argument_group('Common')
parser.add_argument(
"--vocab_load", type=str, required=False, help="Where to load the vocab"
)
parser.add_argument(
"--n_samples", type=int, required=False, help="Number of samples to sample"
)
parser.add_argument(
"--gen_save", type=str, required=False, help="Where to save the gen molecules"
)
parser.add_argument(
"--max_len", type=int, default=100, help="Max of length of SMILES"
)
parser.add_argument(
"--train_load", type=str, required=False, help="Where to load the model"
)
parser.add_argument(
"--val_load", type=str, required=False, help="Where to load the model"
)
parser.add_argument(
"--n_workers",
type=int,
required=False,
default=1,
help="Where to load the model",
)
# beam search hyper parameters
parser.add_argument(
"--beam_size", type=int, default=0, help="Number of beams to generate"
)
parser.add_argument(
"--num_seq_returned",
type=int,
default=0,
help="number of beams to be returned (must be <= beam_size",
)
parser.add_argument(
"--min_len", type=int, default=1, help="minimum length to be generated"
)
parser.add_argument(
"--nucleus_thresh", type=float, default=0.9, help="nucleus sampling threshold"
)
parser.add_argument(
"--finetune_path",
type=str,
default="",
help="path to trainer file to continue training",
)
parser.add_argument(
"--restart_path",
type=str,
default="",
help="path to trainer file to continue training",
)
parser.add_argument(
"--data_path", type=str, default="", help="path to pubchem file"
)
parser.add_argument(
"--pretext_size", type=int, default=0, help="number of k-mers to pretext"
)
parser.add_argument(
"--model_save_dir",
type=str,
required=False,
default="./models_dump/",
help="Where to save the models/log/config/vocab",
)
parser.add_argument(
"--model_save",
type=str,
required=False,
default="model.pt",
help="Where to save the model",
)
# parser.add_argument('--save_frequency',
# type=int, default=20,
# help='How often to save the model')
parser.add_argument(
"--num_epoch", type=int, default=1, help="number of epochs to train"
)
# parser.add_argument('--num_iter',
# type=int, default=-1,
# help='how many itersations per epoch (for unlikelihood tuning)')
parser.add_argument(
"--log_file", type=str, required=False, help="Where to save the log"
)
parser.add_argument(
"--tb_loc",
type=str,
required=False,
help="Where to save the tensorflow location",
)
parser.add_argument(
"--config_save", type=str, required=False, help="Where to save the config"
)
parser.add_argument("--vocab_save", type=str, help="Where to save the vocab")
# resume_arg = parser.add_argument_group('Resume')
parser.add_argument(
"--debug",
default=False,
action="store_true",
help="do not erase cache at end of program",
)
parser.add_argument(
"--fast_dev_run",
default=False,
help="This flag runs a “unit test” by running n if set to n (int) else 1 if set to True training and validation batch(es).",
)
parser.add_argument(
"--freeze_model",
default=False,
action="store_true",
help="freeze weights of bert model during fine tuning",
)
parser.add_argument(
"--resume", default=False, action="store_true", help="Resume from a saved model"
)
parser.add_argument(
"--rotate",
default=False,
action="store_true",
help="use rotational relative embedding",
)
parser.add_argument(
"--model_load", type=str, required=False, help="Where to load the model"
)
parser.add_argument(
"--root_dir", type=str, required=False, default=".", help="location of root dir"
)
parser.add_argument(
"--config_load", type=str, required=False, help="Where to load the config"
)
parser.add_argument(
"--gpus", type=int, required=False, default=1, help="number of gpus to use"
)
# parser.add_argument('--start_epoch',
# type=int, required=False, default=0,
# help='Where to load the config')
parser.add_argument(
"--model_arch",
type=str,
required=False,
help="used to teack model arch in params",
)
parser.add_argument(
"--eval_every",
type=int,
default=50000,
help="run evaluation every x iterations",
)
parser.add_argument(
"--num_feats",
type=int,
required=False,
default=32,
help="number of random reatures for FAVOR+",
)
parser.add_argument(
"--max_epochs", type=int, required=False, default=1, help="max number of epochs"
)
# debug() FINE TUNEING
# parser.add_argument('--save_dir', type=str, required=True)
parser.add_argument(
"--mode", type=str, default="cls", help="type of pooling to use"
)
parser.add_argument("--dataset_length", type=int, default=None, required=False)
parser.add_argument("--num_workers", type=int, default=0, required=False)
parser.add_argument("--dropout", type=float, default=0.1, required=False)
# parser.add_argument("--dims", type=int, nargs="*", default="", required=False)
parser.add_argument(
"--smiles_embedding",
type=str,
default="/dccstor/medscan7/smallmolecule/runs/ba-predictor/small-data/embeddings/protein/ba_embeddings_tanh_512_2986138_2.pt",
)
# parser.add_argument("--train_pct", type=str, required=False, default="95")
# parser.add_argument("--aug", type=int, required=True)
parser.add_argument("--dataset_name", type=str, required=False, default="sol")
parser.add_argument("--measure_name", type=str, required=False, default="measure")
# parser.add_argument("--emb_type", type=str, required=True)
parser.add_argument("--checkpoints_folder", type=str, required=True)
# parser.add_argument("--results_dir", type=str, required=True)
# parser.add_argument("--patience_epochs", type=int, required=True)
parser.add_argument("--model_path", type=str, default="./smi_ted/")
parser.add_argument("--ckpt_filename", type=str, default="smi_ted_Light_40.pt")
# parser.add_argument('--n_output', type=int, default=1)
parser.add_argument("--save_every_epoch", type=int, default=0)
parser.add_argument("--save_ckpt", type=int, default=1)
parser.add_argument("--start_seed", type=int, default=0)
parser.add_argument("--smi_ted_version", type=str, default="v1")
parser.add_argument("--train_decoder", type=int, default=1)
parser.add_argument("--target_metric", type=str, default="rmse")
parser.add_argument("--loss_fn", type=str, default="mae")
parser.add_argument(
"--data_root",
type=str,
required=False,
default="/dccstor/medscan7/smallmolecule/runs/ba-predictor/small-data/affinity",
)
# parser.add_argument("--use_bn", type=int, default=0)
parser.add_argument("--use_linear", type=int, default=0)
parser.add_argument("--lr", type=float, default=0.001)
# parser.add_argument("--weight_decay", type=float, default=5e-4)
# parser.add_argument("--val_check_interval", type=float, default=1.0)
parser.add_argument("--batch_size", type=int, default=64)
return parser
def parse_args():
parser = get_parser()
args = parser.parse_args()
return args