Spaces:
Runtime error
Runtime error
| """ | |
| Author : Bastien GUILLAUME | |
| Version : 0.0.1 | |
| Date : 2023-03-16 | |
| Title : Benchmark ONNX model from a config file made for gradio_interfacer | |
| """ | |
| import os | |
| from config_parser import * | |
| from inferencer import * | |
| from pathlib import Path | |
| def format_examples(task_number, product, product_example): | |
| response = requests.get(product_example) | |
| examples_folder = Path(f"examples/{product}") | |
| os.makedirs(examples_folder, exist_ok=True) | |
| filepath = Path(examples_folder / f'{product_example.split("/")[-1]}') | |
| if filepath.exists(): | |
| pass | |
| else: | |
| with open(filepath, "wb") as f: | |
| f.write(response.content) | |
| return [f"task{task_number+1}", product, filepath] | |
| def benchmark_models(task_number, product): | |
| logging.log(level=logging.INFO, msg=f"Entering benchmark_models") | |
| models_to_benchamrk = config["tasks"][f"task{task_number+1}"]["models"][product] | |
| number_of_model = len(models_to_benchamrk) | |
| task_info = config["tasks"][f"task{task_number+1}"] | |
| result = [] | |
| product_examples = ( | |
| [ | |
| format_examples(task_number, product, product_example) | |
| for product_example in task_info["examples"][product] | |
| ] | |
| if "examples" in task_info and product in task_info["examples"] | |
| else [] | |
| ) | |
| for model in models_to_benchamrk: | |
| for product_example in product_examples: | |
| result.append(inference(task_number, product, product_example, number_of_model)) | |
| return result | |
| benchmark_builder_list = [] | |
| benchmark_builder_dict = {} | |
| logging.log(level=logging.INFO, msg=f"Building Interfaces") | |
| logging.log(level=logging.INFO, msg=f"Number of task(s) : {len(tasks)}") | |
| for task_number in range(0, len(tasks)): | |
| logging.log(level=logging.INFO, msg=f"Treating task n°{task_number+1}") | |
| benchmark_builder_dict[tasks[task_number]] = {} | |
| product_list = list(config["tasks"][f"task{task_number+1}"]["models"].keys()) | |
| logging.log(level=logging.DEBUG, msg=f"Products : {product_list}") | |
| benchmark_builder_product_level_list = [] | |
| for product in product_list: | |
| logging.log(level=logging.INFO, msg=f"Product : {product}") | |
| benchmark_builder_dict[tasks[task_number]][product] = [] | |
| if len(config["tasks"][f"task{task_number+1}"]["models"][product]) > 1: | |
| generated_parralel_interface = benchmark_models( | |
| task_number, product | |
| ) | |
| benchmark_builder_dict[tasks[task_number]][product].append( | |
| generated_parralel_interface | |
| ) | |
| benchmark_builder_product_level_list.append( | |
| generated_parralel_interface | |
| ) | |
| else: | |
| generated_interface = create_interface( | |
| task_number=task_number, product=product, model_number=0 | |
| ) | |
| benchmark_builder_dict[tasks[task_number]][product].append( | |
| generated_interface | |
| ) | |
| benchmark_builder_product_level_list.append(generated_interface) | |
| benchmark_builder_list.append( | |
| gr.TabbedInterface( | |
| interface_list=benchmark_builder_product_level_list, | |
| tab_names=product_list, | |
| ) | |
| ) | |
| logging.log(level=logging.INFO, msg=f"Interfaces ready\n") | |
| logging.log(level=logging.DEBUG, msg=f"Interfaces List {benchmark_builder_list}") | |
| # logging.log(level=logging.INFO, msg=f"Interfaces Dict {interface_dict}") | |