MMLU-by-task / mmlu_data_to_example.py
Corey Morris
has data and is sortable, but does not have the model names as a row
cd2dfb2
import gradio as gr
import requests
import pandas as pd
class MultiURLData:
def __init__(self, file_path):
self.file_path = file_path
def fetch_data(self):
# Read URLs from a file, one per line
with open(self.file_path, 'r') as f:
file_urls = [line.strip() for line in f.readlines()]
dataframes = []
for url in file_urls:
# Derive column names from the URLs
column_name = url.split('/')[-1].split('_')[0]
# Load data from URL
response = requests.get(url)
data = response.json()
# Convert data into a DataFrame
df = pd.DataFrame(data['results']).T
# Rename 'acc' column to respective file names
df = df.rename(columns={'acc': column_name})
# Remove 'hendrycksTest-' from the index
df.index = df.index.str.replace('hendrycksTest-', '')
dataframes.append(df[[column_name]]) # keep only the column of interest
# Merge the dataframes
# Merge the dataframes on index
data = pd.concat(dataframes, axis=1)
# Transpose the dataframe to swap rows and columns
data = data.transpose()
# Select only columns 'moral_scenarios' and 'moral_disputes'
data = data[['moral_scenarios', 'moral_disputes']]
return data
data_provider = MultiURLData("file_urls.txt")
block = gr.Blocks()
with block:
gr.Markdown("""Leaderboard""")
with gr.Tabs():
with gr.TabItem("Leaderboard"):
with gr.Row():
data = gr.outputs.Dataframe(type="pandas")
with gr.Row():
data_run = gr.Button("Refresh")
data_run.click(data_provider.fetch_data, inputs=None, outputs=data)
# running the function on page load in addition to when the button is clicked
block.load(data_provider.fetch_data, inputs=None, outputs=data)
block.launch()