Leaderboard¶
openlithohub.leaderboard.schema
¶
Pydantic schemas for leaderboard entries and submissions.
ProcessNode
¶
MaskTopology
¶
LeaderboardTrack
¶
Bases: str, Enum
Leaderboard track. Default is the open ongoing competition.
Hackathon tracks scope a fixed dataset + node + frozen test split for
a bounded period. Entries marked with a hackathon track are
displayed in their own ranked table on the website and never mix
with the open leaderboard. See docs/hackathon.md.
Source code in src/openlithohub/leaderboard/schema.py
BenchmarkResult
¶
Bases: BaseModel
A single benchmark submission for the leaderboard.
The leaderboard ingests this schema from community pull requests via the
auto-leaderboard workflow. The schema is the only firewall between
PR-supplied YAML and the canonical store, so it forbids extra fields,
bounds string lengths, and validates URL fields.
Source code in src/openlithohub/leaderboard/schema.py
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 | |
openlithohub.leaderboard.tracker
¶
SOTA tracking and leaderboard management.
The store is a single JSON file shared across CLI invocations and the Spaces
app. Read-modify-write therefore needs:
- A POSIX advisory lock (fcntl.flock) on a sidecar .lock file so two
concurrent submitters serialize.
- An atomic rename (tempfile + os.replace) so the file is never
partially written.
Submission IDs are stored under the public submission_id field of
BenchmarkResult so they round-trip through model_validate.
LeaderboardStore
¶
JSON file-backed leaderboard data store.
Source code in src/openlithohub/leaderboard/tracker.py
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | |
submit_result(result, *, store=None)
¶
Submit a benchmark result to the leaderboard.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
result
|
BenchmarkResult
|
Validated BenchmarkResult entry. |
required |
store
|
LeaderboardStore | None
|
Optional explicit store (for testing). Uses default if None. |
None
|
Returns:
| Type | Description |
|---|---|
str
|
Submission ID for tracking. |
Source code in src/openlithohub/leaderboard/tracker.py
get_leaderboard(dataset=None, process_node=None, *, store=None)
¶
Retrieve current leaderboard entries with optional filtering.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dataset
|
str | None
|
Filter by dataset name. |
None
|
process_node
|
str | None
|
Filter by process node. |
None
|
store
|
LeaderboardStore | None
|
Optional explicit store (for testing). Uses default if None. |
None
|
Returns:
| Type | Description |
|---|---|
list[BenchmarkResult]
|
Sorted list of BenchmarkResult entries (by L2 ascending, then |
list[BenchmarkResult]
|
PV-band mean, then wafer-EPE mean — see |