openfree commited on
Commit
9a7794b
ยท
verified ยท
1 Parent(s): 37fe9d3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +70 -19
app.py CHANGED
@@ -141,10 +141,10 @@ target_models = {
141
 
142
  def get_models_data(progress=gr.Progress()):
143
  """๋ชจ๋ธ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ"""
144
- url = "https://huggingface.co/api/models"
145
  params = {
146
  'full': 'true',
147
- 'limit': 300 # ์ŠคํŽ˜์ด์Šค์™€ ๋™์ผํ•˜๊ฒŒ 300๊ฐœ๋กœ ์„ค์ •
148
  }
149
 
150
  try:
@@ -159,13 +159,19 @@ def get_models_data(progress=gr.Progress()):
159
 
160
  all_models = response.json()
161
 
162
- # target_models์— ์žˆ๋Š” ๋ชจ๋ธ๋งŒ ํ•„ํ„ฐ๋ง
 
 
 
163
  filtered_models = []
164
  for model in all_models:
165
  if model.get('id', '') in target_models:
166
- model['rank'] = len(filtered_models) + 1
167
  filtered_models.append(model)
168
 
 
 
 
169
  if not filtered_models:
170
  return create_error_plot(), "<div>์„ ํƒ๋œ ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.</div>", pd.DataFrame()
171
 
@@ -178,15 +184,17 @@ def get_models_data(progress=gr.Progress()):
178
  ids = [model['id'] for model in filtered_models]
179
  ranks = [model['rank'] for model in filtered_models]
180
  likes = [model.get('likes', 0) for model in filtered_models]
 
181
 
182
- # Y์ถ• ๊ฐ’์„ ๋ฐ˜์ „ (300 - rank + 1)
183
- y_values = [301 - r for r in ranks]
184
 
185
  # ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
186
  fig.add_trace(go.Bar(
187
  x=ids,
188
  y=y_values,
189
- text=[f"Rank: {r}<br>Likes: {l}" for r, l in zip(ranks, likes)],
 
190
  textposition='auto',
191
  marker_color='rgb(158,202,225)',
192
  opacity=0.8
@@ -194,7 +202,7 @@ def get_models_data(progress=gr.Progress()):
194
 
195
  fig.update_layout(
196
  title={
197
- 'text': 'Hugging Face Models Rankings (Top 300)',
198
  'y':0.95,
199
  'x':0.5,
200
  'xanchor': 'center',
@@ -203,9 +211,9 @@ def get_models_data(progress=gr.Progress()):
203
  xaxis_title='Model ID',
204
  yaxis_title='Rank',
205
  yaxis=dict(
206
- ticktext=[str(i) for i in range(1, 301, 20)],
207
- tickvals=[301 - i for i in range(1, 301, 20)],
208
- range=[0, 300]
209
  ),
210
  height=800,
211
  showlegend=False,
@@ -218,10 +226,11 @@ def get_models_data(progress=gr.Progress()):
218
  # HTML ์นด๋“œ ์ƒ์„ฑ
219
  html_content = """
220
  <div style='padding: 20px; background: #f5f5f5;'>
221
- <h2 style='color: #2c3e50;'>Models Rankings</h2>
222
  <div style='display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px;'>
223
  """
224
 
 
225
  for model in filtered_models:
226
  model_id = model.get('id', '')
227
  rank = model.get('rank', 'N/A')
@@ -255,16 +264,58 @@ def get_models_data(progress=gr.Progress()):
255
  </div>
256
  """
257
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
258
  html_content += "</div></div>"
259
 
260
  # ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ƒ์„ฑ
261
- df = pd.DataFrame([{
262
- 'Rank': model.get('rank', 'N/A'),
263
- 'Model ID': model.get('id', ''),
264
- 'Likes': model.get('likes', 'N/A'),
265
- 'Downloads': model.get('downloads', 'N/A'),
266
- 'URL': target_models[model.get('id', '')]
267
- } for model in filtered_models])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
268
 
269
  progress(1.0, desc="Complete!")
270
  return fig, html_content, df
 
141
 
142
  def get_models_data(progress=gr.Progress()):
143
  """๋ชจ๋ธ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ"""
144
+ url = "https://huggingface.co/api/models/sort/trending" # trending ์ •๋ ฌ ์‚ฌ์šฉ
145
  params = {
146
  'full': 'true',
147
+ 'limit': 1000 # 1000์œ„๊นŒ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ
148
  }
149
 
150
  try:
 
159
 
160
  all_models = response.json()
161
 
162
+ # ์ „์ฒด ๋ชจ๋ธ์˜ ์ˆœ์œ„ ์ •๋ณด ์ €์žฅ (1000์œ„๊นŒ์ง€)
163
+ model_ranks = {model['id']: idx + 1 for idx, model in enumerate(all_models)}
164
+
165
+ # target_models์— ์žˆ๋Š” ๋ชจ๋ธ๋งŒ ํ•„ํ„ฐ๋งํ•˜๊ณ  ์‹ค์ œ ์ˆœ์œ„ ํฌํ•จ
166
  filtered_models = []
167
  for model in all_models:
168
  if model.get('id', '') in target_models:
169
+ model['rank'] = model_ranks[model['id']] # ์‹ค์ œ ์ˆœ์œ„ ์‚ฌ์šฉ
170
  filtered_models.append(model)
171
 
172
+ # ์ˆœ์œ„๋กœ ์ •๋ ฌ
173
+ filtered_models.sort(key=lambda x: x['rank'])
174
+
175
  if not filtered_models:
176
  return create_error_plot(), "<div>์„ ํƒ๋œ ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.</div>", pd.DataFrame()
177
 
 
184
  ids = [model['id'] for model in filtered_models]
185
  ranks = [model['rank'] for model in filtered_models]
186
  likes = [model.get('likes', 0) for model in filtered_models]
187
+ downloads = [model.get('downloads', 0) for model in filtered_models]
188
 
189
+ # Y์ถ• ๊ฐ’์„ ๋ฐ˜์ „ (1000 - rank + 1)
190
+ y_values = [1001 - r for r in ranks]
191
 
192
  # ๋ง‰๋Œ€ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ
193
  fig.add_trace(go.Bar(
194
  x=ids,
195
  y=y_values,
196
+ text=[f"Rank: {r}<br>Likes: {l}<br>Downloads: {d}"
197
+ for r, l, d in zip(ranks, likes, downloads)],
198
  textposition='auto',
199
  marker_color='rgb(158,202,225)',
200
  opacity=0.8
 
202
 
203
  fig.update_layout(
204
  title={
205
+ 'text': 'Hugging Face Models Trending Rankings (Top 1000)',
206
  'y':0.95,
207
  'x':0.5,
208
  'xanchor': 'center',
 
211
  xaxis_title='Model ID',
212
  yaxis_title='Rank',
213
  yaxis=dict(
214
+ ticktext=[str(i) for i in range(1, 1001, 50)],
215
+ tickvals=[1001 - i for i in range(1, 1001, 50)],
216
+ range=[0, 1000]
217
  ),
218
  height=800,
219
  showlegend=False,
 
226
  # HTML ์นด๋“œ ์ƒ์„ฑ
227
  html_content = """
228
  <div style='padding: 20px; background: #f5f5f5;'>
229
+ <h2 style='color: #2c3e50;'>Models Trending Rankings</h2>
230
  <div style='display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px;'>
231
  """
232
 
233
+ # ์ˆœ์œ„๊ถŒ ๋‚ด ๋ชจ๋ธ ์นด๋“œ ์ƒ์„ฑ
234
  for model in filtered_models:
235
  model_id = model.get('id', '')
236
  rank = model.get('rank', 'N/A')
 
264
  </div>
265
  """
266
 
267
+ # ์ˆœ์œ„๊ถŒ ๋ฐ– ๋ชจ๋ธ ์นด๋“œ ์ƒ์„ฑ
268
+ for model_id in target_models:
269
+ if model_id not in [m['id'] for m in filtered_models]:
270
+ html_content += f"""
271
+ <div style='
272
+ background: #f8f9fa;
273
+ padding: 20px;
274
+ border-radius: 10px;
275
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
276
+ '>
277
+ <h3 style='color: #34495e;'>{model_id}</h3>
278
+ <p style='color: #7f8c8d;'>Not in top 1000</p>
279
+ <a href='{target_models[model_id]}'
280
+ target='_blank'
281
+ style='
282
+ display: inline-block;
283
+ padding: 8px 16px;
284
+ background: #95a5a6;
285
+ color: white;
286
+ text-decoration: none;
287
+ border-radius: 5px;
288
+ '>
289
+ Visit Model ๐Ÿ”—
290
+ </a>
291
+ </div>
292
+ """
293
+
294
  html_content += "</div></div>"
295
 
296
  # ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์ƒ์„ฑ
297
+ df_data = []
298
+ # ์ˆœ์œ„๊ถŒ ๋‚ด ๋ชจ๋ธ
299
+ for model in filtered_models:
300
+ df_data.append({
301
+ 'Rank': model.get('rank', 'N/A'),
302
+ 'Model ID': model.get('id', ''),
303
+ 'Likes': model.get('likes', 'N/A'),
304
+ 'Downloads': model.get('downloads', 'N/A'),
305
+ 'URL': target_models[model.get('id', '')]
306
+ })
307
+ # ์ˆœ์œ„๊ถŒ ๋ฐ– ๋ชจ๋ธ
308
+ for model_id in target_models:
309
+ if model_id not in [m['id'] for m in filtered_models]:
310
+ df_data.append({
311
+ 'Rank': 'Not in top 1000',
312
+ 'Model ID': model_id,
313
+ 'Likes': 'N/A',
314
+ 'Downloads': 'N/A',
315
+ 'URL': target_models[model_id]
316
+ })
317
+
318
+ df = pd.DataFrame(df_data)
319
 
320
  progress(1.0, desc="Complete!")
321
  return fig, html_content, df