Spaces:
Running
Running
import gradio as gr | |
import src.dependency # noqa | |
from src.assets import custom_css | |
# from src.attention import create_attn_plots | |
from src.content import ABOUT, CITATION_BUTTON, CITATION_BUTTON_LABEL, LOGO, TITLE | |
from src.hardware import load_hardware_configs | |
from src.leaderboard import create_leaderboard_table | |
from src.llm_perf import get_llm_perf_df | |
from src.map import create_lat_score_mem_plot | |
from src.panel import ( | |
create_control_callback, | |
create_control_panel, | |
create_select_callback, | |
) | |
configs = load_hardware_configs("hardware.yaml") | |
demo = gr.Blocks( | |
css=custom_css, | |
theme=gr.themes.Default(primary_hue="indigo", secondary_hue="indigo"), | |
) | |
with demo: | |
gr.HTML(LOGO, elem_classes="logo") | |
gr.HTML(TITLE, elem_classes="title") | |
####################### HARDWARE TABS ####################### | |
with gr.Tabs(elem_classes="tabs"): | |
for id, config in enumerate(configs): | |
with gr.TabItem(config.description, id=id): | |
####################### HARDWARE DETAILS ####################### | |
if config.detail: | |
gr.Markdown(config.detail, elem_classes="descriptive-text") | |
# ####################### CONTROL PANEL ####################### | |
( | |
filter_button, | |
machine_value, | |
subsets_value, | |
backends_value, | |
hardware_type_value, | |
score_slider, | |
memory_slider, | |
backend_checkboxes, | |
datatype_checkboxes, | |
optimization_checkboxes, | |
quantization_checkboxes, | |
kernels_checkboxes, | |
) = create_control_panel( | |
machine=config.machine, | |
subsets=config.subsets, | |
backends=config.backends, | |
hardware_type=config.hardware_type, | |
hardware_provider=config.hardware_provider, | |
) | |
####################### HARDWARE SUBTABS ####################### | |
with gr.Tabs(elem_classes="subtabs"): | |
open_llm_perf_df = get_llm_perf_df( | |
machine=config.machine, | |
subsets=config.subsets, | |
backends=config.backends, | |
hardware_type=config.hardware_type, | |
) | |
####################### LEADERBOARD TAB ####################### | |
with gr.TabItem("Leaderboard π ", id=0): | |
search_bar, columns_checkboxes, leaderboard_table = ( | |
create_leaderboard_table(open_llm_perf_df) | |
) | |
if ( | |
config.hardware_provider != "intel" | |
): # TODO intel CPU does not measure the memory requirements correctly, so disable the graph feature until we fix the underlying issue | |
with gr.TabItem("Find Your Best Model π§", id=1): | |
lat_score_mem_plot = create_lat_score_mem_plot( | |
open_llm_perf_df | |
) | |
###################### ATTENTIONS SPEEDUP TAB ####################### | |
# with gr.TabItem("Attention π", id=2): | |
# attn_prefill_plot, attn_decode_plot = create_attn_plots( | |
# open_llm_perf_df | |
# ) | |
# ####################### KERNELS SPEEDUP TAB ####################### | |
# with gr.TabItem("Kernels π", id=4): | |
# quant_krnl_prefill_plot, quant_krnl_decode_plot = ( | |
# create_quant_krnl_plots(llm_perf_df) | |
# ) | |
####################### CONTROL CALLBACK ####################### | |
create_control_callback( | |
filter_button, | |
# inputs | |
machine_value, | |
subsets_value, | |
backends_value, | |
hardware_type_value, | |
score_slider, | |
memory_slider, | |
backend_checkboxes, | |
datatype_checkboxes, | |
optimization_checkboxes, | |
quantization_checkboxes, | |
kernels_checkboxes, | |
# interactive | |
columns_checkboxes, | |
search_bar, | |
# outputs | |
leaderboard_table, | |
lat_score_mem_plot, | |
# attn_prefill_plot, | |
# attn_decode_plot, | |
# quant_krnl_prefill_plot, | |
# quant_krnl_decode_plot, | |
) | |
create_select_callback( | |
# inputs | |
machine_value, | |
subsets_value, | |
backends_value, | |
hardware_type_value, | |
# interactive | |
columns_checkboxes, | |
search_bar, | |
# outputs | |
leaderboard_table, | |
) | |
####################### ABOUT TAB ####################### | |
with gr.TabItem("About π", id=len(configs)): | |
gr.Markdown(ABOUT, elem_classes="descriptive-text") | |
####################### CITATION | |
with gr.Row(): | |
with gr.Accordion("π Citation", open=False): | |
citation_button = gr.Textbox( | |
value=CITATION_BUTTON, | |
label=CITATION_BUTTON_LABEL, | |
elem_id="citation-button", | |
show_copy_button=True, | |
) | |
if __name__ == "__main__": | |
# Launch demo | |
demo.queue().launch() | |