import gradio as gr import requests import pandas as pd import plotly.graph_objects as go from datetime import datetime import os HF_TOKEN = os.getenv("HF_TOKEN") target_models = { "openfree/flux-lora-korea-palace": "https://huggingface.co/openfree/flux-lora-korea-palace", "seawolf2357/hanbok": "https://huggingface.co/seawolf2357/hanbok", "LGAI-EXAONE/EXAONE-3.5-32B-Instruct": "https://huggingface.co/LGAI-EXAONE/EXAONE-3.5-32B-Instruct", "LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct": "https://huggingface.co/LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct", "LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct": "https://huggingface.co/LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct", "ginipick/flux-lora-eric-cat": "https://huggingface.co/ginipick/flux-lora-eric-cat", "seawolf2357/flux-lora-car-rolls-royce": "https://huggingface.co/seawolf2357/flux-lora-car-rolls-royce", "moreh/Llama-3-Motif-102B-Instruct": "https://huggingface.co/moreh/Llama-3-Motif-102B-Instruct", "moreh/Llama-3-Motif-102B": "https://huggingface.co/moreh/Llama-3-Motif-102B", "Samsung/TinyClick": "https://huggingface.co/Samsung/TinyClick", "Saxo/Linkbricks-Horizon-AI-Korean-Gemma-2-sft-dpo-27B": "https://huggingface.co/Saxo/Linkbricks-Horizon-AI-Korean-Gemma-2-sft-dpo-27B", "AALF/gemma-2-27b-it-SimPO-37K": "https://huggingface.co/AALF/gemma-2-27b-it-SimPO-37K", "nbeerbower/mistral-nemo-wissenschaft-12B": "https://huggingface.co/nbeerbower/mistral-nemo-wissenschaft-12B", "Saxo/Linkbricks-Horizon-AI-Korean-Mistral-Nemo-sft-dpo-12B": "https://huggingface.co/Saxo/Linkbricks-Horizon-AI-Korean-Mistral-Nemo-sft-dpo-12B", "princeton-nlp/gemma-2-9b-it-SimPO": "https://huggingface.co/princeton-nlp/gemma-2-9b-it-SimPO", "migtissera/Tess-v2.5-Gemma-2-27B-alpha": "https://huggingface.co/migtissera/Tess-v2.5-Gemma-2-27B-alpha", "DeepMount00/Llama-3.1-8b-Ita": "https://huggingface.co/DeepMount00/Llama-3.1-8b-Ita", "cognitivecomputations/dolphin-2.9.3-mistral-nemo-12b": "https://huggingface.co/cognitivecomputations/dolphin-2.9.3-mistral-nemo-12b", "ai-human-lab/EEVE-Korean_Instruct-10.8B-expo": "https://huggingface.co/ai-human-lab/EEVE-Korean_Instruct-10.8B-expo", "VAGOsolutions/Llama-3.1-SauerkrautLM-8b-Instruct": "https://huggingface.co/VAGOsolutions/Llama-3.1-SauerkrautLM-8b-Instruct", "Saxo/Linkbricks-Horizon-AI-Korean-llama-3.1-sft-dpo-8B": "https://huggingface.co/Saxo/Linkbricks-Horizon-AI-Korean-llama-3.1-sft-dpo-8B", "AIDX-ktds/ktdsbaseLM-v0.12-based-on-openchat3.5": "https://huggingface.co/AIDX-ktds/ktdsbaseLM-v0.12-based-on-openchat3.5", "mlabonne/Daredevil-8B-abliterated": "https://huggingface.co/mlabonne/Daredevil-8B-abliterated", "ENERGY-DRINK-LOVE/eeve_dpo-v3": "https://huggingface.co/ENERGY-DRINK-LOVE/eeve_dpo-v3", "migtissera/Trinity-2-Codestral-22B": "https://huggingface.co/migtissera/Trinity-2-Codestral-22B", "Saxo/Linkbricks-Horizon-AI-Korean-llama3.1-sft-rlhf-dpo-8B": "https://huggingface.co/Saxo/Linkbricks-Horizon-AI-Korean-llama3.1-sft-rlhf-dpo-8B", "mlabonne/Daredevil-8B-abliterated-dpomix": "https://huggingface.co/mlabonne/Daredevil-8B-abliterated-dpomix", "yanolja/EEVE-Korean-Instruct-10.8B-v1.0": "https://huggingface.co/yanolja/EEVE-Korean-Instruct-10.8B-v1.0", "vicgalle/Configurable-Llama-3.1-8B-Instruct": "https://huggingface.co/vicgalle/Configurable-Llama-3.1-8B-Instruct", "T3Q-LLM/T3Q-LLM1-sft1.0-dpo1.0": "https://huggingface.co/T3Q-LLM/T3Q-LLM1-sft1.0-dpo1.0", "Eurdem/Defne-llama3.1-8B": "https://huggingface.co/Eurdem/Defne-llama3.1-8B", "BAAI/Infinity-Instruct-7M-Gen-Llama3_1-8B": "https://huggingface.co/BAAI/Infinity-Instruct-7M-Gen-Llama3_1-8B", "BAAI/Infinity-Instruct-3M-0625-Llama3-8B": "https://huggingface.co/BAAI/Infinity-Instruct-3M-0625-Llama3-8B", "T3Q-LLM/T3Q-LLM-sft1.0-dpo1.0": "https://huggingface.co/T3Q-LLM/T3Q-LLM-sft1.0-dpo1.0", "BAAI/Infinity-Instruct-7M-0729-Llama3_1-8B": "https://huggingface.co/BAAI/Infinity-Instruct-7M-0729-Llama3_1-8B", "mightbe/EEVE-10.8B-Multiturn": "https://huggingface.co/mightbe/EEVE-10.8B-Multiturn", "hyemijo/omed-llama3.1-8b": "https://huggingface.co/hyemijo/omed-llama3.1-8b", "yanolja/Bookworm-10.7B-v0.4-DPO": "https://huggingface.co/yanolja/Bookworm-10.7B-v0.4-DPO", "algograp-Inc/algograpV4": "https://huggingface.co/algograp-Inc/algograpV4", "lightblue/suzume-llama-3-8B-multilingual-orpo-borda-top75": "https://huggingface.co/lightblue/suzume-llama-3-8B-multilingual-orpo-borda-top75", "chihoonlee10/T3Q-LLM-MG-DPO-v1.0": "https://huggingface.co/chihoonlee10/T3Q-LLM-MG-DPO-v1.0", "vicgalle/Configurable-Hermes-2-Pro-Llama-3-8B": "https://huggingface.co/vicgalle/Configurable-Hermes-2-Pro-Llama-3-8B", "RLHFlow/LLaMA3-iterative-DPO-final": "https://huggingface.co/RLHFlow/LLaMA3-iterative-DPO-final", "SEOKDONG/llama3.1_korean_v0.1_sft_by_aidx": "https://huggingface.co/SEOKDONG/llama3.1_korean_v0.1_sft_by_aidx", "spow12/Ko-Qwen2-7B-Instruct": "https://huggingface.co/spow12/Ko-Qwen2-7B-Instruct", "BAAI/Infinity-Instruct-3M-0625-Qwen2-7B": "https://huggingface.co/BAAI/Infinity-Instruct-3M-0625-Qwen2-7B", "lightblue/suzume-llama-3-8B-multilingual-orpo-borda-half": "https://huggingface.co/lightblue/suzume-llama-3-8B-multilingual-orpo-borda-half", "T3Q-LLM/T3Q-LLM1-CV-v2.0": "https://huggingface.co/T3Q-LLM/T3Q-LLM1-CV-v2.0", "migtissera/Trinity-2-Codestral-22B-v0.2": "https://huggingface.co/migtissera/Trinity-2-Codestral-22B-v0.2", "sinjy1203/EEVE-Korean-Instruct-10.8B-v1.0-Grade-Retrieval": "https://huggingface.co/sinjy1203/EEVE-Korean-Instruct-10.8B-v1.0-Grade-Retrieval", "MaziyarPanahi/Llama-3-8B-Instruct-v0.10": "https://huggingface.co/MaziyarPanahi/Llama-3-8B-Instruct-v0.10", "MaziyarPanahi/Llama-3-8B-Instruct-v0.9": "https://huggingface.co/MaziyarPanahi/Llama-3-8B-Instruct-v0.9", "zhengr/MixTAO-7Bx2-MoE-v8.1": "https://huggingface.co/zhengr/MixTAO-7Bx2-MoE-v8.1", "TIGER-Lab/MAmmoTH2-8B-Plus": "https://huggingface.co/TIGER-Lab/MAmmoTH2-8B-Plus", "OpenBuddy/openbuddy-qwen1.5-14b-v21.1-32k": "https://huggingface.co/OpenBuddy/openbuddy-qwen1.5-14b-v21.1-32k", "haoranxu/Llama-3-Instruct-8B-CPO-SimPO": "https://huggingface.co/haoranxu/Llama-3-Instruct-8B-CPO-SimPO", "Weyaxi/Einstein-v7-Qwen2-7B": "https://huggingface.co/Weyaxi/Einstein-v7-Qwen2-7B", "DKYoon/kosolar-hermes-test": "https://huggingface.co/DKYoon/kosolar-hermes-test", "vilm/Quyen-Pro-v0.1": "https://huggingface.co/vilm/Quyen-Pro-v0.1", "chihoonlee10/T3Q-LLM-MG-v1.0": "https://huggingface.co/chihoonlee10/T3Q-LLM-MG-v1.0", "lightblue/suzume-llama-3-8B-multilingual-orpo-borda-top25": "https://huggingface.co/lightblue/suzume-llama-3-8B-multilingual-orpo-borda-top25", "ai-human-lab/EEVE-Korean-10.8B-RAFT": "https://huggingface.co/ai-human-lab/EEVE-Korean-10.8B-RAFT", "princeton-nlp/Llama-3-Base-8B-SFT-RDPO": "https://huggingface.co/princeton-nlp/Llama-3-Base-8B-SFT-RDPO", "MaziyarPanahi/Llama-3-8B-Instruct-v0.8": "https://huggingface.co/MaziyarPanahi/Llama-3-8B-Instruct-v0.8", "chihoonlee10/T3Q-ko-solar-dpo-v7.0": "https://huggingface.co/chihoonlee10/T3Q-ko-solar-dpo-v7.0", "jondurbin/bagel-8b-v1.0": "https://huggingface.co/jondurbin/bagel-8b-v1.0", "DeepMount00/Llama-3-8b-Ita": "https://huggingface.co/DeepMount00/Llama-3-8b-Ita", "VAGOsolutions/Llama-3-SauerkrautLM-8b-Instruct": "https://huggingface.co/VAGOsolutions/Llama-3-SauerkrautLM-8b-Instruct", "princeton-nlp/Llama-3-Instruct-8B-ORPO-v0.2": "https://huggingface.co/princeton-nlp/Llama-3-Instruct-8B-ORPO-v0.2", "AIDX-ktds/ktdsbaseLM-v0.11-based-on-openchat3.5": "https://huggingface.co/AIDX-ktds/ktdsbaseLM-v0.11-based-on-openchat3.5", "princeton-nlp/Llama-3-Base-8B-SFT-KTO": "https://huggingface.co/princeton-nlp/Llama-3-Base-8B-SFT-KTO", "maywell/Mini_Synatra_SFT": "https://huggingface.co/maywell/Mini_Synatra_SFT", "princeton-nlp/Llama-3-Base-8B-SFT-ORPO": "https://huggingface.co/princeton-nlp/Llama-3-Base-8B-SFT-ORPO", "princeton-nlp/Llama-3-Instruct-8B-CPO-v0.2": "https://huggingface.co/princeton-nlp/Llama-3-Instruct-8B-CPO-v0.2", "spow12/Qwen2-7B-ko-Instruct-orpo-ver_2.0_wo_chat": "https://huggingface.co/spow12/Qwen2-7B-ko-Instruct-orpo-ver_2.0_wo_chat", "princeton-nlp/Llama-3-Base-8B-SFT-DPO": "https://huggingface.co/princeton-nlp/Llama-3-Base-8B-SFT-DPO", "princeton-nlp/Llama-3-Instruct-8B-ORPO": "https://huggingface.co/princeton-nlp/Llama-3-Instruct-8B-ORPO", "lcw99/llama-3-10b-it-kor-extented-chang": "https://huggingface.co/lcw99/llama-3-10b-it-kor-extented-chang", "migtissera/Llama-3-8B-Synthia-v3.5": "https://huggingface.co/migtissera/Llama-3-8B-Synthia-v3.5", "megastudyedu/M-SOLAR-10.7B-v1.4-dpo": "https://huggingface.co/megastudyedu/M-SOLAR-10.7B-v1.4-dpo", "T3Q-LLM/T3Q-LLM-solar10.8-sft-v1.0": "https://huggingface.co/T3Q-LLM/T3Q-LLM-solar10.8-sft-v1.0", "maywell/Synatra-10.7B-v0.4": "https://huggingface.co/maywell/Synatra-10.7B-v0.4", "nlpai-lab/KULLM3": "https://huggingface.co/nlpai-lab/KULLM3", "abacusai/Llama-3-Smaug-8B": "https://huggingface.co/abacusai/Llama-3-Smaug-8B", "gwonny/nox-solar-10.7b-v4-kolon-ITD-5-v2.1": "https://huggingface.co/gwonny/nox-solar-10.7b-v4-kolon-ITD-5-v2.1", "BAAI/Infinity-Instruct-3M-0625-Mistral-7B": "https://huggingface.co/BAAI/Infinity-Instruct-3M-0625-Mistral-7B", "openchat/openchat_3.5": "https://huggingface.co/openchat/openchat_3.5", "T3Q-LLM/T3Q-LLM1-v2.0": "https://huggingface.co/T3Q-LLM/T3Q-LLM1-v2.0", "T3Q-LLM/T3Q-LLM1-CV-v1.0": "https://huggingface.co/T3Q-LLM/T3Q-LLM1-CV-v1.0", "ONS-AI-RESEARCH/ONS-SOLAR-10.7B-v1.1": "https://huggingface.co/ONS-AI-RESEARCH/ONS-SOLAR-10.7B-v1.1", "macadeliccc/Samantha-Qwen-2-7B": "https://huggingface.co/macadeliccc/Samantha-Qwen-2-7B", "openchat/openchat-3.5-0106": "https://huggingface.co/openchat/openchat-3.5-0106", "NousResearch/Nous-Hermes-2-SOLAR-10.7B": "https://huggingface.co/NousResearch/Nous-Hermes-2-SOLAR-10.7B", "UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter1": "https://huggingface.co/UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter1", "MTSAIR/multi_verse_model": "https://huggingface.co/MTSAIR/multi_verse_model", "gwonny/nox-solar-10.7b-v4-kolon-ITD-5-v2.0": "https://huggingface.co/gwonny/nox-solar-10.7b-v4-kolon-ITD-5-v2.0", "VIRNECT/llama-3-Korean-8B": "https://huggingface.co/VIRNECT/llama-3-Korean-8B", "ENERGY-DRINK-LOVE/SOLAR_merge_DPOv3": "https://huggingface.co/ENERGY-DRINK-LOVE/SOLAR_merge_DPOv3", "SeaLLMs/SeaLLMs-v3-7B-Chat": "https://huggingface.co/SeaLLMs/SeaLLMs-v3-7B-Chat", "VIRNECT/llama-3-Korean-8B-V2": "https://huggingface.co/VIRNECT/llama-3-Korean-8B-V2", "MLP-KTLim/llama-3-Korean-Bllossom-8B": "https://huggingface.co/MLP-KTLim/llama-3-Korean-Bllossom-8B", "Magpie-Align/Llama-3-8B-Magpie-Align-v0.3": "https://huggingface.co/Magpie-Align/Llama-3-8B-Magpie-Align-v0.3", "cognitivecomputations/Llama-3-8B-Instruct-abliterated-v2": "https://huggingface.co/cognitivecomputations/Llama-3-8B-Instruct-abliterated-v2", "SkyOrbis/SKY-Ko-Llama3-8B-lora": "https://huggingface.co/SkyOrbis/SKY-Ko-Llama3-8B-lora", "4yo1/llama3-eng-ko-8b-sl5": "https://huggingface.co/4yo1/llama3-eng-ko-8b-sl5", "kimwooglae/WebSquareAI-Instruct-llama-3-8B-v0.5.39": "https://huggingface.co/kimwooglae/WebSquareAI-Instruct-llama-3-8B-v0.5.39", "ONS-AI-RESEARCH/ONS-SOLAR-10.7B-v1.2": "https://huggingface.co/ONS-AI-RESEARCH/ONS-SOLAR-10.7B-v1.2", "lcw99/llama-3-10b-it-kor-extented-chang-pro8": "https://huggingface.co/lcw99/llama-3-10b-it-kor-extented-chang-pro8", "BAAI/Infinity-Instruct-3M-0625-Yi-1.5-9B": "https://huggingface.co/BAAI/Infinity-Instruct-3M-0625-Yi-1.5-9B", "migtissera/Tess-2.0-Llama-3-8B": "https://huggingface.co/migtissera/Tess-2.0-Llama-3-8B", "BAAI/Infinity-Instruct-3M-0613-Mistral-7B": "https://huggingface.co/BAAI/Infinity-Instruct-3M-0613-Mistral-7B", "yeonwoo780/cydinfo-llama3-8b-lora-v01": "https://huggingface.co/yeonwoo780/cydinfo-llama3-8b-lora-v01", "vicgalle/ConfigurableSOLAR-10.7B": "https://huggingface.co/vicgalle/ConfigurableSOLAR-10.7B", "chihoonlee10/T3Q-ko-solar-jo-v1.0": "https://huggingface.co/chihoonlee10/T3Q-ko-solar-jo-v1.0", "Kukedlc/NeuralLLaMa-3-8b-ORPO-v0.4": "https://huggingface.co/Kukedlc/NeuralLLaMa-3-8b-ORPO-v0.4", "Edentns/DataVortexS-10.7B-dpo-v1.0": "https://huggingface.co/Edentns/DataVortexS-10.7B-dpo-v1.0", "SJ-Donald/SJ-SOLAR-10.7b-DPO": "https://huggingface.co/SJ-Donald/SJ-SOLAR-10.7b-DPO", "lemon-mint/gemma-ko-7b-it-v0.40": "https://huggingface.co/lemon-mint/gemma-ko-7b-it-v0.40", "GyuHyeonWkdWkdMan/naps-llama-3.1-8b-instruct-v0.3": "https://huggingface.co/GyuHyeonWkdWkdMan/naps-llama-3.1-8b-instruct-v0.3", "hyeogi/SOLAR-10.7B-v1.5": "https://huggingface.co/hyeogi/SOLAR-10.7B-v1.5", "etri-xainlp/llama3-8b-dpo_v1": "https://huggingface.co/etri-xainlp/llama3-8b-dpo_v1", "LDCC/LDCC-SOLAR-10.7B": "https://huggingface.co/LDCC/LDCC-SOLAR-10.7B", "chlee10/T3Q-Llama3-8B-Inst-sft1.0": "https://huggingface.co/chlee10/T3Q-Llama3-8B-Inst-sft1.0", "lemon-mint/gemma-ko-7b-it-v0.41": "https://huggingface.co/lemon-mint/gemma-ko-7b-it-v0.41", "chlee10/T3Q-Llama3-8B-sft1.0-dpo1.0": "https://huggingface.co/chlee10/T3Q-Llama3-8B-sft1.0-dpo1.0", "maywell/Synatra-7B-Instruct-v0.3-pre": "https://huggingface.co/maywell/Synatra-7B-Instruct-v0.3-pre", "UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter2": "https://huggingface.co/UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter2", "hwkwon/S-SOLAR-10.7B-v1.4": "https://huggingface.co/hwkwon/S-SOLAR-10.7B-v1.4", "12thD/ko-Llama-3-8B-sft-v0.3": "https://huggingface.co/12thD/ko-Llama-3-8B-sft-v0.3", "hkss/hk-SOLAR-10.7B-v1.4": "https://huggingface.co/hkss/hk-SOLAR-10.7B-v1.4", "lookuss/test-llilu": "https://huggingface.co/lookuss/test-llilu", "chihoonlee10/T3Q-ko-solar-dpo-v3.0": "https://huggingface.co/chihoonlee10/T3Q-ko-solar-dpo-v3.0", "chihoonlee10/T3Q-ko-solar-dpo-v1.0": "https://huggingface.co/chihoonlee10/T3Q-ko-solar-dpo-v1.0", "lcw99/llama-3-10b-wiki-240709-f": "https://huggingface.co/lcw99/llama-3-10b-wiki-240709-f", "Edentns/DataVortexS-10.7B-v0.4": "https://huggingface.co/Edentns/DataVortexS-10.7B-v0.4", "princeton-nlp/Llama-3-Instruct-8B-KTO": "https://huggingface.co/princeton-nlp/Llama-3-Instruct-8B-KTO", "spow12/kosolar_4.1_sft": "https://huggingface.co/spow12/kosolar_4.1_sft", "natong19/Qwen2-7B-Instruct-abliterated": "https://huggingface.co/natong19/Qwen2-7B-Instruct-abliterated", "megastudyedu/ME-dpo-7B-v1.1": "https://huggingface.co/megastudyedu/ME-dpo-7B-v1.1", "01-ai/Yi-1.5-9B-Chat-16K": "https://huggingface.co/01-ai/Yi-1.5-9B-Chat-16K", "Edentns/DataVortexS-10.7B-dpo-v0.1": "https://huggingface.co/Edentns/DataVortexS-10.7B-dpo-v0.1", "Alphacode-AI/AlphaMist7B-slr-v4-slow": "https://huggingface.co/Alphacode-AI/AlphaMist7B-slr-v4-slow", "chihoonlee10/T3Q-ko-solar-sft-dpo-v1.0": "https://huggingface.co/chihoonlee10/T3Q-ko-solar-sft-dpo-v1.0", "hwkwon/S-SOLAR-10.7B-v1.1": "https://huggingface.co/hwkwon/S-SOLAR-10.7B-v1.1", "DopeorNope/Dear_My_best_Friends-13B": "https://huggingface.co/DopeorNope/Dear_My_best_Friends-13B", "GyuHyeonWkdWkdMan/NAPS-llama-3.1-8b-instruct-v0.3.2": "https://huggingface.co/GyuHyeonWkdWkdMan/NAPS-llama-3.1-8b-instruct-v0.3.2", "PathFinderKR/Waktaverse-Llama-3-KO-8B-Instruct": "https://huggingface.co/PathFinderKR/Waktaverse-Llama-3-KO-8B-Instruct", "vicgalle/ConfigurableHermes-7B": "https://huggingface.co/vicgalle/ConfigurableHermes-7B", "maywell/PiVoT-10.7B-Mistral-v0.2": "https://huggingface.co/maywell/PiVoT-10.7B-Mistral-v0.2", "failspy/Meta-Llama-3-8B-Instruct-abliterated-v3": "https://huggingface.co/failspy/Meta-Llama-3-8B-Instruct-abliterated-v3", "lemon-mint/gemma-ko-7b-instruct-v0.50": "https://huggingface.co/lemon-mint/gemma-ko-7b-instruct-v0.50", "ENERGY-DRINK-LOVE/leaderboard_inst_v1.3_Open-Hermes_LDCC-SOLAR-10.7B_SFT": "https://huggingface.co/ENERGY-DRINK-LOVE/leaderboard_inst_v1.3_Open-Hermes_LDCC-SOLAR-10.7B_SFT", "maywell/PiVoT-0.1-early": "https://huggingface.co/maywell/PiVoT-0.1-early", "hwkwon/S-SOLAR-10.7B-v1.3": "https://huggingface.co/hwkwon/S-SOLAR-10.7B-v1.3", "werty1248/Llama-3-Ko-8B-Instruct-AOG": "https://huggingface.co/werty1248/Llama-3-Ko-8B-Instruct-AOG", "Alphacode-AI/AlphaMist7B-slr-v2": "https://huggingface.co/Alphacode-AI/AlphaMist7B-slr-v2", "maywell/koOpenChat-sft": "https://huggingface.co/maywell/koOpenChat-sft", "lemon-mint/gemma-7b-openhermes-v0.80": "https://huggingface.co/lemon-mint/gemma-7b-openhermes-v0.80", "VIRNECT/llama-3-Korean-8B-r-v1": "https://huggingface.co/VIRNECT/llama-3-Korean-8B-r-v1", "Alphacode-AI/AlphaMist7B-slr-v1": "https://huggingface.co/Alphacode-AI/AlphaMist7B-slr-v1", "Loyola/Mistral-7b-ITmodel": "https://huggingface.co/Loyola/Mistral-7b-ITmodel", "VIRNECT/llama-3-Korean-8B-r-v2": "https://huggingface.co/VIRNECT/llama-3-Korean-8B-r-v2", "NLPark/AnFeng_v3.1-Avocet": "https://huggingface.co/NLPark/AnFeng_v3.1-Avocet", "maywell/Synatra_TbST11B_EP01": "https://huggingface.co/maywell/Synatra_TbST11B_EP01", "GritLM/GritLM-7B-KTO": "https://huggingface.co/GritLM/GritLM-7B-KTO", "01-ai/Yi-34B-Chat": "https://huggingface.co/01-ai/Yi-34B-Chat", "ValiantLabs/Llama3.1-8B-ShiningValiant2": "https://huggingface.co/ValiantLabs/Llama3.1-8B-ShiningValiant2", "princeton-nlp/Llama-3-Base-8B-SFT-CPO": "https://huggingface.co/princeton-nlp/Llama-3-Base-8B-SFT-CPO", "hyokwan/hkcode_llama3_8b": "https://huggingface.co/hyokwan/hkcode_llama3_8b", "UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter3": "https://huggingface.co/UCLA-AGI/Llama-3-Instruct-8B-SPPO-Iter3", "yuntaeyang/SOLAR-10.7B-Instructlora_sftt-v1.0": "https://huggingface.co/yuntaeyang/SOLAR-10.7B-Instructlora_sftt-v1.0", "juungwon/Llama-3-cs-LoRA": "https://huggingface.co/juungwon/Llama-3-cs-LoRA", "gangyeolkim/llama-3-chat": "https://huggingface.co/gangyeolkim/llama-3-chat", "mncai/llama2-13b-dpo-v3": "https://huggingface.co/mncai/llama2-13b-dpo-v3", "maywell/Synatra-Zephyr-7B-v0.01": "https://huggingface.co/maywell/Synatra-Zephyr-7B-v0.01", "ENERGY-DRINK-LOVE/leaderboard_inst_v1.3_deup_LDCC-SOLAR-10.7B_SFT": "https://huggingface.co/ENERGY-DRINK-LOVE/leaderboard_inst_v1.3_deup_LDCC-SOLAR-10.7B_SFT", "juungwon/Llama-3-constructionsafety-LoRA": "https://huggingface.co/juungwon/Llama-3-constructionsafety-LoRA", "princeton-nlp/Mistral-7B-Base-SFT-SimPO": "https://huggingface.co/princeton-nlp/Mistral-7B-Base-SFT-SimPO", "moondriller/solar10B-eugeneparkthebestv2": "https://huggingface.co/moondriller/solar10B-eugeneparkthebestv2", "chlee10/T3Q-LLM3-Llama3-sft1.0-dpo1.0": "https://huggingface.co/chlee10/T3Q-LLM3-Llama3-sft1.0-dpo1.0", "Edentns/DataVortexS-10.7B-dpo-v1.7": "https://huggingface.co/Edentns/DataVortexS-10.7B-dpo-v1.7", "gamzadole/llama3_instruct_tuning_without_pretraing": "https://huggingface.co/gamzadole/llama3_instruct_tuning_without_pretraing", "saltlux/Ko-Llama3-Luxia-8B": "https://huggingface.co/saltlux/Ko-Llama3-Luxia-8B", "kimdeokgi/ko-pt-model-test1": "https://huggingface.co/kimdeokgi/ko-pt-model-test1", "maywell/Synatra-11B-Testbench-2": "https://huggingface.co/maywell/Synatra-11B-Testbench-2", "Danielbrdz/Barcenas-14b-Phi-3-medium-ORPO": "https://huggingface.co/Danielbrdz/Barcenas-14b-Phi-3-medium-ORPO", "vicgalle/Configurable-Mistral-7B": "https://huggingface.co/vicgalle/Configurable-Mistral-7B", "ENERGY-DRINK-LOVE/leaderboard_inst_v1.5_LDCC-SOLAR-10.7B_SFT": "https://huggingface.co/ENERGY-DRINK-LOVE/leaderboard_inst_v1.5_LDCC-SOLAR-10.7B_SFT", "beomi/Llama-3-Open-Ko-8B-Instruct-preview": "https://huggingface.co/beomi/Llama-3-Open-Ko-8B-Instruct-preview", "Edentns/DataVortexS-10.7B-dpo-v1.3": "https://huggingface.co/Edentns/DataVortexS-10.7B-dpo-v1.3", "spow12/Llama3_ko_4.2_sft": "https://huggingface.co/spow12/Llama3_ko_4.2_sft", "maywell/Llama-3-Ko-8B-Instruct": "https://huggingface.co/maywell/Llama-3-Ko-8B-Instruct", "T3Q-LLM/T3Q-LLM3-NC-v1.0": "https://huggingface.co/T3Q-LLM/T3Q-LLM3-NC-v1.0", "ehartford/dolphin-2.2.1-mistral-7b": "https://huggingface.co/ehartford/dolphin-2.2.1-mistral-7b", "hwkwon/S-SOLAR-10.7B-SFT-v1.3": "https://huggingface.co/hwkwon/S-SOLAR-10.7B-SFT-v1.3", "sel303/llama3-instruct-diverce-v2.0": "https://huggingface.co/sel303/llama3-instruct-diverce-v2.0", "4yo1/llama3-eng-ko-8b-sl3": "https://huggingface.co/4yo1/llama3-eng-ko-8b-sl3", "hkss/hk-SOLAR-10.7B-v1.1": "https://huggingface.co/hkss/hk-SOLAR-10.7B-v1.1", "Open-Orca/Mistral-7B-OpenOrca": "https://huggingface.co/Open-Orca/Mistral-7B-OpenOrca", "hyokwan/familidata": "https://huggingface.co/hyokwan/familidata", "uukuguy/zephyr-7b-alpha-dare-0.85": "https://huggingface.co/uukuguy/zephyr-7b-alpha-dare-0.85", "gwonny/nox-solar-10.7b-v4-kolon-all-5": "https://huggingface.co/gwonny/nox-solar-10.7b-v4-kolon-all-5", "shleeeee/mistral-ko-tech-science-v1": "https://huggingface.co/shleeeee/mistral-ko-tech-science-v1", "Deepnoid/deep-solar-eeve-KorSTS": "https://huggingface.co/Deepnoid/deep-solar-eeve-KorSTS", "AIdenU/Mistral-7B-v0.2-ko-Y24_v1.0": "https://huggingface.co/AIdenU/Mistral-7B-v0.2-ko-Y24_v1.0", "tlphams/gollm-tendency-45": "https://huggingface.co/tlphams/gollm-tendency-45", "realPCH/ko_solra_merge": "https://huggingface.co/realPCH/ko_solra_merge", "Cartinoe5930/original-KoRAE-13b": "https://huggingface.co/Cartinoe5930/original-KoRAE-13b", "GAI-LLM/Yi-Ko-6B-dpo-v5": "https://huggingface.co/GAI-LLM/Yi-Ko-6B-dpo-v5", "Minirecord/Mini_DPO_test02": "https://huggingface.co/Minirecord/Mini_DPO_test02", "AIJUUD/juud-Mistral-7B-dpo": "https://huggingface.co/AIJUUD/juud-Mistral-7B-dpo", "gwonny/nox-solar-10.7b-v4-kolon-all-10": "https://huggingface.co/gwonny/nox-solar-10.7b-v4-kolon-all-10", "jieunhan/TEST_MODEL": "https://huggingface.co/jieunhan/TEST_MODEL", "etri-xainlp/kor-llama2-13b-dpo": "https://huggingface.co/etri-xainlp/kor-llama2-13b-dpo", "ifuseok/yi-ko-playtus-instruct-v0.2": "https://huggingface.co/ifuseok/yi-ko-playtus-instruct-v0.2", "Cartinoe5930/original-KoRAE-13b-3ep": "https://huggingface.co/Cartinoe5930/original-KoRAE-13b-3ep", "Trofish/KULLM-RLHF": "https://huggingface.co/Trofish/KULLM-RLHF", "wkshin89/Yi-Ko-6B-Instruct-v1.0": "https://huggingface.co/wkshin89/Yi-Ko-6B-Instruct-v1.0", "momo/polyglot-ko-12.8b-Chat-QLoRA-Merge": "https://huggingface.co/momo/polyglot-ko-12.8b-Chat-QLoRA-Merge", "PracticeLLM/Custom-KoLLM-13B-v5": "https://huggingface.co/PracticeLLM/Custom-KoLLM-13B-v5", "BAAI/Infinity-Instruct-3M-0625-Yi-1.5-9B": "https://huggingface.co/BAAI/Infinity-Instruct-3M-0625-Yi-1.5-9B", "MRAIRR/minillama3_8b_all": "https://huggingface.co/MRAIRR/minillama3_8b_all", "failspy/Phi-3-medium-4k-instruct-abliterated-v3": "https://huggingface.co/failspy/Phi-3-medium-4k-instruct-abliterated-v3", "DILAB-HYU/koquality-polyglot-12.8b": "https://huggingface.co/DILAB-HYU/koquality-polyglot-12.8b", "kyujinpy/Korean-OpenOrca-v3": "https://huggingface.co/kyujinpy/Korean-OpenOrca-v3", "4yo1/llama3-eng-ko-8b": "https://huggingface.co/4yo1/llama3-eng-ko-8b", "4yo1/llama3-eng-ko-8": "https://huggingface.co/4yo1/llama3-eng-ko-8", "4yo1/llama3-eng-ko-8-llama": "https://huggingface.co/4yo1/llama3-eng-ko-8-llama", "PracticeLLM/Custom-KoLLM-13B-v2": "https://huggingface.co/PracticeLLM/Custom-KoLLM-13B-v2", "kyujinpy/KOR-Orca-Platypus-13B-v2": "https://huggingface.co/kyujinpy/KOR-Orca-Platypus-13B-v2", "ghost-x/ghost-7b-alpha": "https://huggingface.co/ghost-x/ghost-7b-alpha", "HumanF-MarkrAI/pub-llama-13B-v6": "https://huggingface.co/HumanF-MarkrAI/pub-llama-13B-v6", "nlpai-lab/kullm-polyglot-5.8b-v2": "https://huggingface.co/nlpai-lab/kullm-polyglot-5.8b-v2", "maywell/Synatra-42dot-1.3B": "https://huggingface.co/maywell/Synatra-42dot-1.3B", "yhkim9362/gemma-en-ko-7b-v0.1": "https://huggingface.co/yhkim9362/gemma-en-ko-7b-v0.1", "yhkim9362/gemma-en-ko-7b-v0.2": "https://huggingface.co/yhkim9362/gemma-en-ko-7b-v0.2", "daekeun-ml/Llama-2-ko-OpenOrca-gugugo-13B": "https://huggingface.co/daekeun-ml/Llama-2-ko-OpenOrca-gugugo-13B", "beomi/Yi-Ko-6B": "https://huggingface.co/beomi/Yi-Ko-6B", "jojo0217/ChatSKKU5.8B": "https://huggingface.co/jojo0217/ChatSKKU5.8B", "Deepnoid/deep-solar-v2.0.7": "https://huggingface.co/Deepnoid/deep-solar-v2.0.7", "01-ai/Yi-1.5-9B": "https://huggingface.co/01-ai/Yi-1.5-9B", "PracticeLLM/Custom-KoLLM-13B-v4": "https://huggingface.co/PracticeLLM/Custom-KoLLM-13B-v4", "nuebaek/komt_mistral_mss_user_0_max_steps_80": "https://huggingface.co/nuebaek/komt_mistral_mss_user_0_max_steps_80", "dltjdgh0928/lsh_finetune_v0.11": "https://huggingface.co/dltjdgh0928/lsh_finetune_v0.11", "shleeeee/mistral-7b-wiki": "https://huggingface.co/shleeeee/mistral-7b-wiki", "nayohan/polyglot-ko-5.8b-Inst": "https://huggingface.co/nayohan/polyglot-ko-5.8b-Inst", "ifuseok/sft-solar-10.7b-v1.1": "https://huggingface.co/ifuseok/sft-solar-10.7b-v1.1", "Junmai/KIT-5.8b": "https://huggingface.co/Junmai/KIT-5.8b", "heegyu/polyglot-ko-3.8b-chat": "https://huggingface.co/heegyu/polyglot-ko-3.8b-chat", "etri-xainlp/polyglot-ko-12.8b-instruct": "https://huggingface.co/etri-xainlp/polyglot-ko-12.8b-instruct", "OpenBuddy/openbuddy-mistral2-7b-v20.3-32k": "https://huggingface.co/OpenBuddy/openbuddy-mistral2-7b-v20.3-32k", "sh2orc/Llama-3-Korean-8B": "https://huggingface.co/sh2orc/Llama-3-Korean-8B", "Deepnoid/deep-solar-eeve-v2.0.0": "https://huggingface.co/Deepnoid/deep-solar-eeve-v2.0.0", "Herry443/Mistral-7B-KNUT-ref": "https://huggingface.co/Herry443/Mistral-7B-KNUT-ref", "heegyu/polyglot-ko-5.8b-chat": "https://huggingface.co/heegyu/polyglot-ko-5.8b-chat", "jungyuko/DAVinCI-42dot_LLM-PLM-1.3B-v1.5.3": "https://huggingface.co/jungyuko/DAVinCI-42dot_LLM-PLM-1.3B-v1.5.3", "DILAB-HYU/KoQuality-Polyglot-5.8b": "https://huggingface.co/DILAB-HYU/KoQuality-Polyglot-5.8b", "Byungchae/k2s3_test_0000": "https://huggingface.co/Byungchae/k2s3_test_0000", "migtissera/Tess-v2.5-Phi-3-medium-128k-14B": "https://huggingface.co/migtissera/Tess-v2.5-Phi-3-medium-128k-14B", "kyujinpy/Korean-OpenOrca-13B": "https://huggingface.co/kyujinpy/Korean-OpenOrca-13B", "kyujinpy/KO-Platypus2-13B": "https://huggingface.co/kyujinpy/KO-Platypus2-13B", "jin05102518/Astral-7B-Instruct-v0.01": "https://huggingface.co/jin05102518/Astral-7B-Instruct-v0.01", "Byungchae/k2s3_test_0002": "https://huggingface.co/Byungchae/k2s3_test_0002", "NousResearch/Nous-Hermes-llama-2-7b": "https://huggingface.co/NousResearch/Nous-Hermes-llama-2-7b", "kaist-ai/prometheus-13b-v1.0": "https://huggingface.co/kaist-ai/prometheus-13b-v1.0", "sel303/llama3-diverce-ver1.0": "https://huggingface.co/sel303/llama3-diverce-ver1.0", "NousResearch/Nous-Capybara-7B": "https://huggingface.co/NousResearch/Nous-Capybara-7B", "rrw-x2/KoSOLAR-10.7B-DPO-v1.0": "https://huggingface.co/rrw-x2/KoSOLAR-10.7B-DPO-v1.0", "Edentns/DataVortexS-10.7B-v0.2": "https://huggingface.co/Edentns/DataVortexS-10.7B-v0.2", "Jsoo/Llama3-beomi-Open-Ko-8B-Instruct-preview-test6": "https://huggingface.co/Jsoo/Llama3-beomi-Open-Ko-8B-Instruct-preview-test6", "tlphams/gollm-instruct-all-in-one-v1": "https://huggingface.co/tlphams/gollm-instruct-all-in-one-v1", "Edentns/DataVortexTL-1.1B-v0.1": "https://huggingface.co/Edentns/DataVortexTL-1.1B-v0.1", "richard-park/llama3-pre1-ds": "https://huggingface.co/richard-park/llama3-pre1-ds", "ehartford/samantha-1.1-llama-33b": "https://huggingface.co/ehartford/samantha-1.1-llama-33b", "heegyu/LIMA-13b-hf": "https://huggingface.co/heegyu/LIMA-13b-hf", "heegyu/42dot_LLM-PLM-1.3B-mt": "https://huggingface.co/heegyu/42dot_LLM-PLM-1.3B-mt", "shleeeee/mistral-ko-7b-wiki-neft": "https://huggingface.co/shleeeee/mistral-ko-7b-wiki-neft", "EleutherAI/polyglot-ko-1.3b": "https://huggingface.co/EleutherAI/polyglot-ko-1.3b", "kyujinpy/Ko-PlatYi-6B-gu": "https://huggingface.co/kyujinpy/Ko-PlatYi-6B-gu", "sel303/llama3-diverce-ver1.6": "https://huggingface.co/sel303/llama3-diverce-ver1.6" } def get_models_data(progress=gr.Progress()): """모델 데이터 가져오기""" def normalize_model_id(model_id): """모델 ID를 정규화""" return model_id.strip().lower() url = "https://huggingface.co/api/models" try: progress(0, desc="Fetching models data...") params = { 'full': 'true', 'limit': 3000, # 3000개로 증가 'sort': 'trending', 'direction': -1 } headers = {'Accept': 'application/json'} response = requests.get(url, params=params, headers=headers) if response.status_code != 200: print(f"API 요청 실패: {response.status_code}") print(f"Response: {response.text}") return create_error_plot(), "
모델 데이터를 가져오는데 실패했습니다.
", pd.DataFrame() models = response.json() # 전체 순위 정보 저장 (다운로드 수 기준) model_ranks = {} model_data = {} # 모든 모델의 상세 데이터 저장 for idx, model in enumerate(models, 1): model_id = normalize_model_id(model.get('id', '')) model_data[model_id] = { 'rank': idx, 'downloads': model.get('downloads', 0), 'likes': model.get('likes', 0), 'title': model.get('title', 'No Title') } # target_models 중 순위권 내 모델 필터링 filtered_models = [] for target_id in target_models.keys(): normalized_target_id = normalize_model_id(target_id) # 먼저 전체 순위에서 찾기 if normalized_target_id in model_data: model_info = { 'id': target_id, 'rank': model_data[normalized_target_id]['rank'], 'downloads': model_data[normalized_target_id]['downloads'], 'likes': model_data[normalized_target_id]['likes'], 'title': model_data[normalized_target_id]['title'] } else: # 순위권 밖의 모델은 개별 API 호출로 정보 가져오기 try: model_url = f"https://huggingface.co/api/models/{target_id}" model_response = requests.get(model_url, headers=headers) if model_response.status_code == 200: model_info = model_response.json() model_info['id'] = target_id model_info['rank'] = 'Not in top 3000' else: model_info = { 'id': target_id, 'rank': 'Not in top 3000', 'downloads': 0, 'likes': 0, 'title': 'No Title' } except Exception as e: print(f"Error fetching data for model {target_id}: {str(e)}") model_info = { 'id': target_id, 'rank': 'Not in top 3000', 'downloads': 0, 'likes': 0, 'title': 'No Title' } filtered_models.append(model_info) # 순위로 정렬 (순위가 숫자인 경우만) filtered_models.sort(key=lambda x: ( float('inf') if x['rank'] == 'Not in top 3000' else x['rank'] )) if not filtered_models: return create_error_plot(), "
선택된 모델의 데이터를 찾을 수 없습니다.
", pd.DataFrame() progress(0.3, desc="Creating visualization...") # 시각화 생성 fig = go.Figure() # 데이터 준비 ids = [model['id'] for model in filtered_models] ranks = [model['rank'] for model in filtered_models] likes = [model['likes'] for model in filtered_models] downloads = [model['downloads'] for model in filtered_models] # Y축 값을 반전 (숫자 순위만) y_values = [3001 - r if isinstance(r, int) else 0 for r in ranks] # 막대 그래프 생성 fig.add_trace(go.Bar( x=ids, y=y_values, text=[f"Global Rank: {r}
Likes: {l:,}
Downloads: {d:,}" for r, l, d in zip(ranks, likes, downloads)], textposition='auto', marker_color='rgb(158,202,225)', opacity=0.8 )) fig.update_layout( title={ 'text': 'Hugging Face Models Global Download Rankings (Top 3000)', 'y':0.95, 'x':0.5, 'xanchor': 'center', 'yanchor': 'top' }, xaxis_title='Model ID', yaxis_title='Global Rank', yaxis=dict( ticktext=[str(i) for i in range(1, 3001, 150)], tickvals=[3001 - i for i in range(1, 3001, 150)], range=[0, 3000] ), height=800, showlegend=False, template='plotly_white', xaxis_tickangle=-45 ) progress(0.6, desc="Creating model cards...") # HTML 카드 생성 html_content = """

Models Global Download Rankings (Top 3000)

""" # 순위권 내 모델 카드 생성 for model in filtered_models: model_id = model['id'] rank = model['rank'] likes = model.get('likes', 0) downloads = model.get('downloads', 0) title = model.get('title', 'No Title') html_content += f"""

Global Rank #{rank} - {model_id}

{title}

👍 Likes: {likes:,}

⬇️ Downloads: {downloads:,}

Visit Model 🔗
""" html_content += "
" # 데이터프레임 생성 df_data = [] # 모든 모델 정보를 데이터프레임에 추가 for model in filtered_models: df_data.append({ 'Global Rank': model['rank'], 'Model ID': model['id'], 'Title': model.get('title', 'No Title'), 'Likes': f"{model.get('likes', 0):,}", 'Downloads': f"{model.get('downloads', 0):,}", 'URL': target_models[model['id']] }) df = pd.DataFrame(df_data) progress(1.0, desc="Complete!") return fig, html_content, df except Exception as e: print(f"Error in get_models_data: {str(e)}") return create_error_plot(), f"
에러 발생: {str(e)}
", pd.DataFrame() # 관심 스페이스 URL 리스트와 정보 target_spaces = { "openfree/Korean-Leaderboard": "https://huggingface.co/spaces/openfree/Korean-Leaderboard", "ginipick/FLUXllama": "https://huggingface.co/spaces/ginipick/FLUXllama", "ginipick/SORA-3D": "https://huggingface.co/spaces/ginipick/SORA-3D", "fantaxy/Sound-AI-SFX": "https://huggingface.co/spaces/fantaxy/Sound-AI-SFX", "fantos/flx8lora": "https://huggingface.co/spaces/fantos/flx8lora", "ginigen/Canvas": "https://huggingface.co/spaces/ginigen/Canvas", "fantaxy/erotica": "https://huggingface.co/spaces/fantaxy/erotica", "ginipick/time-machine": "https://huggingface.co/spaces/ginipick/time-machine", "aiqcamp/FLUX-VisionReply": "https://huggingface.co/spaces/aiqcamp/FLUX-VisionReply", "openfree/Tetris-Game": "https://huggingface.co/spaces/openfree/Tetris-Game", "openfree/everychat": "https://huggingface.co/spaces/openfree/everychat", "VIDraft/mouse1": "https://huggingface.co/spaces/VIDraft/mouse1", "kolaslab/alpha-go": "https://huggingface.co/spaces/kolaslab/alpha-go", "ginipick/text3d": "https://huggingface.co/spaces/ginipick/text3d", "openfree/trending-board": "https://huggingface.co/spaces/openfree/trending-board", "cutechicken/tankwar": "https://huggingface.co/spaces/cutechicken/tankwar", "openfree/game-jewel": "https://huggingface.co/spaces/openfree/game-jewel", "VIDraft/mouse-chat": "https://huggingface.co/spaces/VIDraft/mouse-chat", "ginipick/AccDiffusion": "https://huggingface.co/spaces/ginipick/AccDiffusion", "aiqtech/Particle-Accelerator-Simulation": "https://huggingface.co/spaces/aiqtech/Particle-Accelerator-Simulation", "openfree/GiniGEN": "https://huggingface.co/spaces/openfree/GiniGEN", "kolaslab/3DAudio-Spectrum-Analyzer": "https://huggingface.co/spaces/kolaslab/3DAudio-Spectrum-Analyzer", "openfree/trending-news-24": "https://huggingface.co/spaces/openfree/trending-news-24", "ginipick/Realtime-FLUX": "https://huggingface.co/spaces/ginipick/Realtime-FLUX", "VIDraft/prime-number": "https://huggingface.co/spaces/VIDraft/prime-number", "kolaslab/zombie-game": "https://huggingface.co/spaces/kolaslab/zombie-game", "fantos/miro-game": "https://huggingface.co/spaces/fantos/miro-game", "kolaslab/shooting": "https://huggingface.co/spaces/kolaslab/shooting", "VIDraft/Mouse-Hackathon": "https://huggingface.co/spaces/VIDraft/Mouse-Hackathon", "upstage/open-ko-llm-leaderboard": "https://huggingface.co/spaces/upstage/open-ko-llm-leaderboard", "LGAI-EXAONE/EXAONE-3.5-Instruct-Demo": "https://huggingface.co/spaces/LGAI-EXAONE/EXAONE-3.5-Instruct-Demo", "cutechicken/TankWar3D": "https://huggingface.co/spaces/cutechicken/TankWar3D", "kolaslab/RC4-EnDecoder": "https://huggingface.co/spaces/kolaslab/RC4-EnDecoder", "kolaslab/simulator": "https://huggingface.co/spaces/kolaslab/simulator", "kolaslab/calculator": "https://huggingface.co/spaces/kolaslab/calculator", "etri-vilab/Ko-LLaVA": "https://huggingface.co/spaces/etri-vilab/Ko-LLaVA", "etri-vilab/KOALA": "https://huggingface.co/spaces/etri-vilab/KOALA", "naver-clova-ix/donut-base-finetuned-cord-v2": "https://huggingface.co/spaces/naver-clova-ix/donut-base-finetuned-cord-v2", "NCSOFT/VARCO_Arena": "https://huggingface.co/spaces/NCSOFT/VARCO_Arena" } def get_spaces_data(sort_type="trending", progress=gr.Progress()): """스페이스 데이터 가져오기 (trending 또는 modes)""" url = "https://huggingface.co/api/spaces" params = { 'full': 'true', 'limit': 300 } if sort_type == "modes": params['sort'] = 'likes' try: progress(0, desc=f"Fetching {sort_type} spaces data...") response = requests.get(url, params=params) response.raise_for_status() all_spaces = response.json() # 순위 정보 저장 space_ranks = {} for idx, space in enumerate(all_spaces, 1): space_id = space.get('id', '') if space_id in target_spaces: space['rank'] = idx space_ranks[space_id] = space spaces = [space_ranks[space_id] for space_id in space_ranks.keys()] spaces.sort(key=lambda x: x['rank']) progress(0.3, desc="Creating visualization...") # 시각화 생성 fig = go.Figure() # 데이터 준비 ids = [space['id'] for space in spaces] ranks = [space['rank'] for space in spaces] likes = [space.get('likes', 0) for space in spaces] titles = [space.get('cardData', {}).get('title') or space.get('title', 'No Title') for space in spaces] # Y축 값을 반전 y_values = [301 - r for r in ranks] # 막대 그래프 생성 fig.add_trace(go.Bar( x=ids, y=y_values, text=[f"Rank: {r}
Title: {t}
Likes: {l}" for r, t, l in zip(ranks, titles, likes)], textposition='auto', marker_color='rgb(158,202,225)', opacity=0.8 )) fig.update_layout( title={ 'text': f'Hugging Face Spaces {sort_type.title()} Rankings (Top 300)', 'y':0.95, 'x':0.5, 'xanchor': 'center', 'yanchor': 'top' }, xaxis_title='Space ID', yaxis_title='Rank', yaxis=dict( ticktext=[str(i) for i in range(1, 301, 20)], tickvals=[301 - i for i in range(1, 301, 20)], range=[0, 300] ), height=800, showlegend=False, template='plotly_white', xaxis_tickangle=-45 ) progress(0.6, desc="Creating space cards...") # HTML 카드 생성 html_content = f"""

{sort_type.title()} Rankings

""" for space in spaces: space_id = space['id'] rank = space['rank'] title = space.get('cardData', {}).get('title') or space.get('title', 'No Title') likes = space.get('likes', 0) # 스페이스 함수의 HTML 카드 생성 부분 수정 html_content += f"""

Rank #{rank} - {space_id}

{title}

👍 Likes: {likes}

Visit Space 🔗
""" html_content += "
" # 데이터프레임 생성 df = pd.DataFrame([{ 'Rank': space['rank'], 'Space ID': space['id'], 'Title': space.get('cardData', {}).get('title') or space.get('title', 'No Title'), 'Likes': space.get('likes', 0), 'URL': target_spaces[space['id']] } for space in spaces]) progress(1.0, desc="Complete!") return fig, html_content, df except Exception as e: print(f"Error in get_spaces_data: {str(e)}") error_html = f'
Error: {str(e)}
' error_plot = create_error_plot() return error_plot, error_html, pd.DataFrame() def create_trend_visualization(spaces_data): if not spaces_data: return create_error_plot() fig = go.Figure() # 순위 데이터 준비 ranks = [] for idx, space in enumerate(spaces_data, 1): space_id = space.get('id', '') if space_id in target_spaces: ranks.append({ 'id': space_id, 'rank': idx, 'likes': space.get('likes', 0), 'title': space.get('title', 'N/A'), 'views': space.get('views', 0) }) if not ranks: return create_error_plot() # 순위별로 정렬 ranks.sort(key=lambda x: x['rank']) # 플롯 데이터 생성 ids = [r['id'] for r in ranks] rank_values = [r['rank'] for r in ranks] likes = [r['likes'] for r in ranks] views = [r['views'] for r in ranks] # 막대 그래프 생성 fig.add_trace(go.Bar( x=ids, y=rank_values, text=[f"Rank: {r}
Likes: {l}
Views: {v}" for r, l, v in zip(rank_values, likes, views)], textposition='auto', marker_color='rgb(158,202,225)', opacity=0.8 )) fig.update_layout( title={ 'text': 'Current Trending Ranks (All Target Spaces)', 'y':0.95, 'x':0.5, 'xanchor': 'center', 'yanchor': 'top' }, xaxis_title='Space ID', yaxis_title='Trending Rank', yaxis_autorange='reversed', height=800, showlegend=False, template='plotly_white', xaxis_tickangle=-45 ) return fig # 토큰이 없는 경우를 위한 대체 함수 def get_trending_spaces_without_token(): try: url = "https://huggingface.co/api/spaces" params = { 'sort': 'likes', 'direction': -1, 'limit': 1000, 'full': 'true' } response = requests.get(url, params=params) if response.status_code == 200: return response.json() else: print(f"API 요청 실패 (토큰 없음): {response.status_code}") print(f"Response: {response.text}") return None except Exception as e: print(f"API 호출 중 에러 발생 (토큰 없음): {str(e)}") return None # API 토큰 설정 및 함수 선택 if not HF_TOKEN: get_trending_spaces = get_trending_spaces_without_token def create_error_plot(): fig = go.Figure() fig.add_annotation( text="데이터를 불러올 수 없습니다.\n(API 인증이 필요합니다)", xref="paper", yref="paper", x=0.5, y=0.5, showarrow=False, font=dict(size=20) ) fig.update_layout( title="Error Loading Data", height=400 ) return fig def create_space_info_html(spaces_data): if not spaces_data: return "

데이터를 불러오는데 실패했습니다.

" html_content = """

Current Trending Rankings

""" # 모든 target spaces를 포함하도록 수정 for space_id in target_spaces.keys(): space_info = next((s for s in spaces_data if s.get('id') == space_id), None) if space_info: rank = next((idx for idx, s in enumerate(spaces_data, 1) if s.get('id') == space_id), 'N/A') html_content += f"""

#{rank} - {space_id}

👍 Likes: {space_info.get('likes', 'N/A')}

👀 Views: {space_info.get('views', 'N/A')}

{space_info.get('title', 'N/A')}

{space_info.get('description', 'N/A')[:100]}...

Visit Space 🔗
""" else: html_content += f"""

{space_id}

Not in trending

Visit Space 🔗
""" html_content += "
" return html_content def create_data_table(spaces_data): if not spaces_data: return pd.DataFrame() rows = [] for idx, space in enumerate(spaces_data, 1): space_id = space.get('id', '') if space_id in target_spaces: rows.append({ 'Rank': idx, 'Space ID': space_id, 'Likes': space.get('likes', 'N/A'), 'Title': space.get('title', 'N/A'), 'URL': target_spaces[space_id] }) return pd.DataFrame(rows) def refresh_data(): spaces_data = get_trending_spaces() if spaces_data: plot = create_trend_visualization(spaces_data) info = create_space_info_html(spaces_data) df = create_data_table(spaces_data) return plot, info, df else: return create_error_plot(), "
API 인증이 필요합니다.
", pd.DataFrame() with gr.Blocks(theme=gr.themes.Soft()) as demo: gr.Markdown(""" # 🤗 허깅페이스 '한국 리더보드' 실시간으로 Hugging Face의 Spaces와 Models 인기 순위를 분석합니다. 신규 등록 요청: arxivgpt@gmail.com """) # 새로 고침 버튼을 상단으로 이동하고 한글로 변경 refresh_btn = gr.Button("🔄 새로 고침", variant="primary") with gr.Tab("Spaces Trending"): trending_plot = gr.Plot() trending_info = gr.HTML() trending_df = gr.DataFrame() with gr.Tab("Models Trending"): models_plot = gr.Plot() models_info = gr.HTML() models_df = gr.DataFrame() def refresh_all_data(): spaces_results = get_spaces_data("trending") models_results = get_models_data() return [*spaces_results, *models_results] refresh_btn.click( refresh_all_data, outputs=[ trending_plot, trending_info, trending_df, models_plot, models_info, models_df ] ) # 초기 데이터 로드 spaces_results = get_spaces_data("trending") models_results = get_models_data() trending_plot.value, trending_info.value, trending_df.value = spaces_results models_plot.value, models_info.value, models_df.value = models_results # Gradio 앱 실행 demo.launch( server_name="0.0.0.0", server_port=7860, share=False )