def parse_args()

in assets/common/src/batch_deploy.py [0:0]


def parse_args():
    """Return arguments."""
    parser = argparse.ArgumentParser()

    # Defaults for batch endpoint has been picked mostly from:
    # https://learn.microsoft.com/en-us/azure/machine-learning/reference-yaml-deployment-batch
    # Some of the defaults have been tweaked to cater to large models.

    # add arguments
    parser.add_argument(
        "--registration_details_folder",
        type=Path,
        help="Folder containing model registration details in a JSON file named model_registration_details.json",
    )
    parser.add_argument(
        "--model_id",
        type=str,
        help="Asset ID of the model registered in workspace/registry.",
    )
    parser.add_argument(
        "--inference_payload_file",
        type=Path,
        help="File containing data used to validate deployment",
    )
    parser.add_argument(
        "--inference_payload_folder",
        type=Path,
        help="Folder containing files used to validate deployment",
    )
    parser.add_argument(
        "--endpoint_name",
        type=str,
        help="Name of the endpoint",
    )
    parser.add_argument("--deployment_name", type=str, help="Name of the the deployment")
    parser.add_argument(
        "--compute_name",
        type=str,
        help="Name of the compute target to execute the batch scoring jobs on",
    )
    parser.add_argument(
        "--size",
        type=str,
        help="Compute instance size to deploy model",
        default=DEFAULT_COMPUTE_SIZE,
    )
    parser.add_argument(
        "--min_instances",
        type=int,
        default=DEFAULT_MIN_INSTANCES,
        help="Minimum number of instances of the compute cluster",
    )
    parser.add_argument(
        "--max_instances",
        type=int,
        default=DEFAULT_MAX_INSTANCES,
        help="Maximum number of instances of the compute cluster",
    )
    parser.add_argument(
        "--idle_time_before_scale_down",
        type=int,
        default=DEFAULT_IDLE_TIME_BEFORE_SCALE_DOWN,
        help="Node Idle Time before scaling down amlCompute",
    )
    parser.add_argument(
        "--output_file_name",
        type=str,
        default=DEFAULT_OUTPUT_FILE_NAME,
        help="Name of the batch scoring output file",
    )
    parser.add_argument(
        "--max_concurrency_per_instance",
        type=int,
        default=DEFAULT_MAX_CONCURRENCY_PER_INSTANCE,
        help="The maximum number of parallel scoring_script runs per instance",
    )
    parser.add_argument(
        "--error_threshold",
        type=int,
        default=DEFAULT_ERROR_THRESHOLD,
        help="The number of file failures that should be ignored",
    )
    parser.add_argument(
        "--max_retries",
        type=int,
        default=DEFAULT_MAX_RETRIES,
        help="The maximum number of retries for a failed or timed-out mini batch",
    )
    parser.add_argument(
        "--timeout",
        type=int,
        default=DEFAULT_TIMEOUT,
        help="The timeout in seconds for scoring a single mini batch.",
    )
    parser.add_argument(
        "--logging_level",
        type=str,
        default=DEFAULT_LOGGING_LEVEL,
        help="The log verbosity level",
    )
    parser.add_argument(
        "--mini_batch_size",
        type=int,
        default=DEFAULT_MINI_BATCH_SIZE,
        help="The number of files the code_configuration.scoring_script can process in one run() call",
    )
    parser.add_argument(
        "--instance_count",
        type=int,
        help="The number of nodes to use for each batch scoring job",
        default=DEFAULT_INSTANCE_COUNT,
        choices=range(1, MAX_INSTANCE_COUNT),
    )
    parser.add_argument(
        "--batch_job_output_folder",
        type=Path,
        help="Folder to which batch job outputs will be saved",
    )
    # parse args
    args = parser.parse_args()
    logger.info(f"Args received {args}")
    print("args received ", args)

    return args