| 34 | |
| 35 | |
| 36 | def get_args_parser(): |
| 37 | parser = argparse.ArgumentParser( |
| 38 | 'EfficientViT training and evaluation script', add_help=False) |
| 39 | parser.add_argument('--batch-size', default=256, type=int) |
| 40 | parser.add_argument('--epochs', default=300, type=int) |
| 41 | |
| 42 | # Model parameters |
| 43 | parser.add_argument('--model', default='EfficientViT_M4', type=str, metavar='MODEL', |
| 44 | help='Name of model to train') |
| 45 | parser.add_argument('--input-size', default=224, |
| 46 | type=int, help='images input size') |
| 47 | |
| 48 | parser.add_argument('--model-ema', action='store_true') |
| 49 | parser.add_argument( |
| 50 | '--no-model-ema', action='store_false', dest='model_ema') |
| 51 | parser.set_defaults(model_ema=True) |
| 52 | parser.add_argument('--model-ema-decay', type=float, |
| 53 | default=0.99996, help='') |
| 54 | parser.add_argument('--model-ema-force-cpu', |
| 55 | action='store_true', default=False, help='') |
| 56 | |
| 57 | # Optimizer parameters |
| 58 | parser.add_argument('--opt', default='adamw', type=str, metavar='OPTIMIZER', |
| 59 | help='Optimizer (default: "adamw"') |
| 60 | parser.add_argument('--opt-eps', default=1e-8, type=float, metavar='EPSILON', |
| 61 | help='Optimizer Epsilon (default: 1e-8)') |
| 62 | parser.add_argument('--opt-betas', default=None, type=float, nargs='+', metavar='BETA', |
| 63 | help='Optimizer Betas (default: None, use opt default)') |
| 64 | parser.add_argument('--clip-grad', type=float, default=0.02, metavar='NORM', |
| 65 | help='Clip gradient norm (default: None, no clipping)') |
| 66 | parser.add_argument('--clip-mode', type=str, default='agc', |
| 67 | help='Gradient clipping mode. One of ("norm", "value", "agc")') |
| 68 | parser.add_argument('--momentum', type=float, default=0.9, metavar='M', |
| 69 | help='SGD momentum (default: 0.9)') |
| 70 | parser.add_argument('--weight-decay', type=float, default=0.025, |
| 71 | help='weight decay (default: 0.025)') |
| 72 | |
| 73 | # Learning rate schedule parameters |
| 74 | parser.add_argument('--sched', default='cosine', type=str, metavar='SCHEDULER', |
| 75 | help='LR scheduler (default: "cosine"') |
| 76 | parser.add_argument('--lr', type=float, default=1e-3, metavar='LR', |
| 77 | help='learning rate (default: 1e-3)') |
| 78 | parser.add_argument('--lr-noise', type=float, nargs='+', default=None, metavar='pct, pct', |
| 79 | help='learning rate noise on/off epoch percentages') |
| 80 | parser.add_argument('--lr-noise-pct', type=float, default=0.67, metavar='PERCENT', |
| 81 | help='learning rate noise limit percent (default: 0.67)') |
| 82 | parser.add_argument('--lr-noise-std', type=float, default=1.0, metavar='STDDEV', |
| 83 | help='learning rate noise std-dev (default: 1.0)') |
| 84 | parser.add_argument('--warmup-lr', type=float, default=1e-6, metavar='LR', |
| 85 | help='warmup learning rate (default: 1e-6)') |
| 86 | parser.add_argument('--min-lr', type=float, default=1e-5, metavar='LR', |
| 87 | help='lower lr bound for cyclic schedulers that hit 0 (1e-5)') |
| 88 | parser.add_argument('--decay-epochs', type=float, default=30, metavar='N', |
| 89 | help='epoch interval to decay LR') |
| 90 | parser.add_argument('--warmup-epochs', type=int, default=5, metavar='N', |
| 91 | help='epochs to warmup LR, if scheduler supports') |
| 92 | parser.add_argument('--cooldown-epochs', type=int, default=10, metavar='N', |
| 93 | help='epochs to cooldown LR at min_lr, after cyclic schedule ends') |