| import re | |
| import subprocess | |
| import sys | |
| from datetime import datetime | |
| from importlib import import_module | |
| from pathlib import Path | |
| import gradio as gr | |
| import pandas as pd | |
| if Path("optimum-intel").is_dir(): | |
| subprocess.run(["git", "pull"], cwd="optimum-intel") | |
| else: | |
| subprocess.run(["git", "clone", "https://github.com/huggingface/optimum-intel.git"]) | |
| test_path = Path(__file__).parent / "optimum-intel" / "tests" / "openvino" | |
| sys.path.append(str(test_path)) | |
| from test_modeling import * | |
| from test_diffusion import * | |
| RESULT_FILE = "supported_models.md" | |
| def generate_model_list(): | |
| tests = [] | |
| d = {} | |
| for item in globals().copy(): | |
| match = re.match("(OVModelFor.*IntegrationTest)", item) or re.match("(OVPipelineFor.*Test)", item) | |
| if match: | |
| tests.append(match.group(1)) | |
| for test in tests: | |
| task = test.replace("IntegrationTest", "").replace("Test", "") | |
| if "OVModelFor" in task: | |
| cls = getattr(import_module("test_modeling"), test) | |
| else: | |
| cls = getattr(import_module("test_diffusion"), test) | |
| try: | |
| print(cls.SUPPORTED_ARCHITECTURES) | |
| d[task] = cls.SUPPORTED_ARCHITECTURES | |
| except AttributeError: | |
| print(cls.SUPPORTED_ARCHITECTURES_WITH_HIDDEN_STATES) | |
| print(cls.SUPPORTED_ARCHITECTURES_WITH_ATTENTION) | |
| d[task] = cls.SUPPORTED_ARCHITECTURES_WITH_ATTENTION + cls.SUPPORTED_ARCHITECTURES_WITH_HIDDEN_STATES | |
| with open(RESULT_FILE, "w") as f: | |
| f.write(f"Updated at {datetime.now().strftime('%d %B %Y')}\n\n") | |
| summary = [] | |
| all_archs = [] | |
| for archs in d.values(): | |
| all_archs += archs | |
| for title, supported_models in d.items(): | |
| f.write(f"## {title}\n\n") | |
| for item in supported_models: | |
| f.write(f" - {item}\n") | |
| f.write("\n") | |
| summary.append((title, len(supported_models))) | |
| md_summary = pd.DataFrame.from_records(summary, columns=["task", "number of architectures"]).to_markdown() | |
| f.write("# Summary\n\n") | |
| f.write(md_summary) | |
| f.write("\n\n") | |
| num_total_archs = len(set(all_archs)) | |
| f.write(f"Total unique architectures: {num_total_archs}\n\n") | |
| f.write(f"Total validated architecture/task combinations: {len(all_archs)}\n\n") | |
| return Path(RESULT_FILE).read_text(), RESULT_FILE | |
| demo = gr.Interface( | |
| fn=generate_model_list, | |
| title="List of validated architectures for optimum[openvino]", | |
| inputs=[], | |
| outputs=[gr.Markdown(), gr.File()], | |
| allow_flagging="never", | |
| ) | |
| demo.launch(server_name="0.0.0.0") | |