Spaces:
Running
on
Zero
Running
on
Zero
File size: 7,621 Bytes
69defc9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
import os
import time
import argparse
parser = argparse.ArgumentParser(description='Generates emotion-based symbolic music')
parser.add_argument("--conditioning", type=str, required=False, default="continuous_concat",
choices=["none", "discrete_token", "continuous_token",
"continuous_concat"], help='Conditioning type')
parser.add_argument("--data_folder", type=str, default="../data_files/lpd_5/lpd_5_full_transposable")
parser.add_argument('--full_dataset', action="store_true",
help='Use LPD-full dataset')
parser.add_argument('--n_layer', type=int, default=20,
help='number of total layers')
parser.add_argument('--n_head', type=int, default=16,
help='number of heads')
parser.add_argument('--d_model', type=int, default=768,
help='model dimension')
parser.add_argument('--d_condition', type=int, default=192,
help='condition dimension (if continuous_concat is used)')
parser.add_argument('--d_inner', type=int, default=768*4,
help='inner dimension in FF')
parser.add_argument('--tgt_len', type=int, default=1216,
help='number of tokens to predict')
parser.add_argument('--max_gen_input_len', type=int, default=-1,
help='number of tokens to predict')
parser.add_argument('--gen_len', type=int, default=2048,
help='Generation length')
parser.add_argument('--temp_note', type=float, default=1.2,
help='Temperature for generating notes')
parser.add_argument('--temp_rest', type=float, default=1.2,
help='Temperature for generating rests')
parser.add_argument('--n_bars', type=int, default=-1,
help='number of bars to use')
parser.add_argument('--no_pad', action='store_true',
help='dont pad sequences')
parser.add_argument('--eval_tgt_len', type=int, default=-1,
help='number of tokens to predict for evaluation')
parser.add_argument('--dropout', type=float, default=0.1,
help='global dropout rate')
parser.add_argument("--overwrite_dropout", action="store_true",
help="resets dropouts")
parser.add_argument('--lr', type=float, default=2e-5,
help='initial learning rate (0.00025|5 for adam|sgd)')
parser.add_argument("--overwrite_lr", action="store_true",
help="Overwrites learning rate if pretrained model is loaded.")
parser.add_argument('--arousal_feature', default='note_density', type=str,
choices=['tempo', 'note_density'],
help='Feature to use as arousal feature')
parser.add_argument('--scheduler', default='constant', type=str,
choices=['cosine', 'inv_sqrt', 'dev_perf', 'constant', "cyclic"],
help='lr scheduler to use.')
parser.add_argument('--lr_min', type=float, default=5e-6,
help='minimum learning rate for cyclic scheduler')
parser.add_argument('--lr_max', type=float, default=5e-3,
help='maximum learning rate for cyclic scheduler')
parser.add_argument('--warmup_step', type=int, default=0,
help='upper epoch limit')
parser.add_argument('--decay_rate', type=float, default=0.5,
help='decay factor when ReduceLROnPlateau is used')
parser.add_argument('--clip', type=float, default=1.0,
help='gradient clipping')
parser.add_argument('--batch_size', type=int, default=4,
help='batch size')
parser.add_argument('--accumulate_step', type=int, default=1,
help='accumulate gradients (multiplies effective batch size')
parser.add_argument('--seed', type=int, default=-1,
help='random seed')
parser.add_argument('--no_cuda', action='store_true',
help='use CPU')
parser.add_argument('--log_step', type=int, default=1000,
help='report interval')
parser.add_argument('--eval_step', type=int, default=8000,
help='evaluation interval')
parser.add_argument('--max_eval_step', type=int, default=1000,
help='maximum evaluation steps')
parser.add_argument('--gen_step', type=int, default=8000,
help='generation interval')
parser.add_argument('--work_dir', default='../output', type=str,
help='experiment directory.')
parser.add_argument('--restart_dir', type=str, default=None,
help='restart dir')
parser.add_argument('--debug', action='store_true',
help='run in debug mode (do not create exp dir)')
parser.add_argument('--max_step', type=int, default=1000000000,
help='maximum training steps')
parser.add_argument('--overfit', action='store_true',
help='Works on a single sample')
parser.add_argument('--find_lr', action='store_true',
help='Run learning rate finder')
parser.add_argument('--num_workers', default=8, type=int,
help='Number of cores for data loading')
parser.add_argument('--bar_start_prob', type=float, default=0.5,
help=('probability of training sample'
' starting at a bar location'))
parser.add_argument("--n_samples", type=int, default=-1,
help="Limits number of training samples (for faster debugging)")
parser.add_argument('--n_emotion_bins', type=int, default=5,
help='Number of emotion bins in each dimension')
parser.add_argument('--max_transpose', type=int, default=3,
help='Maximum transpose amount')
parser.add_argument('--no_amp', action="store_true",
help='Disable automatic mixed precision')
parser.add_argument('--reset_scaler', action="store_true",
help="Reset scaler (can help avoiding nans)")
parser.add_argument('--exhaustive_eval', action="store_true",
help="Use data exhaustively (for final evaluation)")
parser.add_argument('--regression', action="store_true",
help="Train a regression model")
parser.add_argument("--always_use_discrete_condition", action="store_true",
help="Discrete tokens are used for every sequence")
parser.add_argument("--regression_dir", type=str, default=None,
help="The path of folder with generations, to perform regression on")
args = parser.parse_args()
if args.regression_dir is not None:
args.regression = True
if args.conditioning != "continuous_concat":
args.d_condition = -1
assert not (args.exhaustive_eval and args.max_eval_step > 0)
if args.full_dataset:
assert args.conditioning in ["discrete_token", "none"] and not args.regression, "LPD-full has NaN features"
if args.regression:
args.n_layer = 8
print("Using 8 layers for regression")
args.batch_chunk = -1
if args.debug or args.overfit:
args.num_workers = 0
if args.find_lr:
args.debug = True
args.d_embed = args.d_model
if args.eval_tgt_len < 0:
args.eval_tgt_len = args.tgt_len
if args.scheduler == "cyclic":
args.lr = args.lr_min
if args.restart_dir:
args.restart_dir = os.path.join(args.work_dir, args.restart_dir)
if args.debug:
args.work_dir = os.path.join(args.work_dir, "DEBUG_" + time.strftime('%Y%m%d-%H%M%S'))
elif args.no_cuda:
args.work_dir = os.path.join(args.work_dir, "CPU_" + time.strftime('%Y%m%d-%H%M%S'))
else:
args.work_dir = os.path.join(args.work_dir, time.strftime('%Y%m%d-%H%M%S'))
|