openfree commited on
Commit
8ef1d19
·
verified ·
1 Parent(s): 3180989

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -40
app.py CHANGED
@@ -291,67 +291,71 @@ target_models = {
291
  "sel303/llama3-diverce-ver1.6": "https://huggingface.co/sel303/llama3-diverce-ver1.6"
292
  }
293
 
 
 
294
  def get_models_data(progress=gr.Progress()):
295
  """모델 데이터 가져오기"""
296
- url = "https://huggingface.co/api/models/trending" # trending API 사용
297
 
298
  try:
299
  progress(0, desc="Fetching models data...")
300
- params = {
301
- 'full': 'true',
302
- 'limit': 1000
303
- }
304
 
305
- headers = {
306
- 'Accept': 'application/json'
307
- }
308
-
309
- response = requests.get(url, params=params, headers=headers)
310
- if response.status_code != 200:
311
- print(f"API 요청 실패: {response.status_code}")
312
- print(f"Response: {response.text}")
313
- return create_error_plot(), "<div>모델 데이터를 가져오는데 실패했습니다.</div>", pd.DataFrame()
314
-
315
- models = response.json()
316
- print(f"Total models fetched: {len(models)}")
317
-
318
- # target_models와 매칭
319
- filtered_models = []
320
- model_ranks = {}
321
 
322
- # 전체 순위 정보 저장
323
- for idx, model in enumerate(models, 1):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
324
  model_id = model.get('id', '')
325
- model_ranks[model_id] = idx
326
-
327
- # target_models 중 순위권 내 모델 필터링
328
- for model in models:
329
- if model.get('id', '') in target_models:
330
- model['rank'] = model_ranks[model.get('id', '')]
331
- filtered_models.append(model)
332
- print(f"Found model: {model.get('id', '')} at rank {model['rank']}")
333
 
334
- # 순위로 정렬
335
- filtered_models.sort(key=lambda x: x['rank'])
336
 
337
- print(f"Matched {len(filtered_models)} models out of {len(target_models)} targets")
 
 
338
 
339
- if not filtered_models:
340
  return create_error_plot(), "<div>선택된 모델의 데이터를 찾을 수 없습니다.</div>", pd.DataFrame()
341
 
 
342
  progress(0.3, desc="Creating visualization...")
343
 
344
  # 시각화 생성
345
  fig = go.Figure()
346
 
347
  # 데이터 준비
348
- ids = [model['id'] for model in filtered_models]
349
- ranks = [model['rank'] for model in filtered_models]
350
- likes = [model.get('likes', 0) for model in filtered_models]
351
- downloads = [model.get('downloads', 0) for model in filtered_models]
352
 
353
- # Y축 값을 반전 (1000 - rank + 1)
354
  y_values = [1001 - r for r in ranks]
 
355
 
356
  # 막대 그래프 생성
357
  fig.add_trace(go.Bar(
 
291
  "sel303/llama3-diverce-ver1.6": "https://huggingface.co/sel303/llama3-diverce-ver1.6"
292
  }
293
 
294
+ # all_models 관련 코드 제거하고 get_models_data 함수 내부에서 처리하도록 수정
295
+
296
  def get_models_data(progress=gr.Progress()):
297
  """모델 데이터 가져오기"""
298
+ url = "https://huggingface.co/api/models" # 기본 모델 API 엔드포인트
299
 
300
  try:
301
  progress(0, desc="Fetching models data...")
 
 
 
 
302
 
303
+ # 여러 정렬 방식으로 시도
304
+ all_found_models = []
305
+ sort_options = [
306
+ {'sort': 'downloads', 'direction': -1},
307
+ {'sort': 'lastModified', 'direction': -1},
308
+ {'sort': 'likes', 'direction': -1}
309
+ ]
 
 
 
 
 
 
 
 
 
310
 
311
+ for sort_params in sort_options:
312
+ params = {
313
+ 'full': 'true',
314
+ 'limit': 1000,
315
+ **sort_params
316
+ }
317
+
318
+ headers = {'Accept': 'application/json'}
319
+
320
+ response = requests.get(url, params=params, headers=headers)
321
+ if response.status_code == 200:
322
+ models = response.json()
323
+ all_found_models.extend(models)
324
+
325
+ # 중복 제거
326
+ seen_ids = set()
327
+ unique_models = []
328
+ for model in all_found_models:
329
  model_id = model.get('id', '')
330
+ if model_id not in seen_ids and model_id in target_models:
331
+ seen_ids.add(model_id)
332
+ unique_models.append(model)
 
 
 
 
 
333
 
334
+ # 다운로드 수로 정렬
335
+ unique_models.sort(key=lambda x: x.get('downloads', 0), reverse=True)
336
 
337
+ # 순위 할당
338
+ for idx, model in enumerate(unique_models, 1):
339
+ model['rank'] = idx
340
 
341
+ if not unique_models:
342
  return create_error_plot(), "<div>선택된 모델의 데이터를 찾을 수 없습니다.</div>", pd.DataFrame()
343
 
344
+ # 나머지 시각화 코드는 동일하게 유지
345
  progress(0.3, desc="Creating visualization...")
346
 
347
  # 시각화 생성
348
  fig = go.Figure()
349
 
350
  # 데이터 준비
351
+ ids = [model['id'] for model in unique_models]
352
+ ranks = [model['rank'] for model in unique_models]
353
+ likes = [model.get('likes', 0) for model in unique_models]
354
+ downloads = [model.get('downloads', 0) for model in unique_models]
355
 
356
+ # Y축 값을 반전
357
  y_values = [1001 - r for r in ranks]
358
+
359
 
360
  # 막대 그래프 생성
361
  fig.add_trace(go.Bar(