|
1 | | -import math |
2 | 1 | from datetime import datetime, timedelta |
3 | 2 | from io import StringIO |
4 | 3 | from typing import TYPE_CHECKING, List, Optional |
|
23 | 22 | RunItem, |
24 | 23 | SubmissionItem, |
25 | 24 | ) |
26 | | -from libkernelbot.report import make_benchmark_log |
27 | 25 | from libkernelbot.submission import SubmissionRequest, prepare_submission |
28 | | -from libkernelbot.utils import format_time, run_item_to_run_result, setup_logging |
| 26 | +from libkernelbot.utils import format_time, setup_logging |
29 | 27 |
|
30 | 28 | if TYPE_CHECKING: |
31 | 29 | from kernelbot.main import ClusterBot |
@@ -611,53 +609,10 @@ async def get_task_milestones( |
611 | 609 | ): |
612 | 610 | await interaction.response.defer(ephemeral=True) |
613 | 611 |
|
614 | | - message = f"# Milestones for `{leaderboard_name}`\n" |
615 | | - |
616 | 612 | try: |
617 | | - with self.bot.leaderboard_db as db: |
618 | | - lb = db.get_leaderboard(leaderboard_name) |
619 | | - milestones = db.get_leaderboard_milestones(leaderboard_id=lb["id"]) |
620 | | - |
621 | | - if len(milestones) == 0: |
622 | | - await send_discord_message( |
623 | | - interaction, |
624 | | - f"Leaderboard `{leaderboard_name}` does not provide any milestones", |
625 | | - ephemeral=True, |
626 | | - ) |
627 | | - return |
628 | | - |
629 | | - for milestone in milestones: |
630 | | - message += f"## {milestone['name']}\n" |
631 | | - message += milestone["description"] + "\n" |
632 | | - with self.bot.leaderboard_db as db: |
633 | | - runs = db.get_runs_generic(milestone_id=milestone["id"]) |
634 | | - |
635 | | - runs = [r for r in runs if r["mode"] == SubmissionMode.LEADERBOARD.value] |
636 | | - |
637 | | - if len(runs) == 0: |
638 | | - message += "⚠️ No runs available. Maybe they haven't been triggered yet?\n" |
639 | | - |
640 | | - if gpu is not None: |
641 | | - runs = [r for r in runs if r["runner"] == gpu] |
642 | | - if len(runs) == 0: |
643 | | - message += f"⚠️ No runs available for GPU {gpu}\n" |
644 | | - |
645 | | - max_len = 0 |
646 | | - min_val = float("inf") |
647 | | - for run in runs: |
648 | | - max_len = max(max_len, len(run["runner"])) |
649 | | - min_val = min(min_val, run["score"]) |
650 | | - |
651 | | - digits = max(0, 1 - math.floor(math.log10(min_val))) |
652 | | - |
653 | | - message += "```\n" |
654 | | - for run in runs: |
655 | | - message += f" {run['runner']:<{max_len}}: {run['score']:.{digits}f}\n" |
656 | | - message += "```\n\n" |
657 | | - |
658 | 613 | await send_discord_message( |
659 | 614 | interaction, |
660 | | - message, |
| 615 | + self.bot.backend.get_milestone_overview(leaderboard_name, gpu), |
661 | 616 | ephemeral=True, |
662 | 617 | ) |
663 | 618 |
|
@@ -685,41 +640,7 @@ async def show_milestone_result( |
685 | 640 | gpu: Optional[str] = None, |
686 | 641 | ): |
687 | 642 | await interaction.response.defer(ephemeral=True) |
688 | | - with self.bot.leaderboard_db as db: |
689 | | - lb = db.get_leaderboard(leaderboard_name) |
690 | | - milestones = db.get_leaderboard_milestones(leaderboard_id=lb["id"]) |
691 | | - |
692 | | - selected = None |
693 | | - for milestone in milestones: |
694 | | - if milestone["name"].lower() == milestone_name.lower(): |
695 | | - selected = milestone |
696 | | - break |
697 | | - |
698 | | - if selected is None: |
699 | | - await send_discord_message( |
700 | | - interaction, |
701 | | - f"Could not find milestone `{milestone_name}` for leaderboard `{leaderboard_name}`", |
702 | | - ephemeral=True, |
703 | | - ) |
704 | | - return |
705 | | - |
706 | | - with self.bot.leaderboard_db as db: |
707 | | - runs = db.get_runs_generic(milestone_id=selected["id"]) |
708 | | - |
709 | | - runs = [r for r in runs if r["mode"] == SubmissionMode.LEADERBOARD.value] |
710 | | - |
711 | | - if len(runs) == 0: |
712 | | - await send_discord_message( |
713 | | - interaction, |
714 | | - f"⚠️ No runs available for milestone `{milestone_name}`." |
715 | | - "Maybe they haven't been triggered yet?", |
716 | | - ephemeral=True, |
717 | | - ) |
718 | | - return |
719 | | - |
720 | | - for run in runs: |
721 | | - log = make_benchmark_log(run_item_to_run_result(run)) |
722 | | - message = f"{milestone_name} on {run['runner']}\n```{log}```\n" |
| 643 | + for message in self.bot.backend.get_milestone_result(leaderboard_name, milestone_name, gpu): |
723 | 644 | await send_discord_message( |
724 | 645 | interaction, |
725 | 646 | message, |
|
0 commit comments