Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 18 additions & 13 deletions kernelboard/api/leaderboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,12 +197,12 @@ def is_result_invalid(result):
HARDCODED_USER_ID = "205851652572315658"


@leaderboard_bp.route("/ai_trend/<int:leaderboard_id>", methods=["GET"])
@leaderboard_bp.route("/<int:leaderboard_id>/ai_trend", methods=["GET"])
def get_ai_trend(leaderboard_id: int):
"""
GET /leaderboard/timeseries/<leaderboard_id>
GET /leaderboard/<leaderboard_id>/ai_trend

Returns time series data for submissions matching file name patterns like:
Returns time series data for ai_trend matching file name patterns like:
- H100_claude-opus-4.5_ka_submission
- H100_gpt-5-2_ka_submission
- H100_gpt-5_ka_submission
Expand Down Expand Up @@ -248,6 +248,10 @@ def get_ai_trend(leaderboard_id: int):
score, passed, gpu_type, mode) = row
model_name = parse_model_from_filename(file_name)

# Skip files that don't match the ka_submission.py pattern
if model_name is None:
continue

items.append({
"submission_id": submission_id,
"file_name": file_name,
Expand Down Expand Up @@ -277,22 +281,23 @@ def get_ai_trend(leaderboard_id: int):

def parse_model_from_filename(file_name: str) -> str:
"""
Extract model name from file names like:
- matmul_py_H100_claude-opus-4.5_ka_submission.py -> claude-opus-4.5
- matmul_py_H100_gpt-5-2_ka_submission.py -> gpt-5-2
- matmul_py_H100_gpt-5_ka_submission.py -> gpt-5
- 1.py -> 1.py (no match, return as-is)
Extract model name from file names ending with ka_submission.py:
- trimul_H100_claude-opus-4.5_ka_submission.py -> claude-opus-4.5
- trimul_H100_gpt-52_ka_submission.py -> gpt-52
- trimul_H100_gpt-5_ka_submission.py -> gpt-5
Returns None if file doesn't match pattern.
"""
if not file_name:
return "unknown"
if not file_name or not file_name.endswith("_ka_submission.py"):
return None

# Pattern: {problem}_py_{gpu}_{model}_ka_submission.py
pattern = r"^.+_py_[A-Za-z0-9]+_(.+?)_ka_submission\.py$"
# Extract model name: everything between last GPU type and _ka_submission
# Pattern: {anything}_{gpu}_{model}_ka_submission.py
pattern = r"^.+_[A-Za-z0-9]+_(.+?)_ka_submission\.py$"
match = re.match(pattern, file_name)
if match:
return match.group(1)

return file_name
return None


def group_by_model(items: List[dict]) -> dict:
Expand Down
Loading