Spaces:
Running
Running
| import sys | |
| import gradio as gr | |
| from gradio.themes.utils import colors | |
| from config import constants as C | |
| from handlers.leaderboard_handlers import create_leaderboard_handlers | |
| from results.parse import get_metadata, parse_agg, read_dataframe | |
| from data_processing import filter_leaderboard, generate_scatter_plot, Simulator | |
| from static.about import CITATION_BUTTON_LABEL, CITATION_BUTTON_TEXT | |
| from static.html_content import ( | |
| ABOUT_US_HTML, | |
| HEADER_HTML, | |
| INTRO_HTML, | |
| LC_FOOTNOTE_HTML, | |
| NAV_BUTTONS_HTML, | |
| REFERENCES_HTML, | |
| OTHER_MODELS_HTML, | |
| ) | |
| from style.css_html_js import custom_css | |
| def make_leaderboard_tab(state: Simulator, name: str, html: str=None): | |
| """ Create a leaderboard tab with the given name and state """ | |
| with gr.Tab(name): | |
| """" Add text box """ | |
| if html: | |
| gr.HTML(html) | |
| # 1st row filters (select task, benchmark and sim) | |
| with gr.Row(equal_height=True): | |
| with gr.Column(scale=4): | |
| task_radio = gr.Radio(choices=C.TASKS, label="Select Task", value=C.DEFAULT_TASK) | |
| with gr.Column(scale=3): | |
| benchmark_radio = gr.Radio( | |
| choices=[C.DEFAULT_BENCHMARK] + C.S2R_BENCHMARKS, | |
| label="Select Benchmark", | |
| value=C.DEFAULT_BENCHMARK, | |
| ) | |
| with gr.Column(scale=2, min_width=180): | |
| simulator_radio = gr.Radio( | |
| choices=C.SIMULATORS, | |
| value=C.SIMULATORS[0], | |
| label="Select Simulator", | |
| scale=1, | |
| ) | |
| # 2nd row filters (search, model type, params) | |
| with gr.Row(equal_height=True): | |
| search_box = gr.Textbox( | |
| label="Search Model", | |
| placeholder="Type model name...", | |
| scale=2, | |
| ) | |
| model_type_dropdown = gr.Radio( | |
| choices=C.MODEL_TYPES, | |
| label="Select Model Type", | |
| value=C.DEFAULT_MODEL_TYPE, | |
| scale=3, | |
| ) | |
| params_slider = gr.Slider( | |
| minimum=state.get_current_df()["Params"].min(), | |
| maximum=C.DEFAULT_MAX_PARAMS, | |
| value=C.DEFAULT_MAX_PARAMS, | |
| label="Max Params", | |
| step=1, | |
| scale=2, | |
| ) | |
| if name == "Other Models": | |
| show = False | |
| elem_classes = "dataframe-leaderboard dataframe-other-models" | |
| else: | |
| show = True | |
| elem_classes = "dataframe-leaderboard" | |
| # main leaderboard content | |
| leaderboard = gr.DataFrame( | |
| value=filter_leaderboard(C.DEFAULT_TASK, C.DEFAULT_BENCHMARK, C.DEFAULT_MODEL_TYPE, "", C.DEFAULT_MAX_PARAMS, state, name), | |
| headers="first row", | |
| show_row_numbers=show, | |
| wrap=True, | |
| datatype=["html", "html"], | |
| interactive=False, | |
| column_widths=["7%", "28%", "13%", "10%", "13%", "10%", "14%"], | |
| elem_classes=elem_classes, | |
| ) | |
| # caption for the Base vs Instruct models | |
| gr.HTML(LC_FOOTNOTE_HTML) | |
| return ( | |
| task_radio, | |
| benchmark_radio, | |
| simulator_radio, | |
| search_box, | |
| model_type_dropdown, | |
| params_slider, | |
| leaderboard, | |
| ) | |
| with gr.Blocks(css=custom_css, theme=gr.themes.Default(primary_hue=colors.emerald)) as app: | |
| # Load csv results | |
| df_icarus = read_dataframe(C.ICARUS_RESULTS) | |
| df_verilator = read_dataframe(C.VERILATOR_RESULTS) | |
| # Load aggregated scores | |
| df_agg_icarus = parse_agg(C.ICARUS_AGG) | |
| df_agg_verilator = parse_agg(C.VERILATOR_AGG) | |
| # columns of the csvs | |
| benchmarks, metrics, default_metric = get_metadata(df_icarus) | |
| # Each time we select a simulator, we need to use that sim's dataframe | |
| state = Simulator( | |
| icarus_df=df_icarus, | |
| icarus_agg=df_agg_icarus, | |
| verilator_df=df_verilator, | |
| verilator_agg=df_agg_verilator, | |
| ) | |
| # Header view | |
| gr.HTML(HEADER_HTML) | |
| gr.HTML(NAV_BUTTONS_HTML) | |
| gr.HTML(INTRO_HTML) | |
| # Main view | |
| with gr.Tabs() as tabs: | |
| # Leaderboard | |
| name_main = "Latest Leaderboard" | |
| ( | |
| task_radio_main, | |
| benchmark_radio_main, | |
| simulator_radio_main, | |
| search_box_main, | |
| model_type_dropdown_main, | |
| params_slider_main, | |
| leaderboard_main, | |
| ) = make_leaderboard_tab(state, name_main) | |
| # Other models | |
| name_other = "Other Models" | |
| ( | |
| task_radio_other, | |
| benchmark_radio_other, | |
| simulator_radio_other, | |
| search_box_other, | |
| model_type_dropdown_other, | |
| params_slider_other, | |
| leaderboard_other, | |
| ) = make_leaderboard_tab(state, name_other, html=OTHER_MODELS_HTML) | |
| # all plots using Plotly | |
| with gr.Tab("Plot View"): | |
| with gr.Row(equal_height=True): | |
| default_benchmark = C.S2R_BENCHMARKS[0] | |
| bubble_benchmark = gr.Dropdown( | |
| choices=benchmarks, | |
| label="Select Benchmark", | |
| value=default_benchmark, | |
| elem_classes="gr-dropdown", | |
| ) | |
| default_metric = C.NON_RTL_METRICS[0] | |
| bubble_metric = gr.Dropdown( | |
| choices=C.NON_RTL_METRICS, | |
| label="Select Metric", | |
| value=default_metric, | |
| ) | |
| with gr.Row(equal_height=True): | |
| scatter_plot = gr.Plot( | |
| value=generate_scatter_plot(default_benchmark, default_metric, state), | |
| label="Bubble Chart", | |
| elem_id="full-width-plot", | |
| ) | |
| # Markdown / Latex explaining our metrics | |
| with gr.Tab("Metrics Information"): | |
| with open("./static/metrics.md", "r") as file: | |
| gr.Markdown( | |
| file.read(), | |
| latex_delimiters=[ | |
| {"left": "$$", "right": "$$", "display": True}, | |
| {"left": "$", "right": "$", "display": False}, | |
| ], | |
| elem_classes="metrics-page", | |
| ) | |
| with gr.Tab("About Us"): | |
| gr.HTML(ABOUT_US_HTML) | |
| with gr.Tab("References"): | |
| gr.HTML(REFERENCES_HTML) | |
| with gr.Row(): | |
| with gr.Accordion("📙 Citation", open=False): | |
| citation_button = gr.Textbox( | |
| value=CITATION_BUTTON_TEXT, | |
| label=CITATION_BUTTON_LABEL, | |
| lines=14, | |
| elem_id="citation-button", | |
| show_copy_button=True, | |
| ) | |
| # all event handlers are declared at /handlers/ | |
| # if you need to add interactivity, then you'll need to add one! | |
| create_leaderboard_handlers( | |
| filter_leaderboard_fn=filter_leaderboard, | |
| generate_scatter_plot_fn=generate_scatter_plot, | |
| task_radio=task_radio_main, | |
| benchmark_radio=benchmark_radio_main, | |
| model_type_dropdown=model_type_dropdown_main, | |
| search_box=search_box_main, | |
| params_slider=params_slider_main, | |
| bubble_benchmark=bubble_benchmark, | |
| bubble_metric=bubble_metric, | |
| scatter_plot=scatter_plot, | |
| leaderboard=leaderboard_main, | |
| simulator_radio=simulator_radio_main, | |
| state=state, | |
| name=name_main, | |
| ) | |
| create_leaderboard_handlers( | |
| filter_leaderboard_fn=filter_leaderboard, | |
| generate_scatter_plot_fn=generate_scatter_plot, | |
| task_radio=task_radio_other, | |
| benchmark_radio=benchmark_radio_other, | |
| model_type_dropdown=model_type_dropdown_other, | |
| search_box=search_box_other, | |
| params_slider=params_slider_other, | |
| bubble_benchmark=bubble_benchmark, | |
| bubble_metric=bubble_metric, | |
| scatter_plot=scatter_plot, | |
| leaderboard=leaderboard_other, | |
| simulator_radio=simulator_radio_other, | |
| state=state, | |
| name=name_other, | |
| ) | |
| app.launch( | |
| allowed_paths=[ | |
| "logo_new.png", | |
| "hpai_logo_grad.png", | |
| "bsc-logo.png", | |
| ] | |
| ) |