Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import os | |
import json | |
import logging | |
from datetime import datetime | |
from pathlib import Path | |
from typing import Dict, Any, List, Tuple | |
from huggingface_hub import HfApi | |
from dotenv import load_dotenv | |
# Get the backend directory path | |
BACKEND_DIR = Path(__file__).parent.parent | |
ROOT_DIR = BACKEND_DIR.parent | |
# Load environment variables from .env file in root directory | |
load_dotenv(ROOT_DIR / ".env") | |
# Configure logging | |
logging.basicConfig( | |
level=logging.INFO, | |
format='%(message)s' | |
) | |
logger = logging.getLogger(__name__) | |
# Initialize Hugging Face API | |
HF_TOKEN = os.getenv("HF_TOKEN") | |
if not HF_TOKEN: | |
raise ValueError("HF_TOKEN not found in environment variables") | |
api = HfApi(token=HF_TOKEN) | |
# Default organization | |
HF_ORGANIZATION = os.getenv('HF_ORGANIZATION', 'open-llm-leaderboard') | |
def get_last_votes(limit: int = 5) -> List[Dict]: | |
"""Get the last votes from the votes dataset""" | |
try: | |
logger.info("\nFetching last votes...") | |
# Download and read votes file | |
logger.info("Downloading votes file...") | |
votes_file = api.hf_hub_download( | |
repo_id=f"{HF_ORGANIZATION}/votes", | |
filename="votes_data.jsonl", | |
repo_type="dataset" | |
) | |
logger.info("Reading votes file...") | |
votes = [] | |
with open(votes_file, 'r') as f: | |
for line in f: | |
try: | |
vote = json.loads(line) | |
votes.append(vote) | |
except json.JSONDecodeError: | |
continue | |
# Sort by timestamp and get last n votes | |
logger.info("Sorting votes...") | |
votes.sort(key=lambda x: x.get('timestamp', ''), reverse=True) | |
last_votes = votes[:limit] | |
logger.info(f"β Found {len(last_votes)} recent votes") | |
return last_votes | |
except Exception as e: | |
logger.error(f"Error reading votes: {str(e)}") | |
return [] | |
def get_last_models(limit: int = 5) -> List[Dict]: | |
"""Get the last models from the requests dataset using commit history""" | |
try: | |
logger.info("\nFetching last model submissions...") | |
# Get commit history | |
logger.info("Getting commit history...") | |
commits = list(api.list_repo_commits( | |
repo_id=f"{HF_ORGANIZATION}/requests", | |
repo_type="dataset" | |
)) | |
logger.info(f"Found {len(commits)} commits") | |
# Track processed files to avoid duplicates | |
processed_files = set() | |
models = [] | |
# Process commits until we have enough models | |
for i, commit in enumerate(commits): | |
logger.info(f"Processing commit {i+1}/{len(commits)} ({commit.created_at})") | |
# Look at added/modified files in this commit | |
files_to_process = [f for f in (commit.added + commit.modified) if f.endswith('.json')] | |
if files_to_process: | |
logger.info(f"Found {len(files_to_process)} JSON files in commit") | |
for file in files_to_process: | |
if file in processed_files: | |
continue | |
processed_files.add(file) | |
logger.info(f"Downloading {file}...") | |
try: | |
# Download and read the file | |
content = api.hf_hub_download( | |
repo_id=f"{HF_ORGANIZATION}/requests", | |
filename=file, | |
repo_type="dataset" | |
) | |
with open(content, 'r') as f: | |
model_data = json.load(f) | |
models.append(model_data) | |
logger.info(f"β Added model {model_data.get('model', 'Unknown')}") | |
if len(models) >= limit: | |
logger.info("Reached desired number of models") | |
break | |
except Exception as e: | |
logger.error(f"Error reading file {file}: {str(e)}") | |
continue | |
if len(models) >= limit: | |
break | |
logger.info(f"β Found {len(models)} recent model submissions") | |
return models | |
except Exception as e: | |
logger.error(f"Error reading models: {str(e)}") | |
return [] | |
def main(): | |
"""Display last activities from the leaderboard""" | |
try: | |
# Get last votes | |
logger.info("\n=== Last Votes ===") | |
last_votes = get_last_votes() | |
if last_votes: | |
for vote in last_votes: | |
logger.info(f"\nModel: {vote.get('model')}") | |
logger.info(f"User: {vote.get('username')}") | |
logger.info(f"Timestamp: {vote.get('timestamp')}") | |
else: | |
logger.info("No votes found") | |
# Get last model submissions | |
logger.info("\n=== Last Model Submissions ===") | |
last_models = get_last_models() | |
if last_models: | |
for model in last_models: | |
logger.info(f"\nModel: {model.get('model')}") | |
logger.info(f"Submitter: {model.get('sender', 'Unknown')}") | |
logger.info(f"Status: {model.get('status', 'Unknown')}") | |
logger.info(f"Submission Time: {model.get('submitted_time', 'Unknown')}") | |
logger.info(f"Precision: {model.get('precision', 'Unknown')}") | |
logger.info(f"Weight Type: {model.get('weight_type', 'Unknown')}") | |
else: | |
logger.info("No models found") | |
except Exception as e: | |
logger.error(f"Global error: {str(e)}") | |
if __name__ == "__main__": | |
main() |