42e commited on
Commit
3fec9e2
·
verified ·
1 Parent(s): e036bbf

Upload folder using huggingface_hub

Browse files
src/mathcompose/eval/run.py CHANGED
@@ -33,12 +33,21 @@ def _runner(base_id, adapter):
33
  return HFRunner(base_id, adapter_path=adapter)
34
 
35
 
 
 
 
 
 
 
 
 
 
36
  def cmd_processbench(a):
37
  from .processbench import evaluate_batched
38
  r = _runner(a.base_id, a.adapter)
39
- bs = max(1, a.batch_size // max(1, a.maj_k)) # cap concurrent seqs = prompts * k
40
  res = evaluate_batched(r, splits=tuple(a.splits), limit=a.limit, n=a.maj_k,
41
- batch_size=bs, temperature=(0.6 if a.maj_k > 1 else 0.0),
 
42
  max_new_tokens=a.max_new_tokens)
43
  _save("processbench", a.tag, res)
44
 
@@ -46,8 +55,7 @@ def cmd_processbench(a):
46
  def cmd_prmbench(a):
47
  from .prmbench import evaluate_batched
48
  r = _runner(a.base_id, a.adapter)
49
- bs = max(1, a.batch_size // max(1, a.maj_k))
50
- res = evaluate_batched(r, limit=a.limit, n=a.maj_k, batch_size=bs,
51
  temperature=(0.6 if a.maj_k > 1 else 0.0),
52
  max_new_tokens=a.max_new_tokens)
53
  _save("prmbench", a.tag, res)
@@ -107,7 +115,7 @@ def main() -> None:
107
  p.add_argument("--tag", default="tuned")
108
  p.add_argument("--maj-k", type=int, default=1)
109
  p.add_argument("--limit", type=int, default=None)
110
- p.add_argument("--batch-size", type=int, default=16, help="max concurrent sequences (÷ maj-k)")
111
  p.add_argument("--max-new-tokens", type=int, default=640)
112
  p.add_argument("--splits", nargs="+", default=["gsm8k", "math", "olympiadbench", "omnimath"])
113
  p.set_defaults(func=cmd_processbench)
@@ -117,7 +125,7 @@ def main() -> None:
117
  p.add_argument("--tag", default="tuned")
118
  p.add_argument("--maj-k", type=int, default=1)
119
  p.add_argument("--limit", type=int, default=None)
120
- p.add_argument("--batch-size", type=int, default=16, help="max concurrent sequences (÷ maj-k)")
121
  p.add_argument("--max-new-tokens", type=int, default=640)
122
  p.set_defaults(func=cmd_prmbench)
123
 
 
33
  return HFRunner(base_id, adapter_path=adapter)
34
 
35
 
36
+ def _prompts_per_batch(a):
37
+ from .runners import auto_concurrent_seqs
38
+ seqs = a.max_seqs or auto_concurrent_seqs()
39
+ prompts = max(1, seqs // max(1, a.maj_k)) # concurrent seqs = prompts * maj_k
40
+ print(f"[eval] maj_k={a.maj_k} concurrent_seqs~{seqs} prompts/batch={prompts} "
41
+ f"max_new_tokens={a.max_new_tokens}")
42
+ return prompts
43
+
44
+
45
  def cmd_processbench(a):
46
  from .processbench import evaluate_batched
47
  r = _runner(a.base_id, a.adapter)
 
48
  res = evaluate_batched(r, splits=tuple(a.splits), limit=a.limit, n=a.maj_k,
49
+ batch_size=_prompts_per_batch(a),
50
+ temperature=(0.6 if a.maj_k > 1 else 0.0),
51
  max_new_tokens=a.max_new_tokens)
52
  _save("processbench", a.tag, res)
53
 
 
55
  def cmd_prmbench(a):
56
  from .prmbench import evaluate_batched
57
  r = _runner(a.base_id, a.adapter)
58
+ res = evaluate_batched(r, limit=a.limit, n=a.maj_k, batch_size=_prompts_per_batch(a),
 
59
  temperature=(0.6 if a.maj_k > 1 else 0.0),
60
  max_new_tokens=a.max_new_tokens)
61
  _save("prmbench", a.tag, res)
 
115
  p.add_argument("--tag", default="tuned")
116
  p.add_argument("--maj-k", type=int, default=1)
117
  p.add_argument("--limit", type=int, default=None)
118
+ p.add_argument("--max-seqs", type=int, default=0, help="max concurrent sequences (0=auto by VRAM)")
119
  p.add_argument("--max-new-tokens", type=int, default=640)
120
  p.add_argument("--splits", nargs="+", default=["gsm8k", "math", "olympiadbench", "omnimath"])
121
  p.set_defaults(func=cmd_processbench)
 
125
  p.add_argument("--tag", default="tuned")
126
  p.add_argument("--maj-k", type=int, default=1)
127
  p.add_argument("--limit", type=int, default=None)
128
+ p.add_argument("--max-seqs", type=int, default=0, help="max concurrent sequences (0=auto by VRAM)")
129
  p.add_argument("--max-new-tokens", type=int, default=640)
130
  p.set_defaults(func=cmd_prmbench)
131
 
src/mathcompose/eval/runners.py CHANGED
@@ -159,6 +159,23 @@ def make_solve_fn(runner: HFRunner, n: int = 1, temperature: float = 0.0,
159
  return solve_fn
160
 
161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
162
  def verify_batch_predictions(runner: HFRunner, items, n: int = 1, batch_size: int = 16,
163
  temperature: float = 0.0, max_new_tokens: int = 640,
164
  desc: str = "verify") -> list[int]:
 
159
  return solve_fn
160
 
161
 
162
+ def auto_concurrent_seqs() -> int:
163
+ """Max sequences to generate at once, scaled to VRAM (eval is bf16, ~3GB weights
164
+ + KV cache, so a 1.5B model can run many in parallel)."""
165
+ import torch
166
+
167
+ if not torch.cuda.is_available():
168
+ return 8
169
+ vram = torch.cuda.get_device_properties(0).total_memory / 1e9
170
+ if vram >= 70:
171
+ return 128
172
+ if vram >= 40:
173
+ return 64
174
+ if vram >= 20:
175
+ return 32
176
+ return 12
177
+
178
+
179
  def verify_batch_predictions(runner: HFRunner, items, n: int = 1, batch_size: int = 16,
180
  temperature: float = 0.0, max_new_tokens: int = 640,
181
  desc: str = "verify") -> list[int]: