File size: 3,961 Bytes
ab59957
4ecae57
 
43ee4de
 
 
4ecae57
43ee4de
 
 
4ecae57
 
 
 
ab59957
3b81b14
43ee4de
 
 
 
 
 
 
ab59957
4ecae57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3b81b14
4ecae57
 
 
 
43ee4de
4ecae57
 
 
43ee4de
 
3b81b14
4ecae57
43ee4de
 
4ecae57
 
 
43ee4de
4ecae57
43ee4de
 
 
4ecae57
43ee4de
 
4ecae57
 
 
43ee4de
4ecae57
43ee4de
 
 
 
 
 
 
 
4ecae57
43ee4de
4ecae57
 
 
43ee4de
3b81b14
4ecae57
43ee4de
4ecae57
43ee4de
3b81b14
43ee4de
4ecae57
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
import gradio as gr
from gradio_leaderboard import Leaderboard, ColumnFilter, SelectColumns
import pandas as pd
from apscheduler.schedulers.background import BackgroundScheduler
from huggingface_hub import snapshot_download

# Define dataset paths and constants
LEADERBOARD_PATH = "hf://datasets/alibayram/yapay_zeka_turkce_mmlu_liderlik_tablosu/data/train-00000-of-00001.parquet"
RESPONSES_PATH = "hf://datasets/alibayram/yapay_zeka_turkce_mmlu_model_cevaplari/data/train-00000-of-00001.parquet"
SECTION_RESULTS_PATH = "hf://datasets/alibayram/yapay_zeka_turkce_mmlu_bolum_sonuclari/data/train-00000-of-00001.parquet"
REPO_ID = "alibayram"
QUEUE_REPO = "queue-repo"
RESULTS_REPO = "results-repo"
TOKEN = "your_hf_token"

# Load datasets
try:
    leaderboard_data = pd.read_parquet(LEADERBOARD_PATH)
    model_responses_data = pd.read_parquet(RESPONSES_PATH)
    section_results_data = pd.read_parquet(SECTION_RESULTS_PATH)
except Exception as e:
    print(f"Error loading datasets: {e}")
    raise

# Initialize leaderboard
def init_leaderboard(dataframe):
    if dataframe is None or dataframe.empty:
        raise ValueError("Leaderboard DataFrame is empty or None.")
    return Leaderboard(
        value=dataframe,
        datatype=[col.dtype.name for col in dataframe.dtypes],
        select_columns=SelectColumns(
            default_selection=["model", "basari", "toplam_sure"],
            label="Select Columns to Display",
        ),
        search_columns=["model"],
        filter_columns=[
            ColumnFilter("family", type="checkboxgroup", label="Model Family"),
            ColumnFilter("quantization_level", type="checkboxgroup", label="Quantization Level"),
        ],
    )

# Refresh datasets
def restart_space():
    snapshot_download(repo_id=QUEUE_REPO, local_dir="queue_cache", repo_type="dataset", token=TOKEN)
    snapshot_download(repo_id=RESULTS_REPO, local_dir="results_cache", repo_type="dataset", token=TOKEN)

# Gradio app setup
demo = gr.Blocks(css=".container { max-width: 1200px; margin: auto; }")
with demo:
    gr.HTML("<h1>🏆 Turkish MMLU Leaderboard</h1>")
    gr.Markdown("Explore, evaluate, and compare AI model performance.")

    # Tabs for leaderboard, model responses, and submission
    with gr.Tabs() as tabs:
        with gr.TabItem("Leaderboard"):
            gr.Markdown("### Explore Leaderboard")
            leaderboard = init_leaderboard(leaderboard_data)
        
        with gr.TabItem("Model Responses"):
            gr.Markdown("### Model Responses")
            model_dropdown = gr.Dropdown(
                choices=leaderboard_data["model"].unique().tolist(), label="Select Model"
            )
            query_input = gr.Textbox(label="Search Questions")
            responses_table = gr.DataFrame()
            gr.Button("Search").click(
                lambda model, query: model_responses_data[model_responses_data["bolum"].str.contains(query)],
                inputs=[model_dropdown, query_input],
                outputs=responses_table,
            )
        
        with gr.TabItem("Submit Model"):
            gr.Markdown("### Submit Your Model for Evaluation")
            model_name = gr.Textbox(label="Model Name")
            revision = gr.Textbox(label="Revision", placeholder="main")
            precision = gr.Dropdown(
                choices=["float16", "int8", "bfloat16", "float32"], label="Precision", value="float16"
            )
            submit_button = gr.Button("Submit")
            submission_result = gr.Markdown()
            submit_button.click(
                lambda name, rev, prec: f"Submitted {name} with revision {rev} and precision {prec}.",
                inputs=[model_name, revision, precision],
                outputs=submission_result,
            )

# Scheduler for automatic updates
scheduler = BackgroundScheduler()
scheduler.add_job(restart_space, "interval", seconds=1800)
scheduler.start()

# Launch app
demo.queue(max_size=40).launch()