Spaces:
Running
Running
import io | |
import gradio as gr | |
from gradio_leaderboard import Leaderboard | |
from apscheduler.schedulers.background import BackgroundScheduler | |
from src.about import ( | |
INTRODUCTION_TEXT, | |
LLM_BENCHMARKS_TEXT, | |
TITLE, | |
TITLE_IMAGE, | |
) | |
from src.display.css_html_js import custom_css | |
from src.display.utils import ( | |
BENCHMARK_COLS, | |
COLS, | |
AutoEvalColumn, | |
fields, | |
) | |
from src.envs import API, EVAL_RESULTS_PATH, REPO_ID | |
from src.populate import get_leaderboard_df | |
def restart_space(): | |
API.restart_space(repo_id=REPO_ID) | |
LEADERBOARD_DF = get_leaderboard_df(EVAL_RESULTS_PATH, COLS, BENCHMARK_COLS) | |
def init_leaderboard(dataframe): | |
if dataframe is None or dataframe.empty: | |
raise ValueError("Leaderboard DataFrame is empty or None.") | |
return Leaderboard( | |
value=dataframe, | |
datatype=[c.type for c in fields(AutoEvalColumn)], | |
search_columns=[AutoEvalColumn.model.name], | |
interactive=False | |
) | |
def download_csv(): | |
with io.StringIO() as buffer: | |
LEADERBOARD_DF.to_csv(buffer, index=False) | |
return buffer.getvalue() | |
gui = gr.Blocks(css=custom_css) | |
with gui: | |
gr.HTML(TITLE_IMAGE) | |
gr.HTML(TITLE) | |
gr.Markdown(INTRODUCTION_TEXT, elem_classes="markdown-text") | |
with gr.Tabs(elem_classes="tab-buttons") as tabs: | |
with gr.TabItem("๐ LLM Benchmark", elem_id="llm-benchmark-tab-table", id=0): | |
leaderboard = init_leaderboard(LEADERBOARD_DF.style.highlight_max(color = 'lightgreen', axis=0).data) | |
with gr.TabItem("๐ About", elem_id="llm-benchmark-tab-table", id=2): | |
gr.Markdown(LLM_BENCHMARKS_TEXT, elem_classes="markdown-text") | |
with gr.Row(): | |
with gr.Accordion("๐พ Download as CSV", open=False): | |
download_button = gr.Button("Click to Generate CSV File") | |
csv_output = gr.File(label="Generated File") | |
def generate_csv_file(): | |
csv_content = download_csv() | |
csv_output.visible=True | |
with open("bluebench.csv", "w", encoding="utf-8") as f: | |
f.write(csv_content) | |
return "bluebench.csv" | |
download_button.click(fn=generate_csv_file, outputs=csv_output) | |
scheduler = BackgroundScheduler() | |
scheduler.add_job(restart_space, "interval", seconds=1800) | |
scheduler.start() | |
gui.queue(default_concurrency_limit=40).launch() |