def METHOD_NAME(args: List[str], extra_args: List[str]):
    device = validate(args.device, list_devices())
    test = validate(args.test, list_tests())
    model = validate(args.model, list_models())
    metrics = validate(parse_str_to_list(args.metrics), list_metrics())
    config = TorchBenchModelConfig(
        name=model,
        device=device,
        test=test,
        batch_size=args.batch_size,
        extra_args=extra_args,
        extra_env=None)
    try:
        metrics_res = run_config(config, metrics, dryrun=args.dryrun)
    except KeyboardInterrupt:
        print("User keyboard interrupted!")
    if not args.dryrun:
        args.output = args.output if args.output else get_output_dir(BM_NAME)
        target_dir = Path(args.output).joinpath(f"{config.name}-{config.test}")
        target_dir.mkdir(exist_ok=True, parents=True)
        metrics_dict = result_to_output_metrics(metrics, metrics_res)
        dump_result_to_json(metrics_dict, target_dir)