Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
Update app.py
Browse files
app.py
CHANGED
@@ -290,14 +290,14 @@ target_models = {
|
|
290 |
|
291 |
def get_models_data(progress=gr.Progress()):
|
292 |
"""모델 데이터 가져오기"""
|
293 |
-
url = "https://huggingface.co/api/models"
|
294 |
|
295 |
try:
|
296 |
progress(0, desc="Fetching models data...")
|
297 |
params = {
|
298 |
'full': 'true',
|
299 |
'limit': 1000,
|
300 |
-
'sort': 'downloads',
|
301 |
'direction': -1
|
302 |
}
|
303 |
|
@@ -314,21 +314,33 @@ def get_models_data(progress=gr.Progress()):
|
|
314 |
|
315 |
all_models = response.json()
|
316 |
print(f"Total models fetched: {len(all_models)}")
|
317 |
-
|
318 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
319 |
filtered_models = []
|
320 |
for model in all_models:
|
321 |
-
model_id = model.get('id', '')
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
|
|
|
|
328 |
|
329 |
if not filtered_models:
|
330 |
return create_error_plot(), "<div>선택된 모델의 데이터를 찾을 수 없습니다.</div>", pd.DataFrame()
|
331 |
|
|
|
332 |
progress(0.3, desc="Creating visualization...")
|
333 |
|
334 |
# 시각화 생성
|
@@ -441,9 +453,57 @@ def get_models_data(progress=gr.Progress()):
|
|
441 |
print(f"Error in get_models_data: {str(e)}")
|
442 |
return create_error_plot(), f"<div>에러 발생: {str(e)}</div>", pd.DataFrame()
|
443 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
444 |
|
|
|
445 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
446 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
447 |
|
448 |
# 관심 스페이스 URL 리스트와 정보
|
449 |
target_spaces = {
|
|
|
290 |
|
291 |
def get_models_data(progress=gr.Progress()):
|
292 |
"""모델 데이터 가져오기"""
|
293 |
+
url = "https://huggingface.co/api/models"
|
294 |
|
295 |
try:
|
296 |
progress(0, desc="Fetching models data...")
|
297 |
params = {
|
298 |
'full': 'true',
|
299 |
'limit': 1000,
|
300 |
+
'sort': 'downloads',
|
301 |
'direction': -1
|
302 |
}
|
303 |
|
|
|
314 |
|
315 |
all_models = response.json()
|
316 |
print(f"Total models fetched: {len(all_models)}")
|
317 |
+
|
318 |
+
# API 응답 확인을 위한 디버깅
|
319 |
+
print("First few model IDs from API:")
|
320 |
+
for model in all_models[:5]:
|
321 |
+
print(f"API Model ID: {model.get('id', 'No ID')}")
|
322 |
+
|
323 |
+
print("\nTarget model IDs:")
|
324 |
+
for model_id in list(target_models.keys())[:5]:
|
325 |
+
print(f"Target Model ID: {model_id}")
|
326 |
+
|
327 |
+
# 매칭 로직 수정
|
328 |
filtered_models = []
|
329 |
for model in all_models:
|
330 |
+
model_id = model.get('id', '').strip()
|
331 |
+
for target_id in target_models:
|
332 |
+
if model_id.lower() == target_id.lower(): # 대소문자 구분 없이 비교
|
333 |
+
model['rank'] = len(filtered_models) + 1
|
334 |
+
filtered_models.append(model)
|
335 |
+
print(f"Matched model: {model_id}")
|
336 |
+
break
|
337 |
+
|
338 |
+
print(f"\nMatched {len(filtered_models)} models out of {len(target_models)} targets")
|
339 |
|
340 |
if not filtered_models:
|
341 |
return create_error_plot(), "<div>선택된 모델의 데이터를 찾을 수 없습니다.</div>", pd.DataFrame()
|
342 |
|
343 |
+
|
344 |
progress(0.3, desc="Creating visualization...")
|
345 |
|
346 |
# 시각화 생성
|
|
|
453 |
print(f"Error in get_models_data: {str(e)}")
|
454 |
return create_error_plot(), f"<div>에러 발생: {str(e)}</div>", pd.DataFrame()
|
455 |
|
456 |
+
# API 응답 형식에 맞게 모델 ID 수정
|
457 |
+
def normalize_model_id(model_id):
|
458 |
+
"""모델 ID를 정규화"""
|
459 |
+
return model_id.strip().lower()
|
460 |
+
|
461 |
+
# 매칭 로직 수정
|
462 |
+
filtered_models = []
|
463 |
+
for model in all_models:
|
464 |
+
model_id = normalize_model_id(model.get('id', ''))
|
465 |
+
target_id = next(
|
466 |
+
(tid for tid in target_models.keys()
|
467 |
+
if normalize_model_id(tid) == model_id),
|
468 |
+
None
|
469 |
+
)
|
470 |
+
|
471 |
+
if target_id:
|
472 |
+
model['rank'] = len(filtered_models) + 1
|
473 |
+
filtered_models.append(model)
|
474 |
+
print(f"Matched model: {model_id} with target: {target_id}")
|
475 |
|
476 |
+
print(f"\nMatched {len(filtered_models)} models out of {len(target_models)} targets")
|
477 |
|
478 |
+
def try_different_sorts():
|
479 |
+
"""다양한 정렬 방식으로 모델 검색"""
|
480 |
+
sort_options = [
|
481 |
+
{'sort': 'downloads', 'direction': -1},
|
482 |
+
{'sort': 'lastModified', 'direction': -1},
|
483 |
+
{'sort': 'likes', 'direction': -1}
|
484 |
+
]
|
485 |
+
|
486 |
+
all_found_models = set()
|
487 |
+
for sort_params in sort_options:
|
488 |
+
params = {
|
489 |
+
'full': 'true',
|
490 |
+
'limit': 1000,
|
491 |
+
**sort_params
|
492 |
+
}
|
493 |
|
494 |
+
response = requests.get(url, params=params, headers=headers)
|
495 |
+
if response.status_code == 200:
|
496 |
+
models = response.json()
|
497 |
+
for model in models:
|
498 |
+
model_id = normalize_model_id(model.get('id', ''))
|
499 |
+
if model_id in [normalize_model_id(tid) for tid in target_models.keys()]:
|
500 |
+
all_found_models.add(model_id)
|
501 |
+
|
502 |
+
return all_found_models
|
503 |
+
|
504 |
+
# 메인 함수에서 사용
|
505 |
+
all_found_models = try_different_sorts()
|
506 |
+
print(f"\nTotal unique models found across all sorts: {len(all_found_models)}")
|
507 |
|
508 |
# 관심 스페이스 URL 리스트와 정보
|
509 |
target_spaces = {
|