File size: 5,704 Bytes
c8763bd
134a499
51a4daf
ab5f5f1
76b423c
5662938
76b423c
565029d
 
 
 
 
 
 
 
 
c8763bd
565029d
b3a1bf0
 
51a4daf
 
 
 
c8763bd
0c0d434
6f3a090
ab5f5f1
ba300f2
 
 
 
 
 
 
2460b35
fc0121b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0c0d434
 
 
 
 
 
 
 
f152245
 
 
 
 
 
 
 
 
 
a8a6326
0c0d434
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a8a6326
0c0d434
 
 
 
 
 
 
 
 
 
 
 
d19e350
ba300f2
 
 
 
 
 
 
 
 
 
 
 
0c0d434
eb945e7
ab5f5f1
76b56d8
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
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:
    print("Building 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)
                        )
                    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,
            )
    print("Building demo end")

if __name__ == "__main__":
    demo.queue().launch(ssr_mode=False)