Skip to content

Commit e746f6a

Browse files
committed
add aime benchmark
1 parent 4f27885 commit e746f6a

6 files changed

Lines changed: 37 additions & 30 deletions

File tree

eval_protocol/benchmarks/suites/aime25.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def aime2025_dataset_adapter(rows: List[Dict[str, Any]]) -> List[EvaluationRow]:
7070
"https://huggingface.co/datasets/opencompass/AIME2025/raw/main/aime2025-II.jsonl",
7171
],
7272
dataset_adapter=aime2025_dataset_adapter,
73-
rollout_input_params=[{"extra_body": {"reasoning_effort": "low"}}],
73+
rollout_input_params=[{"max_tokens": 131000, "extra_body": {"reasoning_effort": "high"}}],
7474
rollout_processor=default_single_turn_rollout_processor,
7575
aggregation_method="mean",
7676
threshold_of_success=None,
@@ -79,7 +79,7 @@ def aime2025_dataset_adapter(rows: List[Dict[str, Any]]) -> List[EvaluationRow]:
7979
max_concurrent_rollouts=4,
8080
mode="pointwise",
8181
)
82-
def aime25_pointwise(row: EvaluationRow) -> EvaluationRow:
82+
def test_aime25_pointwise(row: EvaluationRow) -> EvaluationRow:
8383
assistant_msgs = [m for m in row.messages if m.role == "assistant"]
8484
content = assistant_msgs[-1].content if assistant_msgs else ""
8585

eval_protocol/pytest/default_single_turn_rollout_process.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,22 @@ async def process_row(row: EvaluationRow) -> EvaluationRow:
3838
request_params = {"model": config.model, "messages": messages_payload, **config.input_params}
3939
# Ensure caching is disabled only for this request (review feedback)
4040
request_params["cache"] = {"no-cache": True}
41-
# Allow passing reasoning effort to Fireworks via LiteLLM using extra_body
42-
# Expected: config.input_params may contain {"reasoning": {"effort": "low|medium|high"}}
43-
if "reasoning" in config.input_params:
41+
# Single-level reasoning effort: expect `reasoning_effort` only
42+
effort_val = None
43+
if isinstance(config.input_params, dict):
44+
if "reasoning_effort" in config.input_params:
45+
effort_val = str(config.input_params["reasoning_effort"]) # flat shape
46+
elif isinstance(config.input_params.get("extra_body"), dict) and "reasoning_effort" in config.input_params["extra_body"]:
47+
# Accept if user passed it directly inside extra_body
48+
effort_val = str(config.input_params["extra_body"]["reasoning_effort"]) # already in extra_body
49+
50+
if effort_val:
51+
# Always under extra_body so LiteLLM forwards to provider-specific param set
4452
request_params.setdefault("extra_body", {})
45-
request_params["extra_body"]["reasoning"] = config.input_params["reasoning"]
53+
request_params["extra_body"]["reasoning_effort"] = effort_val
54+
# Ensure unsupported top-level keys are not present
55+
if "reasoning_effort" in request_params:
56+
request_params.pop("reasoning_effort", None)
4657

4758
if row.tools is not None:
4859
request_params["tools"] = row.tools
@@ -88,7 +99,10 @@ async def process_row(row: EvaluationRow) -> EvaluationRow:
8899

89100
async def _sem_wrapper(r: EvaluationRow) -> EvaluationRow:
90101
async with semaphore:
91-
return await process_row(r)
102+
try:
103+
return await process_row(r)
104+
except Exception as e:
105+
return r
92106

93107
tasks = [_sem_wrapper(row) for row in rows]
94108
dataset = list(await asyncio.gather(*tasks))

eval_protocol/pytest/evaluation_test.py

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,9 @@ def wrapper_body(**kwargs):
280280
input_params = kwargs.get("input_params") or {}
281281
# Optional global overrides via environment for ad-hoc experimentation
282282
# EP_INPUT_PARAMS_JSON can contain a JSON object that will be deep-merged
283-
# into input_params (e.g., '{"temperature":0,"extra_body":{"reasoning":{"effort":"low"}}}').
283+
# into input_params (e.g., '{"temperature":0,"reasoning_effort":"low"}' or
284+
# '{"extra_body":{"reasoning_effort":"low"}}'). Legacy nested
285+
# '{"reasoning":{"effort":"low"}}' is also supported by the rollout.
284286
try:
285287
import json as _json
286288
_env_override = os.getenv("EP_INPUT_PARAMS_JSON")
@@ -480,15 +482,11 @@ def _extract_effort_tag(params: dict) -> str | None:
480482
try:
481483
if not isinstance(params, dict):
482484
return None
483-
# Common locations
484-
if "extra_body" in params and isinstance(params["extra_body"], dict):
485-
eb = params["extra_body"]
486-
if isinstance(eb.get("reasoning"), dict) and "effort" in eb["reasoning"]:
487-
return str(eb["reasoning"]["effort"]).lower()
488-
if "reasoning_effort" in eb:
489-
return str(eb["reasoning_effort"]).lower()
490-
if "reasoning" in params and isinstance(params["reasoning"], dict) and "effort" in params["reasoning"]:
491-
return str(params["reasoning"]["effort"]).lower()
485+
# Preferred locations: top-level or inside extra_body
486+
if "reasoning_effort" in params:
487+
return str(params["reasoning_effort"]).lower()
488+
if isinstance(params.get("extra_body"), dict) and "reasoning_effort" in params["extra_body"]:
489+
return str(params["extra_body"]["reasoning_effort"]).lower()
492490
except Exception:
493491
return None
494492
return None
@@ -925,14 +923,10 @@ def _extract_effort_tag(params: dict) -> str | None:
925923
try:
926924
if not isinstance(params, dict):
927925
return None
928-
if "extra_body" in params and isinstance(params["extra_body"], dict):
929-
eb = params["extra_body"]
930-
if isinstance(eb.get("reasoning"), dict) and "effort" in eb["reasoning"]:
931-
return str(eb["reasoning"]["effort"]).lower()
932-
if "reasoning_effort" in eb:
933-
return str(eb["reasoning_effort"]).lower()
934-
if "reasoning" in params and isinstance(params["reasoning"], dict) and "effort" in params["reasoning"]:
935-
return str(params["reasoning"]["effort"]).lower()
926+
if "reasoning_effort" in params:
927+
return str(params["reasoning_effort"]).lower()
928+
if isinstance(params.get("extra_body"), dict) and "reasoning_effort" in params["extra_body"]:
929+
return str(params["extra_body"]["reasoning_effort"]).lower()
936930
except Exception:
937931
return None
938932
return None

eval_protocol/pytest/plugin.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,9 @@ def pytest_configure(config) -> None:
131131
merged[k] = v
132132
reasoning_effort = config.getoption("--ep-reasoning-effort")
133133
if reasoning_effort:
134-
# Standardize into extra_body.reasoning.effort in EP_INPUT_PARAMS_JSON
134+
# Always place under extra_body to avoid LiteLLM rejecting top-level params
135135
eb = merged.setdefault("extra_body", {})
136-
reasoning = eb.setdefault("reasoning", {})
137-
reasoning["effort"] = str(reasoning_effort)
136+
eb["reasoning_effort"] = str(reasoning_effort)
138137
if merged:
139138
os.environ["EP_INPUT_PARAMS_JSON"] = _json.dumps(merged)
140139
except Exception:

examples/aime2025_chat_completion/tests/test_evaluation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def aime2025_dataset_adapter(rows: List[Dict[str, Any]]) -> List[EvaluationRow]:
6262
"https://huggingface.co/datasets/opencompass/AIME2025/raw/main/aime2025-II.jsonl",
6363
],
6464
dataset_adapter=aime2025_dataset_adapter,
65-
rollout_input_params=[{"extra_body": {"reasoning_effort": "low"}}],
65+
rollout_input_params=[{"reasoning_effort": "low"}],
6666
rollout_processor=default_single_turn_rollout_processor,
6767
aggregation_method="mean",
6868
threshold_of_success=None,

examples/gpqa/tests/test_evaluation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ def _load_gpqa_messages_from_csv() -> List[List[Message]]:
6565
@evaluation_test(
6666
model=["fireworks_ai/accounts/fireworks/models/gpt-oss-120b"],
6767
input_messages=_GPQA_INPUT_MESSAGES,
68-
rollout_input_params=[{"extra_body": {"reasoning_effort": "low"}}], # default to low effort; override via CLI plugin
68+
rollout_input_params=[{"reasoning_effort": "low"}], # default to low effort; override via CLI plugin
6969
rollout_processor=default_single_turn_rollout_processor,
7070
aggregation_method="mean",
7171
threshold_of_success=None,

0 commit comments

Comments
 (0)