sysrobson's picture
Release Sagui-4B
9ea491e verified
Raw History Blame Contribute Delete
1.5 kB
"""Render README.md from card/README.template.md, release.json, benchmark results and demo transcripts.
Usage: python scripts/render_card.py
Numbers and demo outputs are always read from their result files, never typed into the card.
"""
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
def load(rel):
return json.loads((ROOT / rel).read_text(encoding="utf-8"))
def donation_links(cfg):
return [(name, url) for name, url in cfg["donations"].items() if url]
def main():
cfg = load("release.json")
bench = load("benchmarks/results.json")
demos = {r["demo"]: r for r in load("examples/transcripts.json")["results"]}
links = donation_links(cfg)
values = {
"NS": cfg["hf_namespace"],
"REPO": cfg["repo_name"],
"DONATE_TOP": " · ".join(f"[☕ {name}]({url})" for name, url in links),
"DONATE_LIST": "\n".join(f"- **[{name}]({url})**" for name, url in links),
}
for key, value in bench.items():
values[f"BENCH_{key}"] = str(value)
for name, demo in demos.items():
values[f"DEMO_{name}"] = demo["content"].strip()
values[f"STATS_{name}"] = f"{demo['tokens']} tokens, {demo['seconds']} s"
text = (ROOT / "card" / "README.template.md").read_text(encoding="utf-8")
for key, value in values.items():
text = text.replace(f"@@{key}@@", value)
(ROOT / "README.md").write_text(text, encoding="utf-8", newline="\n")
if __name__ == "__main__":
main()