Delete hf-modelf-family-stats-gradio.py
Browse files
hf-modelf-family-stats-gradio.py
DELETED
@@ -1,88 +0,0 @@
|
|
1 |
-
import tempfile
|
2 |
-
import csv
|
3 |
-
import pandas as pd
|
4 |
-
import gradio as gr
|
5 |
-
from huggingface_hub import HfApi
|
6 |
-
from pathlib import Path
|
7 |
-
|
8 |
-
def get_model_stats(search_term):
|
9 |
-
# Initialize the API
|
10 |
-
api = HfApi()
|
11 |
-
|
12 |
-
# Create a temporary file for the CSV
|
13 |
-
temp_dir = tempfile.mkdtemp()
|
14 |
-
output_file = Path(temp_dir) / f"{search_term}_models_alltime.csv"
|
15 |
-
|
16 |
-
# Get the generator of models with the working sort parameter
|
17 |
-
print(f"Fetching {search_term} models with download statistics...")
|
18 |
-
models_generator = api.list_models(
|
19 |
-
search=search_term,
|
20 |
-
expand=["downloads", "downloadsAllTime"], # Get both 30-day and all-time downloads
|
21 |
-
sort="_id" # Sort by ID to avoid timeout issues
|
22 |
-
)
|
23 |
-
|
24 |
-
# Create and write to CSV
|
25 |
-
with open(output_file, 'w', newline='', encoding='utf-8') as csvfile:
|
26 |
-
csv_writer = csv.writer(csvfile)
|
27 |
-
# Write header
|
28 |
-
csv_writer.writerow(["Model ID", "Downloads (30 days)", "Downloads (All Time)"])
|
29 |
-
|
30 |
-
# Process models
|
31 |
-
model_count = 0
|
32 |
-
for model in models_generator:
|
33 |
-
# Write to CSV
|
34 |
-
csv_writer.writerow([
|
35 |
-
getattr(model, 'id', "Unknown"),
|
36 |
-
getattr(model, 'downloads', 0), # Last 30 days downloads
|
37 |
-
getattr(model, 'downloads_all_time', 0)
|
38 |
-
])
|
39 |
-
model_count += 1
|
40 |
-
|
41 |
-
# Read the CSV file into a pandas DataFrame
|
42 |
-
df = pd.read_csv(output_file)
|
43 |
-
|
44 |
-
# Return both the DataFrame, status message, and the CSV file path
|
45 |
-
return df, f"Found {model_count} models for search term '{search_term}'", str(output_file)
|
46 |
-
|
47 |
-
# Create the Gradio interface
|
48 |
-
with gr.Blocks(title="Hugging Face Model Statistics") as demo:
|
49 |
-
gr.Markdown("# Hugging Face Model Statistics")
|
50 |
-
gr.Markdown("Enter a search term to find model statistics from Hugging Face Hub")
|
51 |
-
|
52 |
-
with gr.Row():
|
53 |
-
search_input = gr.Textbox(
|
54 |
-
label="Search Term",
|
55 |
-
placeholder="Enter a model name or keyword (e.g., 'gemma', 'llama')",
|
56 |
-
value="gemma"
|
57 |
-
)
|
58 |
-
search_button = gr.Button("Search")
|
59 |
-
|
60 |
-
with gr.Row():
|
61 |
-
output_table = gr.Dataframe(
|
62 |
-
headers=["Model ID", "Downloads (30 days)", "Downloads (All Time)"],
|
63 |
-
datatype=["str", "number", "number"],
|
64 |
-
label="Model Statistics"
|
65 |
-
)
|
66 |
-
status_message = gr.Textbox(label="Status")
|
67 |
-
|
68 |
-
with gr.Row():
|
69 |
-
download_button = gr.Button("Download CSV")
|
70 |
-
csv_file = gr.File(label="CSV File", visible=False)
|
71 |
-
|
72 |
-
# Store the CSV file path in a state
|
73 |
-
csv_path = gr.State()
|
74 |
-
|
75 |
-
search_button.click(
|
76 |
-
fn=get_model_stats,
|
77 |
-
inputs=search_input,
|
78 |
-
outputs=[output_table, status_message, csv_path]
|
79 |
-
)
|
80 |
-
|
81 |
-
download_button.click(
|
82 |
-
fn=lambda x: x,
|
83 |
-
inputs=csv_path,
|
84 |
-
outputs=csv_file
|
85 |
-
)
|
86 |
-
|
87 |
-
if __name__ == "__main__":
|
88 |
-
demo.launch()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|