def parse_args()

in pt/vmz/func/opts.py [0:0]


def parse_args():
    parser = ArgumentParser(description="PyTorch Video Classification Training")
    parser.add_argument("--name", default="video_classification_workflow")
    parser.add_argument("--model", default="r2plus1d_18", help="model")
    parser.add_argument("--device", default="cuda", help="device")

    parser.add_argument("-b", "--batch-size", default=24, type=int)
    parser.add_argument(
        "--epochs",
        default=45,
        type=int,
        metavar="N",
        help="number of total epochs to run",
    )
    parser.add_argument(
        "-j",
        "--workers",
        default=10,
        type=int,
        metavar="N",
        help="number of data loading workers (default: 10)",
    )
    parser.add_argument("--lr", default=0.01, type=float, help="initial learning rate")
    parser.add_argument(
        "--fc_lr", default=0.1, type=float, help="fully connected learning rate"
    )
    parser.add_argument(
        "--l1_lr", default=0.001, type=float, help="first_block learning rate"
    )
    parser.add_argument(
        "--l2_lr", default=0.001, type=float, help="second_block learning rate"
    )
    parser.add_argument(
        "--l3_lr", default=0.001, type=float, help="third_block learning rate"
    )
    parser.add_argument(
        "--l4_lr", default=0.001, type=float, help="last_block learning rate"
    )
    parser.add_argument(
        "--momentum", default=0.9, type=float, metavar="M", help="momentum"
    )
    parser.add_argument(
        "--wd",
        "--weight-decay",
        default=1e-4,
        type=float,
        metavar="W",
        help="weight decay (default: 1e-4)",
        dest="weight_decay",
    )
    parser.add_argument(
        "--lr-milestones",
        nargs="+",
        default=[20, 30, 40],
        type=int,
        help="decrease lr on milestones",
    )
    parser.add_argument(
        "--lr-gamma",
        default=0.1,
        type=float,
        help="decrease lr by a factor of lr-gamma",
    )
    parser.add_argument(
        "--lr-warmup-epochs", default=10, type=int, help="number of warmup epochs"
    )
    parser.add_argument("--print-freq", default=10, type=int, help="print frequency")
    parser.add_argument("--finetune", action="store_true", default=False)
    parser.add_argument("--num_finetune_classes", default=101, type=int)
    parser.add_argument("--output-dir", default=".", help="path where to save")
    parser.add_argument("--resume", default="", help="resume from checkpoint")
    parser.add_argument(
        "--resume_from_model", default="", help="resume from pretrained model"
    )
    parser.add_argument(
        "--start-epoch", default=0, type=int, metavar="N", help="start epoch"
    )

    parser.add_argument(
        "--sync-bn", dest="sync_bn", help="Use sync batch norm", action="store_true",
    )
    parser.add_argument(
        "--eval_only", help="Only validate the model", action="store_true",
    )
    # parser.add_argument(
    #     "--test_on_cluster",
    #     dest="is_online",
    #     help="Should we run it locally or not",
    #     action="store_true",
    # )
    parser.add_argument(
        "--pretrained",
        dest="pretrained",
        default="",
        help="Use pre-trained models from the modelzoo",
    )

    # Mixed precision training parameters
    parser.add_argument(
        "--apex", action="store_true", help="Use apex for mixed precision training"
    )

    parser.add_argument(
        "--apex-opt-level",
        default="O1",
        type=str,
        help="For apex mixed precision training"
        "O0 for FP32 training, O1 for mixed precision training."
        "For further detail, see https://github.com/NVIDIA/apex/tree/master/examples/imagenet",
    )

    # distributed training parameters
    parser.add_argument(
        "--world-size", default=1, type=int, help="number of distributed processes"
    )
    parser.add_argument(
        "--dist-url", default="env://", help="url used to set up distributed training"
    )
    # slurm args
    parser.add_argument("--partition", default="dev", help="Slurm partition to use?")
    parser.add_argument("--nodes", default=2, type=int, help="number nodes tu use")

    # get dataset arguments
    parser = get_dataset_arguments(parser)

    # parse the args
    args = parser.parse_args()

    # TODO: remove this before publishing
    args = dataset_load_defaults(args)

    # safety checks
    dataset_asserts(args)

    return args