Files
sunnypilot/scripts/reporter.py
T
Harald Schäfer 2895346746 Rebel Legion model (#38164)
* 3e5b7d32-e114-4517-96b4-b3a2448fd939/400

* 9ffd502c-01d0-40f3-93c2-07a4d3e4445c/400

* 1afc2042-8761-4663-ae6a-d593b13defd0/400

* d4b183da-3b8c-4ff7-8927-e3e7216ddb86/400

* 60a46520-f02f-49c5-8eae-e0f8de92af07/400

* ca63f597-de00-478f-970c-302069a59130/400

* 0322768e-5d7e-46e6-9712-d52de312e1da/400

* d25f38c8-8689-42a7-8326-f0c7ce00625f

* f14f0be4-bf1e-4dc3-914d-3d9a23b5a05a/400

* lil smooth

* 03dfde49-54e6-4129-b05f-24b0b0c7e5f0/400

* 6d9d6f8a-5c82-41f6-92aa-4c1a11eb5645/400

* ci: fix model review tinygrad import

* ci: skip unfetched big model in review

---------

Co-authored-by: Toby Penner <toby@comma.ai>
2026-07-22 18:12:13 -07:00

49 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import glob
from tinygrad.nn.onnx import OnnxPBParser
BASEDIR = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../"))
MASTER_PATH = os.getenv("MASTER_PATH", BASEDIR)
MODEL_PATH = "/openpilot/selfdrive/modeld/models/"
class MetadataOnnxPBParser(OnnxPBParser):
def _parse_ModelProto(self) -> dict:
obj = {"metadata_props": []}
for fid, wire_type in self._parse_message(self.reader.len):
match fid:
case 14:
obj["metadata_props"].append(self._parse_StringStringEntryProto())
case _:
self.reader.skip_field(wire_type)
return obj
def get_checkpoint(f):
model = MetadataOnnxPBParser(f).parse()
metadata = {prop["key"]: prop["value"] for prop in model["metadata_props"]}
# "<uuid>" or ".../<run_uuid>/<step>"; combined models list vision then policy
parts = metadata['model_checkpoint'].split('/')
return parts[-2] if len(parts) > 1 else parts[0]
if __name__ == "__main__":
print("| | master | PR branch |")
print("|-| ----- | --------- |")
for f in glob.glob(BASEDIR + MODEL_PATH + "/*.onnx"):
fn = os.path.basename(f)
if fn == "big_driving_supercombo.onnx":
continue
master_path = MASTER_PATH + MODEL_PATH + fn
if os.path.exists(master_path):
master = get_checkpoint(master_path)
master_col = f"[{master}](https://reporter.comma.life/{master})"
else:
master_col = "N/A (new model)"
pr = get_checkpoint(BASEDIR + MODEL_PATH + fn)
print("|", fn, "|", master_col, "|", f"[{pr}](https://reporter.comma.life/{pr})", "|")