Add automated minifier script for Dynamo benchmarks
Labels: triaged, open source, Stale, topic: not user facing, module: dynamo, ciflow/inductor

### Description
This tool runs the minifier across a list of models from the Hugging Face, timm, or TorchBench suites. It leverages the existing TorchDynamo benchmark runner scripts and allows for end-to-end functionality.

### Purpose
This script will be useful for any developer that wants to run the existing Dynamo benchmarks (or even a single model) on a backend where support may be limited. It identifies existing model coverage for a backend, and also quickly identifies specific operators that are failing for each failing model. Additionally, the auto-minifier tool is great to reproduce failures across a set of models, and thus is a great tool to add to model pipelines. The tool covers the whole cycle, as outlined below, thus allowing for modifications to be made more easily than if it was integrated with the existing benchmarking scripts. 

1) It first runs model training/inference for all models. This is to identify the models that are failing compilation or evaluation, and ensure we don't run the minifier on models that pass training and eval loops.
 
2) It then classifies model failures into either compilation or accuracy errors, with the purpose of running the minifier with the proper granularity. If the model contains a compilation error, `TORCHDYNAMO_REPRO_LEVEL` is set to 1, while accuracy errors set this variable to 4. Possible classification errors are caught for models by comparing to the benchmark results csv file.

3) It then runs the minifier on each failed model. If a `repro.py` script is produced, it is renamed to include the model name, and is saved to the output directory: e.g. `artifact_dir/gpt2/gpt2_repro.py`

4) Optionally, the FX IR can be traced for the minified model, and will be similarly saved to an output file. Similarly, all HLO files can be dumped for the minified model. All logs are saved to the output directory by default, and a csv file is created with the benchmark results.

### Functionality
- For Dynamo benchmarks, runs model training or inference across a given model suite
- Compatible with existing benchmark scripts, but easier to modify given it's a standalone script
- Classify failures into "compiler" and "accuracy", ensuring the correct granularity is used when running the minifier
- Produced minified graph (repro.py script) for models that failed accuracy check, and also ones that failed compilation check
- Dump minified FX IR to file for each model
- Dump HLO files to file for each model
- Support for GPUs on PyTorch 2.0 implemented and tested
- Functional for Hugging Face, TIMM, and TorchBench model suites
- Works with existing model runner scripts, and uses the same model list
- Basic run information saved to a csv file

### How to run
1) Create a model list. The existing huggingface, timm, and torchbench model lists also work. This should be a text file, with the model name and the batch size specified in a comma-separated list.

2) Specify whether you're running training or inference (eval loop) using either `--training` or `--inference` flag.

3) Specify the device, backend, precision, output directory, and whether to run in precision or accuracy mode. This should be the same as running the existing benchmark scripts.

4) (Optional) Capture FX IR of the minified graphs by passing the `--print-fx` flag

5) (Optional) Dump HLO files of the minified graphs by passing the `--gen_hlo_files` flag

6) Run the script. An example command is provided below.

`python auto-minifier.py --model-suite huggingface --model-list huggingface_models_list.txt --device gpu --mode inference --output-dir hf_artifacts --accuracy --print-fx`

### Testing
- Tested across NVIDIA A100, A10G, and T4 GPUs for Hugging Face, timm, and TorchBench model suites
- Tested across multiple compiler backends, including eager, XLA, and inductor

cc @voznesenskym @penguinwu @EikanWang @jgong5 @Guobing-Chen @XiaobingSuper @zhuhaozhe @blzheng @Xia-Weiwen @wenzhe-nrv @jiayisunx @chenyang78 @aakhundov @kadeng @anijain2305 @ipiszy