Spaces:
Running
Running
File size: 3,221 Bytes
465a95b |
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 |
import gradio as gr
import matplotlib.pyplot as plt
import numpy as np
from io import BytesIO
from PIL import Image
from src.dataloading import get_leaderboard_models_cached, get_leaderboard_datasets
from src.similarity import compute_similarity
# Set the backend to 'Agg' for non-GUI environments (optional)
import matplotlib
matplotlib.use('Agg')
def generate_plot():
# Generate data
x = np.linspace(0, 10, 100)
y = np.sin(x)
# Create figure
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title("Sine Wave")
# Save figure to a BytesIO buffer
buf = BytesIO()
fig.savefig(buf, format="png", bbox_inches="tight", facecolor="white", dpi=100)
plt.close(fig) # Close the figure to free memory
# Convert buffer to PIL Image
buf.seek(0)
img = Image.open(buf).convert("RGB")
return img
def validate_inputs(selected_model_a, selected_model_b, selected_dataset):
if not selected_model_a:
raise gr.Error("Please select Model A!")
if not selected_model_b:
raise gr.Error("Please select Model B!")
if not selected_dataset:
raise gr.Error("Please select a dataset!")
def display_similarity(model_a, model_b, dataset):
# Assuming compute_similarity returns a float or a string
similarity_score = compute_similarity(model_a, model_b, dataset)
return f"The similarity between {model_a} and {model_b} on {dataset} is: {similarity_score}"
with gr.Blocks(title="LLM Similarity Analyzer") as demo:
gr.Markdown("## Model Similarity Comparison Tool")
dataset_dropdown = gr.Dropdown(
choices=get_leaderboard_datasets(),
label="Select Dataset",
filterable=True,
interactive=True,
info="Leaderboard benchmark datasets"
)
model_a_dropdown = gr.Dropdown(
choices=get_leaderboard_models_cached(),
label="Select Model A",
filterable=True,
allow_custom_value=False,
info="Search and select models"
)
model_b_dropdown = gr.Dropdown(
choices=get_leaderboard_models_cached(),
label="Select Model B",
filterable=True,
allow_custom_value=False,
info="Search and select models"
)
generate_btn = gr.Button("Compute Similarity", variant="primary")
# Textbox to display the similarity result
similarity_output = gr.Textbox(
label="Similarity Result",
interactive=False
)
generate_btn.click(
fn=validate_inputs,
inputs=[model_a_dropdown, model_b_dropdown, dataset_dropdown],
queue=False
).then(
fn=display_similarity,
inputs=[model_a_dropdown, model_b_dropdown, dataset_dropdown],
outputs=similarity_output
)
clear_btn = gr.Button("Clear Selection")
clear_btn.click(
lambda: [None, None, None, ""],
outputs=[model_a_dropdown, model_b_dropdown, dataset_dropdown, similarity_output]
)
gr.Markdown("## Matplotlib Plot in Gradio")
plot_button = gr.Button("Generate Plot")
plot_output = gr.Image(label="Sine Wave Plot")
plot_button.click(fn=generate_plot, outputs=plot_output)
if __name__ == "__main__":
demo.launch()
|