Spaces:
Running
Running
File size: 8,310 Bytes
711a69b 05222de 0762cf8 05222de be0239b 6db8de6 711a69b be0239b 65de7c4 be0239b 711a69b 0548509 65de7c4 7dd3ffd 65de7c4 7dd3ffd 9d7fc91 7dd3ffd 9d7fc91 7dd3ffd 9d7fc91 7dd3ffd be0239b 711a69b be0239b 65e4811 be0239b 711a69b be0239b 711a69b 388e11b be0239b 388e11b 7dd3ffd be0239b 6d69390 7dd3ffd 65de7c4 cc21640 be0239b 1833d81 aaf0c71 be0239b 711a69b be0239b 711a69b be0239b 711a69b 218e8a1 711a69b be0239b 711a69b 73cf0ca be0239b 45b9051 711a69b 73cf0ca be0239b 73cf0ca 8275743 be0239b f2f18bb 73cf0ca 21a7ca2 73cf0ca 711a69b be0239b 7dd3ffd be0239b 7dd3ffd be0239b 7dd3ffd e0290d0 3e202b5 711a69b 9eca770 711a69b 7dd3ffd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 |
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",
]
) |