diff --git a/kernelboard/api/leaderboard.py b/kernelboard/api/leaderboard.py index a7399408..d662cc0e 100644 --- a/kernelboard/api/leaderboard.py +++ b/kernelboard/api/leaderboard.py @@ -303,14 +303,28 @@ def parse_model_from_filename(file_name: str) -> str: def group_by_model(items: List[dict]) -> dict: """ - Group time series items by model name for easier charting. + Group time series items by gpu_type first, then by model name. + Skips items where model or gpu_type is unknown. + Returns: { "H100": { "claude-opus-4.5": [...], "gpt-5": [...] } } """ series = {} for item in items: - model = item.get("model", "unknown") - if model not in series: - series[model] = [] - series[model].append({ + gpu_type = item.get("gpu_type") + model = item.get("model") + + # Skip if model or gpu_type is unknown or missing + if not gpu_type or gpu_type == "unknown": + continue + if not model or model == "unknown": + continue + + if gpu_type not in series: + series[gpu_type] = {} + + if model not in series[gpu_type]: + series[gpu_type][model] = [] + + series[gpu_type][model].append({ "submission_time": item["submission_time"], "score": item["score"], "submission_id": item["submission_id"],