File size: 2,837 Bytes
c8763bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import gradio as gr
import pandas as pd
from huggingface_hub import HfApi
from huggingface_hub import Repository
from apscheduler.schedulers.background import BackgroundScheduler

from src.assets.text_content import *
from src.assets.css_html_js import custom_css, get_window_url_params

OPTIMUM_TOKEN = os.environ.get("OPTIMUM_TOKEN", None)

LLM_PERF_LEADERBOARD_REPO = "optimum/llm-perf-leaderboard"
LLM_PERF_DATASET_REPO = "optimum/llm-perf"


api = HfApi()


def restart_space():
    api.restart_space(
        repo_id=LLM_PERF_LEADERBOARD_REPO, token=OPTIMUM_TOKEN
    )


def load_all_info_from_hub():
    llm_perf_repo = None
    if OPTIMUM_TOKEN:
        llm_perf_repo = Repository(
            local_dir="./llm-perf/",
            clone_from=LLM_PERF_DATASET_REPO,
            token=OPTIMUM_TOKEN,
            repo_type="dataset",
        )
        llm_perf_repo.git_pull()

    return llm_perf_repo


llm_perf_repo = load_all_info_from_hub()


def has_no_nan_values(df, columns):
    return df[columns].notna().all(axis=1)


def has_nan_values(df, columns):
    return df[columns].isna().any(axis=1)


def get_leaderboard_df():
    if llm_perf_repo:
        llm_perf_repo.git_pull()

    df = pd.read_csv("./llm-perf/reports/cuda_1_100/inference_report.csv")

    return df


original_df = get_leaderboard_df()
leaderboard_df = original_df.copy()


def refresh():
    leaderboard_df = get_leaderboard_df()

    return leaderboard_df


demo = gr.Blocks(css=custom_css)
with demo:
    gr.HTML(TITLE)
    gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text")

    with gr.Tabs(elem_classes="tab-buttons") as tabs:
        with gr.TabItem("πŸ… LLM-Perf Benchmark", elem_id="llm-perf-benchmark-tab-table", id=0):
            leaderboard_table_lite = gr.components.Dataframe(
                value=leaderboard_df,
                headers=leaderboard_df.columns.tolist(),
                # datatype=TYPES_LITE,
                max_rows=None,
                elem_id="leaderboard-table-lite",
            )

    with gr.Row():
        with gr.Column():
            with gr.Accordion("πŸ“™ Citation", open=False):
                citation_button = gr.Textbox(
                    value=CITATION_BUTTON_TEXT,
                    label=CITATION_BUTTON_LABEL,
                    elem_id="citation-button",
                ).style(show_copy_button=True)
        with gr.Column():
            with gr.Accordion("✨ CHANGELOG", open=False):
                changelog = gr.Markdown(
                    CHANGELOG_TEXT, elem_id="changelog-text")

    dummy = gr.Textbox(visible=False)
    demo.load(
        dummy,
        tabs,
        _js=get_window_url_params,
    )

scheduler = BackgroundScheduler()
scheduler.add_job(restart_space, "interval", seconds=3600)
scheduler.start()
demo.queue(concurrency_count=40).launch()