Commit
•
1b8daa0
1
Parent(s):
6e94de2
Refactor code to include grandchildren in model
Browse files
app.py
CHANGED
@@ -76,6 +76,14 @@ grouped_by_base_model = groupby(
|
|
76 |
all_base_models = df["base_model"].to_list()
|
77 |
|
78 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
def return_models_for_base_model(base_model):
|
80 |
models = grouped_by_base_model.get(base_model)
|
81 |
# sort models by downloads
|
@@ -91,11 +99,21 @@ def return_models_for_base_model(base_model):
|
|
91 |
f"`{base_model}`'s children have been"
|
92 |
f" downloaded {total_download_number:,} times\n\n"
|
93 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
results += "### Children models \n\n"
|
95 |
for model in models:
|
96 |
url = f"https://huggingface.co/{model.modelId}"
|
97 |
results += (
|
98 |
-
f"- [{model.modelId}]({url}) | number of downloads {model.downloads}"
|
99 |
+ "\n\n"
|
100 |
)
|
101 |
return results
|
@@ -113,17 +131,23 @@ def return_base_model_popularity(pipeline=None):
|
|
113 |
df_with_pipeline_info["pipeline"] == pipeline
|
114 |
]
|
115 |
keep_columns = ["base_model", "count"]
|
116 |
-
df_with_pipeline_info["base_model"] = df_with_pipeline_info["base_model"].apply(
|
|
|
|
|
117 |
return df_with_pipeline_info[keep_columns].head(50)
|
118 |
|
119 |
|
120 |
def return_base_model_popularity_by_org(pipeline=None):
|
121 |
-
referenced_base_models = [
|
|
|
|
|
122 |
df_with_pipeline_info = pd.DataFrame(
|
123 |
{"base_model": base_models, "pipeline": pipeline_tags}
|
124 |
)
|
125 |
df_with_pipeline_info["org"] = df_with_pipeline_info["base_model"].apply(parse_org)
|
126 |
-
df_with_pipeline_info["org"] = df_with_pipeline_info["org"].apply(
|
|
|
|
|
127 |
df_with_pipeline_info = df_with_pipeline_info.dropna(subset=["org"])
|
128 |
df_with_org = df_with_pipeline_info.copy(deep=True)
|
129 |
if pipeline is not None:
|
@@ -162,10 +186,14 @@ with gr.Blocks() as demo:
|
|
162 |
label="Filter rankings by task pipeline",
|
163 |
)
|
164 |
with gr.Accordion("Base model popularity ranking", open=False):
|
165 |
-
df_popularity = gr.DataFrame(
|
|
|
|
|
166 |
dropdown.change(return_base_model_popularity, dropdown, df_popularity)
|
167 |
with gr.Accordion("Base model popularity ranking by organization", open=False):
|
168 |
-
df_popularity_org = gr.DataFrame(
|
|
|
|
|
169 |
dropdown.change(
|
170 |
return_base_model_popularity_by_org, dropdown, df_popularity_org
|
171 |
)
|
|
|
76 |
all_base_models = df["base_model"].to_list()
|
77 |
|
78 |
|
79 |
+
def get_grandchildren(base_model):
|
80 |
+
grandchildren = []
|
81 |
+
for model in tqdm(grouped_by_base_model[base_model]):
|
82 |
+
model_id = model.modelId
|
83 |
+
grandchildren.extend(grouped_by_base_model.get(model_id, []))
|
84 |
+
return grandchildren
|
85 |
+
|
86 |
+
|
87 |
def return_models_for_base_model(base_model):
|
88 |
models = grouped_by_base_model.get(base_model)
|
89 |
# sort models by downloads
|
|
|
99 |
f"`{base_model}`'s children have been"
|
100 |
f" downloaded {total_download_number:,} times\n\n"
|
101 |
)
|
102 |
+
grandchildren = get_grandchildren(base_model)
|
103 |
+
number_of_grandchildren = len(grandchildren)
|
104 |
+
results += f"`{base_model}` has {number_of_grandchildren} grandchildren\n\n"
|
105 |
+
grandchildren_download_count = sum(model.downloads for model in grandchildren)
|
106 |
+
results += (
|
107 |
+
f"`{base_model}`'s grandchildren have been"
|
108 |
+
f" downloaded {grandchildren_download_count:,} times\n\n"
|
109 |
+
)
|
110 |
+
results += f"Including grandchildren, `{base_model}` has {number_of_grandchildren + len(models):,} descendants\n\n"
|
111 |
+
results += f"Including grandchildren, `{base_model}`'s descendants have been downloaded {grandchildren_download_count + total_download_number:,} times\n\n"
|
112 |
results += "### Children models \n\n"
|
113 |
for model in models:
|
114 |
url = f"https://huggingface.co/{model.modelId}"
|
115 |
results += (
|
116 |
+
f"- [{model.modelId}]({url}) | number of downloads {model.downloads:,}"
|
117 |
+ "\n\n"
|
118 |
)
|
119 |
return results
|
|
|
131 |
df_with_pipeline_info["pipeline"] == pipeline
|
132 |
]
|
133 |
keep_columns = ["base_model", "count"]
|
134 |
+
df_with_pipeline_info["base_model"] = df_with_pipeline_info["base_model"].apply(
|
135 |
+
render_model_hub_link
|
136 |
+
)
|
137 |
return df_with_pipeline_info[keep_columns].head(50)
|
138 |
|
139 |
|
140 |
def return_base_model_popularity_by_org(pipeline=None):
|
141 |
+
referenced_base_models = [
|
142 |
+
f"[`{model}`](https://huggingface.co/{model})" for model in base_models
|
143 |
+
]
|
144 |
df_with_pipeline_info = pd.DataFrame(
|
145 |
{"base_model": base_models, "pipeline": pipeline_tags}
|
146 |
)
|
147 |
df_with_pipeline_info["org"] = df_with_pipeline_info["base_model"].apply(parse_org)
|
148 |
+
df_with_pipeline_info["org"] = df_with_pipeline_info["org"].apply(
|
149 |
+
render_model_hub_link
|
150 |
+
)
|
151 |
df_with_pipeline_info = df_with_pipeline_info.dropna(subset=["org"])
|
152 |
df_with_org = df_with_pipeline_info.copy(deep=True)
|
153 |
if pipeline is not None:
|
|
|
186 |
label="Filter rankings by task pipeline",
|
187 |
)
|
188 |
with gr.Accordion("Base model popularity ranking", open=False):
|
189 |
+
df_popularity = gr.DataFrame(
|
190 |
+
return_base_model_popularity(None), datatype="markdown"
|
191 |
+
)
|
192 |
dropdown.change(return_base_model_popularity, dropdown, df_popularity)
|
193 |
with gr.Accordion("Base model popularity ranking by organization", open=False):
|
194 |
+
df_popularity_org = gr.DataFrame(
|
195 |
+
return_base_model_popularity_by_org(None), datatype="markdown"
|
196 |
+
)
|
197 |
dropdown.change(
|
198 |
return_base_model_popularity_by_org, dropdown, df_popularity_org
|
199 |
)
|