Spaces:
Runtime error
Runtime error
| # Import packages | |
| from dash import Dash, html, dcc, callback, Input, Output | |
| import pandas as pd | |
| import pickle | |
| import plotly.express as px | |
| from graphs.model_market_share import create_plotly_stacked_area_chart | |
| from graphs.model_characteristics import create_plotly_language_concentration_chart | |
| # Incorporate data | |
| df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder2007.csv') | |
| # Initialize the app | |
| app = Dash() | |
| server = app.server | |
| # Load all pickle files in data_frames/ as loop | |
| with open('data_frames/model_topk_df.pkl', 'rb') as f: | |
| model_topk_df = pickle.load(f) | |
| with open('data_frames/model_gini_df.pkl', 'rb') as f: | |
| model_gini_df = pickle.load(f) | |
| with open('data_frames/model_hhi_df.pkl', 'rb') as f: | |
| model_hhi_df = pickle.load(f) | |
| with open('data_frames/language_concentration_df.pkl', 'rb') as f: | |
| language_concentration_df = pickle.load(f) | |
| with open('data_frames/download_license_cumsum_df.pkl', 'rb') as f: | |
| license_concentration_df = pickle.load(f) | |
| TEMP_MODEL_EVENTS = { | |
| # "Yolo World Mirror": "2024-03-01", | |
| "Llama 3": "2024-04-17", | |
| "Stable Cascade": "2024-02-02", | |
| "Stable Diffusion 3": "2024-05-30", | |
| # "embed/upscale": "2023-03-24", | |
| "DeepSeek-R1": "2025-01-20", | |
| "Gemma-3 12B QAT": "2025-04-15", # gemma-3-12b-it-qat-4bit | |
| # "Qwen": "2025-03-05", | |
| # "Flux RedFlux": "2025-04-12", | |
| # "DeepSeek-V3": "2025-03-24", | |
| # "bloom": "2022-05-19", | |
| "DALLE2-PyTorch": "2022-06-25", | |
| "Stable Diffusion": "2022-08-10", | |
| "CLIP ViT": "2021-01-05", | |
| "YOLOv8": "2023-04-26", | |
| "Sentence Transformer MiniLM v2": "2021-08-30", | |
| } | |
| PALETTE_0 = [ | |
| "#335C67", | |
| "#FFF3B0", | |
| "#E09F3E", | |
| "#9E2A2B", | |
| "#540B0E" | |
| ] | |
| fig = create_plotly_stacked_area_chart( | |
| model_topk_df, model_gini_df, model_hhi_df, TEMP_MODEL_EVENTS, PALETTE_0 | |
| ) | |
| LANG_SEGMENT_ORDER = [ | |
| 'Monolingual: EN', 'Monolingual: HR', 'Monolingual: M/LR', | |
| 'Multilingual: HR', 'Multilingual', 'Unknown', | |
| ] | |
| fig2 = create_plotly_language_concentration_chart( | |
| language_concentration_df, 'time', 'metric', 'value', LANG_SEGMENT_ORDER, PALETTE_0 | |
| ) | |
| LICENSE_SEGMENT_ORDER = [ | |
| "Open Use", "Open Use (Acceptable Use Policy)", "Open Use (Non-Commercial Only)", "Attribution", | |
| "Acceptable Use Policy", "Non-Commercial Only", "Undocumented", "Undocumented (Acceptable Use Policy)", | |
| ] | |
| fig3 = create_plotly_language_concentration_chart( | |
| license_concentration_df, 'period', 'status', 'percent', LICENSE_SEGMENT_ORDER, PALETTE_0 | |
| ) | |
| # Make global font family | |
| fig.update_layout(font_family="Inter") | |
| fig2.update_layout(font_family="Inter") | |
| fig3.update_layout(font_family="Inter") | |
| # App layout | |
| app.layout = html.Div( | |
| [ | |
| html.Div(children='Visualizing the Open Model Ecosystem', style={'fontSize': 28, 'fontWeight': 'bold', 'marginBottom': 10}), | |
| html.Div(children='An interactive dashboard to explore trends in open models on Hugging Face', style={'fontSize': 16, 'marginBottom': 20}), | |
| html.Hr(), | |
| dcc.Tabs([ | |
| dcc.Tab(label='Model Market Share', children=[ | |
| dcc.Graph(figure=fig, id='stacked-area-chart'), | |
| ]), | |
| dcc.Tab(label='Model Characteristics', children=[ | |
| dcc.Graph(id='language-concentration-chart'), | |
| html.Div([ | |
| dcc.Dropdown(['Language Concentration', 'Architecture', 'License', 'Method'], 'Language Concentration', id='dropdown'), | |
| ]), | |
| ]), | |
| ]) | |
| ], | |
| style={'fontFamily': 'Inter'} | |
| ) | |
| # On dropdown change, update graph | |
| def update_graph(selected_metric): | |
| if selected_metric == 'Language Concentration': | |
| return fig2 | |
| elif selected_metric == 'License': | |
| return fig3 | |
| # Run the app | |
| if __name__ == '__main__': | |
| app.run(debug=True) | |