Spaces:
Sleeping
Sleeping
import pandas as pd | |
import gradio as gr | |
import os | |
from gradio_rangeslider import RangeSlider | |
from src.filter_utils import filter, filter_cols | |
# Main Leaderboard containing everything | |
text_leaderboard = pd.read_csv(os.path.join('assets', 'merged_data.csv')) | |
text_leaderboard = text_leaderboard.sort_values(by='Clemscore', ascending=False) | |
open_weight_df = text_leaderboard[text_leaderboard['Open Weight'] == True] | |
if not open_weight_df.empty: # Check if filtered df is non-empty | |
max_parameter_size = open_weight_df['Parameters (B)'].max() | |
# Short leaderboard containing fixed columns | |
short_leaderboard = filter_cols(text_leaderboard) | |
## Extract data | |
langs = [] | |
licenses = [] | |
ip_prices = [] | |
op_prices = [] | |
latencies = [] | |
parameters = [] | |
contexts = [] | |
dates = [] | |
for i in range(len(text_leaderboard)): | |
lang_splits = text_leaderboard.iloc[i]['Languages'].split(',') | |
lang_splits = [s.strip() for s in lang_splits] | |
langs += lang_splits | |
license_name = text_leaderboard.iloc[i]['License Name'] | |
licenses.append(license_name) | |
ip_prices.append(text_leaderboard.iloc[i]['Input $/1M tokens']) | |
op_prices.append(text_leaderboard.iloc[i]['Output $/1M tokens']) | |
latencies.append(text_leaderboard.iloc[i]['Latency (s)']) | |
parameters.append(text_leaderboard.iloc[i]['Parameters (B)']) | |
contexts.append(text_leaderboard.iloc[i]['Context Size (k)']) | |
dates.append(text_leaderboard.iloc[i]['Release Date']) | |
langs = list(set(langs)) | |
langs.sort() | |
licenses = list(set(licenses)) | |
licenses.sort() | |
max_input_price = max(ip_prices) | |
max_output_price = max(op_prices) | |
max_latency = max(latencies) | |
min_parameters = 0 if pd.isna(min(parameters)) else min(parameters) | |
max_parameter = max_parameter_size | |
parameter_step = 1 | |
print(f"MIN {min_parameters}, MAX {max_parameter}") | |
min_context = min(contexts) | |
max_context = max(contexts) | |
context_step = 8 | |
min_date = min(dates) | |
max_date = max(dates) | |
TITLE = """<h1 align="center" id="space-title"> LLM Calculator βοΈβ‘ ππ°</h1>""" | |
CSS = """ | |
#double-slider-1 {height: 100px} | |
#double-slider-2 {height: 100px} | |
#double-slider-3 {height: 100px} | |
#double-slider-4 {height: 100px} | |
""" | |
llm_calc_app = gr.Blocks(css=CSS) | |
with llm_calc_app: | |
gr.HTML(TITLE) | |
################################################## | |
with gr.Row(): | |
##################################### | |
# First Column | |
#################################### | |
## Language Select | |
with gr.Column(): | |
with gr.Row(): | |
lang_dropdown = gr.Dropdown( | |
choices=langs, | |
value=[], | |
multiselect=True, | |
label="Select Languages π£οΈ" | |
) | |
with gr.Row(): | |
start_date = gr.DateTime( | |
value=min_date, | |
type="string", | |
label="Release Date Range π - Start Date" | |
) | |
end_date = gr.DateTime( | |
value=max_date, | |
type="string", | |
label="End Date" | |
) | |
# Multiodality Select | |
with gr.Row(): | |
multimodal_checkbox = gr.CheckboxGroup( | |
choices=['Image', 'Multi-Image', 'Audio', 'Video'], | |
value=[], | |
label="Select Additional Modalities π·π§π¬", | |
) | |
# Open/Commercial Selection | |
with gr.Row(): | |
open_weight_checkbox = gr.CheckboxGroup( | |
choices=['Open', 'Commercial'], | |
value=['Open', 'Commercial'], | |
label="Filter by Model Type π πΌ", | |
) | |
# License selection | |
with gr.Row(): | |
license_checkbox = gr.CheckboxGroup( | |
choices=licenses, | |
value=licenses, | |
label="License Type π‘οΈ", | |
) | |
############################################################# | |
# Second Column | |
############################################################# | |
with gr.Column(): | |
####### LOG SLIDER 1 ########### | |
with gr.Row(): | |
parameter_slider = RangeSlider( | |
minimum=0, | |
maximum=max_parameter, | |
label=f"Select Parameter Range π {int(min_parameters)}B - {int(max_parameter)}B+", | |
elem_id="double-slider-1", | |
step=parameter_step | |
) | |
########### LOG SLIDER 2 ################ | |
with gr.Row(): | |
context_slider = RangeSlider( | |
minimum=0, | |
maximum=max_context, | |
label="Select Context Range (k) π", | |
elem_id="double-slider-2", | |
step=context_step | |
) | |
############# PRICE SLIDER 1 ############### | |
with gr.Row(): | |
input_pricing_slider = RangeSlider( | |
minimum=0, | |
maximum=max_input_price, | |
value=(0, max_input_price), | |
label="Select Price range π²/1M input tokens", | |
elem_id="double-slider-3" | |
) | |
############### PRICE SLIDER 2 ############### | |
with gr.Row(): | |
output_pricing_slider = RangeSlider( | |
minimum=0, | |
maximum=max_output_price, | |
value=(0, max_output_price), | |
label="Select Price range π²/1M output tokens", | |
elem_id="double-slider-4" | |
) | |
with gr.Row(): | |
""" | |
Main Leaderboard Row | |
""" | |
leaderboard_table = gr.Dataframe( | |
value=short_leaderboard, | |
elem_id="text-leaderboard-table", | |
interactive=False, | |
visible=True, | |
datatype=['html', 'number', 'number', 'date', 'number', 'number', 'number', 'number', 'html'] | |
) | |
dummy_leaderboard_table = gr.Dataframe( | |
value=text_leaderboard, | |
elem_id="dummy-leaderboard-table", | |
interactive=False, | |
visible=False | |
) | |
lang_dropdown.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
parameter_slider.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
input_pricing_slider.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
output_pricing_slider.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
multimodal_checkbox.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
open_weight_checkbox.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
context_slider.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
start_date.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
end_date.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
license_checkbox.change( | |
filter, | |
[dummy_leaderboard_table, lang_dropdown, parameter_slider, | |
input_pricing_slider, output_pricing_slider, multimodal_checkbox, | |
context_slider, open_weight_checkbox, start_date, end_date, license_checkbox], | |
[leaderboard_table], | |
queue=True | |
) | |
llm_calc_app.load() | |
llm_calc_app.queue() | |
llm_calc_app.launch() | |
""" | |
model_name, input_price, output_price, | |
multimodality_image,multimodality_multiple_image,multimodality_audio,multimodality_video, | |
source,licence_name,licence_url,languages,release_date, | |
parameters_estimated,parameters_actual, | |
open_weight,context, | |
additional_prices_context_caching, | |
additional_prices_context_storage, | |
additional_prices_image_input,additional_prices_image_output,additional_prices_video_input,additional_prices_video_output,additional_prices_audio_input,additional_prices_audio_output,clemscore_v1.6.5_multimodal,clemscore_v1.6.5_ascii,clemscore_v1.6,latency_v1.6,latency_v1.6.5_multimodal,latency_v1.6.5_ascii, | |
average_clemscore,average_latency,parameters | |
Final list | |
model_name, input_price, output_price, | |
multimodality_image,multimodality_multiple_image,multimodality_audio,multimodality_video, | |
source,licence_name,licence_url,languages,release_date, open_weight,context, average_clemscore,average_latency,parameters | |
Filter | |
multimodality_image,multimodality_multiple_image,multimodality_audio,multimodality_video, | |
licence_name+licence_url, languages, release_date, open_weight | |
RR | |
model_name, input_price, output_price, | |
source, release_date | |
""" | |