LAMM / scripts /stream_eval.py
bastasie's picture
Rename stream_eval.py to scripts/stream_eval.py
5c2a0fe verified
Raw History Blame Contribute Delete
1.46 kB
import argparse, json
from lamm.data import stream_hf, batched
from lamm.verify import ProofAuditor
from lamm.data import format_sft
from lamm.metrics import summarize
def main():
ap=argparse.ArgumentParser()
ap.add_argument("--dataset",default="nvidia/Nemotron-SFT-Math-v4")
ap.add_argument("--split",default="train")
ap.add_argument("--source",default="StackExchange-Math")
ap.add_argument("--batch-size",type=int,default=16)
ap.add_argument("--batches",type=int,default=10)
args=ap.parse_args()
auditor=ProofAuditor()
audits=[]
for bi,batch in enumerate(batched(stream_hf(args.dataset,args.split,args.source),args.batch_size),1):
print(f"BATCH {bi}: {len(batch)}")
for rec in batch:
assistant = ""
for m in reversed(rec.messages):
if isinstance(m,dict) and m.get("role")=="assistant":
assistant=str(m.get("content") or m.get("reasoning_content") or "")
break
if not assistant:
continue
import re
steps=[x.strip() for x in re.split(r"(?i)(?=\\bSTEP\\s*\\d+\\b)|\\n\\s*\\n",assistant) if x.strip()]
if len(steps)==1:
steps=[assistant]
a=auditor.audit(steps,rec.expected_answer)
audits.append(a)
if bi>=args.batches: break
print(json.dumps(summarize(audits),indent=2))
if __name__=="__main__":
main()