File size: 1,449 Bytes
81afbdf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
"""Sort evaluation queue by priority."""

from typing import List
from huggingface_hub import HfApi

from src.backend.manage_requests import EvalRequest


def sort_models_by_priority(api: HfApi, models: List[EvalRequest]) -> List[EvalRequest]:
    """
    Sort models by priority for evaluation.

    Current strategy: FIFO (first in, first out) based on submission time.
    Can be extended to prioritize by model popularity, size, etc.

    Args:
        api: HuggingFace API client
        models: List of evaluation requests

    Returns:
        Sorted list of evaluation requests
    """
    # Sort by submission time (oldest first)
    return sorted(models, key=lambda x: x.submitted_time)


def sort_models_by_likes(api: HfApi, models: List[EvalRequest]) -> List[EvalRequest]:
    """
    Sort models by Hub likes (most popular first).

    Args:
        api: HuggingFace API client
        models: List of evaluation requests

    Returns:
        Sorted list of evaluation requests
    """
    return sorted(models, key=lambda x: x.likes, reverse=True)


def sort_models_by_size(models: List[EvalRequest], ascending: bool = True) -> List[EvalRequest]:
    """
    Sort models by parameter count.

    Args:
        models: List of evaluation requests
        ascending: If True, smallest models first

    Returns:
        Sorted list of evaluation requests
    """
    return sorted(models, key=lambda x: x.params, reverse=not ascending)