helenai's picture
Update app.py
2cd1883 verified
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("(OV.*PipelineTest)", 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")