import gradio as gr import requests import pandas as pd from huggingface_hub.hf_api import SpaceInfo import matplotlib.pyplot as plt import plotly.express as px model_perf_table = "data/test.csv" logo_path = "img/image.png" def get_blocks_party_spaces(): df = pd.read_csv(model_perf_table) df = df.sort_values(by=['score'],ascending=False) return df def get_blocks_party_spaces_with_formula(formula=None): # get the dataframe df = get_blocks_party_spaces() if formula: try: df[str(formula)] = df.eval(formula) except: pass # Handle this error properly in your code return df def create_scatter(x, y, z): df = get_blocks_party_spaces() if z is None or z == 'None' or z == '': fig, ax = plt.subplots() ax.scatter(list(df[x]),list(df[y]), marker='o', s=50, c='blue') for i, label in enumerate(list(df['model'])): ax.text(list(df[x])[i],list(df[y])[i],str(label)) ax.set_xlabel(x) ax.set_ylabel(y) ax.spines['top'].set_visible(False) ax.spines['right'].set_visible(False) plt.grid(axis='y', linestyle='--', alpha=0.7) else: fig = px.scatter_3d(df, x=x, y=y, z=z, text=df['model']) # Set axis labels and title fig.update_layout(scene=dict( xaxis_title=x, yaxis_title=y, zaxis_title=z, ), title='3D Scatter Plot' ) return fig block = gr.Blocks() with block: # gr.outputs.HTML(f'logo') # img = gr.Image(logo_path,shape=[1,2]).style( rounded=False) gr.Markdown(f""" # 🦙💦SpitFight - Leaderboard for LLM """) with gr.Tabs(): with gr.TabItem("Leaderboard"): with gr.Row(): data = gr.outputs.Dataframe(type="pandas") with gr.Row(): formula_input = gr.inputs.Textbox(lines=1, label="User Designed Column", placeholder = 'e.g. verbosity/latency') data_run = gr.Button("Add To Table") data_run.click(get_blocks_party_spaces_with_formula, inputs=formula_input, outputs=data) # running the function on page load in addition to when the button is clicked with gr.Row(): with gr.Column(): scatter_input = [gr.inputs.Dropdown(choices=get_blocks_party_spaces().columns.tolist()[1:], label="X-axis"), gr.inputs.Dropdown(choices=get_blocks_party_spaces().columns.tolist()[1:], label="Y-axis"), gr.inputs.Dropdown(choices=[None]+get_blocks_party_spaces().columns.tolist()[1:], label="Z-axis (Optional)")] fig_run = gr.Button("Generate Figure") with gr.Column(): gen_figure = gr.Plot()# gr.outputs.Image(type="pil") fig_run.click(create_scatter, inputs=scatter_input, outputs=gen_figure) with gr.TabItem("About"): gr.Markdown(f""" ## Metrics: - **Human Score**: The average score given by human evaluators. - **Throughput**: The number of tokens generated per second. - **Verbosity**: The average number of generated tokens in the model's response. - **Latency**: The average time it takes for the model to generate a response. - **Memory**: The base memory usage of the model. """) block.load(get_blocks_party_spaces_with_formula, inputs=None, outputs=data) block.launch(share=True) # block.launch( )