File size: 1,499 Bytes
d33ce47 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | """Resume every answer that hit the 32k limit up to 64k tokens, for base Dory and Dory-Beam-4B at 1, 2 and 4 loops
plus IFEval, one container per config. Reads the truncated records from data/eval/results/.
MODAL_PROFILE=aside modal deploy modal_app/eval_dory.py::APP
MODAL_PROFILE=aside python3 scripts/spawn_continue.py [--smoke]
Results land on the beam-dory-data Volume as eval/results/<model>/[ifeval_]loops<L>-cont64k.jsonl.
"""
import json
import sys
from pathlib import Path
import modal
RES = Path(__file__).resolve().parent.parent / "data" / "eval" / "results"
MODELS = {"base": "base", "mix050": "merges/rA-t050"}
CONFIGS = [(tag, l, "bench") for tag in MODELS for l in (1, 2, 4)] + [(tag, 2, "ifeval") for tag in MODELS]
smoke = "--smoke" in sys.argv
fn = modal.Function.from_name("beam-dory-eval", "continue_truncated", environment_name="main")
for tag, loops, kind in ([("base", 2, "bench")] if smoke else CONFIGS):
f = RES / f"{tag}_{'ifeval_' if kind == 'ifeval' else ''}loops{loops}.jsonl"
recs = [r for r in map(json.loads, open(f)) if r["finish"] == "length"]
if smoke: # 3 records, 256 more tokens each: checks the resumed text continues coherently
recs = recs[:3]
call = fn.spawn(MODELS[tag], loops, recs, kind, (recs[0]["tokens"] + 256 + 1023) // 1024 * 1024)
else:
call = fn.spawn(MODELS[tag], loops, recs, kind, 65536)
print(json.dumps({"tag": tag, "loops": loops, "kind": kind, "n": len(recs), "call": call.object_id}))
|