{
  "results": {
    "aime24_nofigures": {
      "alias": "aime24_nofigures",
      "exact_match,none": 0.5666666666666667,
      "exact_match_stderr,none": "N/A",
      "extracted_answers,none": -1,
      "extracted_answers_stderr,none": "N/A"
    },
    "aime25_nofigures": {
      "alias": "aime25_nofigures",
      "exact_match,none": 0.4666666666666667,
      "exact_match_stderr,none": "N/A",
      "extracted_answers,none": -1,
      "extracted_answers_stderr,none": "N/A"
    }
  },
  "group_subtasks": {
    "aime24_nofigures": [],
    "aime25_nofigures": []
  },
  "configs": {
    "aime24_nofigures": {
      "task": "aime24_nofigures",
      "tag": [
        "math_word_problems"
      ],
      "dataset_path": "simplescaling/aime24_nofigures",
      "dataset_name": "default",
      "test_split": "train",
      "process_docs": "def process_docs(dataset: datasets.Dataset) -> datasets.Dataset:\n    def _process_doc(doc: dict) -> dict:\n        solution = doc.get(\"solution\", doc.get(\"orig_solution\", doc.get(\"orig_orig_solution\")))\n        problem = doc.get(\"problem\", doc.get(\"question\"))\n        answer = doc.get(\"answer\", doc.get(\"orig_answer\", doc.get(\"orig_orig_answer\")))\n        if solution is None:\n            print(\"Warning: No solution found; DOC:\", doc)\n        out_doc = {\n            \"problem\": problem,\n            \"solution\": solution,\n            \"answer\": answer,\n        }\n        if getattr(doc, \"few_shot\", None) is not None:\n            out_doc[\"few_shot\"] = True\n        return out_doc\n    return dataset.map(_process_doc)\n",
      "doc_to_text": "def doc_to_text(doc: dict) -> str:\n    return QUERY_TEMPLATE.format(Question=doc.get(\"problem\", doc.get(\"question\")))\n",
      "doc_to_target": "answer",
      "process_results": "def process_results(doc: dict, results: List[str]) -> Dict[str, int]:\n    metrics = {\"exact_match\": None, \"extracted_answers\": []}\n    # bp()\n    # Multiple results -> we are measuring cov/maj etc\n    if isinstance(results[0], list):\n        results = results[0]\n        n_res = len(results) # e.g. 64\n        n_res_list = [2**i for i in range(1, int(n_res.bit_length()))] # e.g. [2, 4, 8, 16, 32, 64]\n        metrics = {\n            **metrics,\n            \"exact_matches\": [],\n            **{f\"cov@{n}\": -1 for n in n_res_list},\n            **{f\"maj@{n}\": -1 for n in n_res_list},\n        }\n\n    if os.getenv(\"PROCESSOR\", \"\") == \"gpt-4o-mini\":\n        sampler = ChatCompletionSampler(model=\"gpt-4o-mini\")\n    else:\n        print(f\"Unknown processor: {os.getenv('PROCESSOR')}; set 'PROCESSOR=gpt-4o-mini' and 'OPENAI_API_KEY=YOUR_KEY' for best results.\")\n        sampler = None\n\n    if isinstance(doc[\"answer\"], str) and doc[\"answer\"].isdigit():\n        gt = str(int(doc[\"answer\"])) # 023 -> 23\n    else:\n        gt = str(doc[\"answer\"])\n    split_tokens = [\"<|im_start|>answer\\n\", \"<|im_start|>\"]\n\n    for i, a in enumerate(results, start=1):\n        if split_tokens[0] in a:\n            a = a.split(split_tokens[0])[-1]\n        elif split_tokens[1] in a:\n            a = a.split(split_tokens[1])[-1]\n            if \"\\n\" in a:\n                a = \"\\n\".join(a.split(\"\\n\")[1:])\n\n        if (box := last_boxed_only_string(a)) is not None:\n            a = remove_boxed(box)\n        # re.DOTALL is key such that newlines are included e.g. if it does `Answer: Here is the solution:\\n\\n10`\n        elif (matches := re.findall(ANSWER_PATTERN, a, re.DOTALL)) != []:\n            a = matches[-1]  # Get the last match\n\n        # AIME answers are from 000 to 999 so often it is a digit anyways\n        if (a.isdigit()) and (gt.isdigit()):\n            a = str(int(a)) # 023 -> 23\n        elif sampler is not None:\n            options = [gt] + list(set(metrics[\"extracted_answers\"]) - {gt})\n            if len(options) > 7:\n                # Could switch back to exact returning like in AIME in that case\n                # Problem with exact returning is that it sometimes messes up small things like a dollar sign\n                print(\"Warning: Lots of options which may harm indexing performance:\", options)            \n            # This ensures that if doc['answer'] is \\text{Evelyn} it is represented as such and not \\\\text{Evelyn}\n            options_str = \"[\" + \", \".join([\"'\" + str(o) + \"'\" for o in options]) + \"]\"\n            # a = extract_answer(sampler, options, a)\n            idx = extract_answer_idx(sampler, options_str, a)\n            if idx != \"-1\":\n                if idx.isdigit():\n                    idx = int(idx) - 1\n                    if len(options) > idx >= 0:\n                        a = options[idx]\n                    else:\n                        print(\"Warning: Index out of bounds; leaving answer unchanged\\n\", a, \"\\noptions\", options_str, \"\\ndoc['answer']\", gt, \"\\nidx\", idx)\n                else:\n                    print(\"Warning: Processing did not produce integer index\\na\", a, \"\\noptions\", options_str, \"\\ndoc['answer']\", gt, \"\\nidx\", idx)\n        else:\n            pass # TODO: Maybe add back legacy processing\n\n        metrics[\"extracted_answers\"].append(a)\n        a = int(a == gt)\n        if not(a): # Optional logging\n            print(\"Marked incorrect\\na \" + metrics[\"extracted_answers\"][-1] + \"\\ndoc['answer'] \" + gt)\n        if i == 1:\n            metrics[\"exact_match\"] = a\n            if \"exact_matches\" in metrics:\n                metrics[\"exact_matches\"].append(a)\n        elif i > 1:\n            metrics[\"exact_matches\"].append(a)\n            if i in n_res_list:\n                metrics[f\"cov@{i}\"] = int(1 in metrics[\"exact_matches\"])\n                metrics[f\"maj@{i}\"] = int(gt == Counter(metrics[\"extracted_answers\"]).most_common(1)[0][0])\n\n    return metrics\n",
      "description": "",
      "target_delimiter": " ",
      "fewshot_delimiter": "\n\n",
      "num_fewshot": 0,
      "metric_list": [
        {
          "metric": "exact_match",
          "aggregation": "mean",
          "higher_is_better": true
        },
        {
          "metric": "extracted_answers",
          "aggregation": "bypass",
          "higher_is_better": true
        }
      ],
      "output_type": "generate_until",
      "generation_kwargs": {
        "until": [],
        "do_sample": false,
        "temperature": 0.0,
        "max_gen_toks": 32768,
        "max_tokens_thinking": "auto",
        "thinking_n_ignore": 2,
        "thinking_n_ignore_str": "Wait ..."
      },
      "repeats": 1,
      "should_decontaminate": false,
      "metadata": {
        "version": 1.0
      }
    },
    "aime25_nofigures": {
      "task": "aime25_nofigures",
      "tag": [
        "math_word_problems"
      ],
      "dataset_path": "TIGER-Lab/AIME25",
      "dataset_name": "default",
      "test_split": "train",
      "process_docs": "def process_docs(dataset: datasets.Dataset) -> datasets.Dataset:\n    def _process_doc(doc: dict) -> dict:\n        solution = doc.get(\"solution\", doc.get(\"orig_solution\", doc.get(\"orig_orig_solution\")))\n        problem = doc.get(\"problem\", doc.get(\"question\"))\n        answer = doc.get(\"answer\", doc.get(\"orig_answer\", doc.get(\"orig_orig_answer\")))\n        if solution is None:\n            print(\"Warning: No solution found; DOC:\", doc)\n        out_doc = {\n            \"problem\": problem,\n            \"solution\": solution,\n            \"answer\": answer,\n        }\n        if getattr(doc, \"few_shot\", None) is not None:\n            out_doc[\"few_shot\"] = True\n        return out_doc\n    return dataset.map(_process_doc)\n",
      "doc_to_text": "def doc_to_text(doc: dict) -> str:\n    return QUERY_TEMPLATE.format(Question=doc.get(\"problem\", doc.get(\"question\")))\n",
      "doc_to_target": "answer",
      "process_results": "def process_results(doc: dict, results: List[str]) -> Dict[str, int]:\n    metrics = {\"exact_match\": None, \"extracted_answers\": []}\n    # bp()\n    # Multiple results -> we are measuring cov/maj etc\n    if isinstance(results[0], list):\n        results = results[0]\n        n_res = len(results) # e.g. 64\n        n_res_list = [2**i for i in range(1, int(n_res.bit_length()))] # e.g. [2, 4, 8, 16, 32, 64]\n        metrics = {\n            **metrics,\n            \"exact_matches\": [],\n            **{f\"cov@{n}\": -1 for n in n_res_list},\n            **{f\"maj@{n}\": -1 for n in n_res_list},\n        }\n\n    if os.getenv(\"PROCESSOR\", \"\") == \"gpt-4o-mini\":\n        sampler = ChatCompletionSampler(model=\"gpt-4o-mini\")\n    else:\n        print(f\"Unknown processor: {os.getenv('PROCESSOR')}; set 'PROCESSOR=gpt-4o-mini' and 'OPENAI_API_KEY=YOUR_KEY' for best results.\")\n        sampler = None\n\n    if isinstance(doc[\"answer\"], str) and doc[\"answer\"].isdigit():\n        gt = str(int(doc[\"answer\"])) # 023 -> 23\n    else:\n        gt = str(doc[\"answer\"])\n    split_tokens = [\"<|im_start|>answer\\n\", \"<|im_start|>\"]\n\n    for i, a in enumerate(results, start=1):\n        if split_tokens[0] in a:\n            a = a.split(split_tokens[0])[-1]\n        elif split_tokens[1] in a:\n            a = a.split(split_tokens[1])[-1]\n            if \"\\n\" in a:\n                a = \"\\n\".join(a.split(\"\\n\")[1:])\n\n        if (box := last_boxed_only_string(a)) is not None:\n            a = remove_boxed(box)\n        # re.DOTALL is key such that newlines are included e.g. if it does `Answer: Here is the solution:\\n\\n10`\n        elif (matches := re.findall(ANSWER_PATTERN, a, re.DOTALL)) != []:\n            a = matches[-1]  # Get the last match\n\n        # AIME answers are from 000 to 999 so often it is a digit anyways\n        if (a.isdigit()) and (gt.isdigit()):\n            a = str(int(a)) # 023 -> 23\n        elif sampler is not None:\n            options = [gt] + list(set(metrics[\"extracted_answers\"]) - {gt})\n            if len(options) > 7:\n                # Could switch back to exact returning like in AIME in that case\n                # Problem with exact returning is that it sometimes messes up small things like a dollar sign\n                print(\"Warning: Lots of options which may harm indexing performance:\", options)            \n            # This ensures that if doc['answer'] is \\text{Evelyn} it is represented as such and not \\\\text{Evelyn}\n            options_str = \"[\" + \", \".join([\"'\" + str(o) + \"'\" for o in options]) + \"]\"\n            # a = extract_answer(sampler, options, a)\n            idx = extract_answer_idx(sampler, options_str, a)\n            if idx != \"-1\":\n                if idx.isdigit():\n                    idx = int(idx) - 1\n                    if len(options) > idx >= 0:\n                        a = options[idx]\n                    else:\n                        print(\"Warning: Index out of bounds; leaving answer unchanged\\n\", a, \"\\noptions\", options_str, \"\\ndoc['answer']\", gt, \"\\nidx\", idx)\n                else:\n                    print(\"Warning: Processing did not produce integer index\\na\", a, \"\\noptions\", options_str, \"\\ndoc['answer']\", gt, \"\\nidx\", idx)\n        else:\n            pass # TODO: Maybe add back legacy processing\n\n        metrics[\"extracted_answers\"].append(a)\n        a = int(a == gt)\n        if not(a): # Optional logging\n            print(\"Marked incorrect\\na \" + metrics[\"extracted_answers\"][-1] + \"\\ndoc['answer'] \" + gt)\n        if i == 1:\n            metrics[\"exact_match\"] = a\n            if \"exact_matches\" in metrics:\n                metrics[\"exact_matches\"].append(a)\n        elif i > 1:\n            metrics[\"exact_matches\"].append(a)\n            if i in n_res_list:\n                metrics[f\"cov@{i}\"] = int(1 in metrics[\"exact_matches\"])\n                metrics[f\"maj@{i}\"] = int(gt == Counter(metrics[\"extracted_answers\"]).most_common(1)[0][0])\n\n    return metrics\n",
      "description": "",
      "target_delimiter": " ",
      "fewshot_delimiter": "\n\n",
      "num_fewshot": 0,
      "metric_list": [
        {
          "metric": "exact_match",
          "aggregation": "mean",
          "higher_is_better": true
        },
        {
          "metric": "extracted_answers",
          "aggregation": "bypass",
          "higher_is_better": true
        }
      ],
      "output_type": "generate_until",
      "generation_kwargs": {
        "until": [],
        "do_sample": false,
        "temperature": 0.0,
        "max_gen_toks": 32768,
        "max_tokens_thinking": "auto",
        "thinking_n_ignore": 2,
        "thinking_n_ignore_str": "Wait ..."
      },
      "repeats": 1,
      "should_decontaminate": false,
      "metadata": {
        "version": 1.0
      }
    }
  },
  "versions": {
    "aime24_nofigures": 1.0,
    "aime25_nofigures": 1.0
  },
  "n-shot": {
    "aime24_nofigures": 0,
    "aime25_nofigures": 0
  },
  "higher_is_better": {
    "aime24_nofigures": {
      "exact_match": true,
      "extracted_answers": true
    },
    "aime25_nofigures": {
      "exact_match": true,
      "extracted_answers": true
    }
  },
  "n-samples": {
    "aime25_nofigures": {
      "original": 15,
      "effective": 15
    },
    "aime24_nofigures": {
      "original": 30,
      "effective": 30
    }
  },
  "config": {
    "model": "vllm",
    "model_args": "pretrained=simplescaling/s1.1-32B,dtype=float32,tensor_parallel_size=8",
    "batch_size": "auto",
    "batch_sizes": [],
    "device": null,
    "use_cache": null,
    "limit": null,
    "bootstrap_iters": 0,
    "gen_kwargs": {
      "max_gen_toks": 32768,
      "max_tokens_thinking": "auto",
      "thinking_n_ignore": 2,
      "thinking_n_ignore_str": "Wait ..."
    },
    "random_seed": 0,
    "numpy_seed": 1234,
    "torch_seed": 1234,
    "fewshot_seed": 1234
  },
  "git_hash": "a465d7f",
  "date": 1739564269.3372107,
  "pretty_env_info": "PyTorch version: 2.5.1+cu124\nIs debug build: False\nCUDA used to build PyTorch: 12.4\nROCM used to build PyTorch: N/A\n\nOS: Ubuntu 22.04.5 LTS (x86_64)\nGCC version: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0\nClang version: Could not collect\nCMake version: Could not collect\nLibc version: glibc-2.35\n\nPython version: 3.11.10 (main, Sep  7 2024, 18:35:41) [GCC 11.4.0] (64-bit runtime)\nPython platform: Linux-6.8.0-50-generic-x86_64-with-glibc2.35\nIs CUDA available: True\nCUDA runtime version: 12.4.131\nCUDA_MODULE_LOADING set to: LAZY\nGPU models and configuration: \nGPU 0: NVIDIA L40\nGPU 1: NVIDIA L40\nGPU 2: NVIDIA L40\nGPU 3: NVIDIA L40\nGPU 4: NVIDIA L40\nGPU 5: NVIDIA L40\nGPU 6: NVIDIA L40\nGPU 7: NVIDIA L40\n\nNvidia driver version: 565.57.01\ncuDNN version: Could not collect\nHIP runtime version: N/A\nMIOpen runtime version: N/A\nIs XNNPACK available: True\n\nCPU:\nArchitecture:                         x86_64\nCPU op-mode(s):                       32-bit, 64-bit\nAddress sizes:                        52 bits physical, 57 bits virtual\nByte Order:                           Little Endian\nCPU(s):                               128\nOn-line CPU(s) list:                  0-127\nVendor ID:                            AuthenticAMD\nModel name:                           AMD EPYC 9354 32-Core Processor\nCPU family:                           25\nModel:                                17\nThread(s) per core:                   2\nCore(s) per socket:                   32\nSocket(s):                            2\nStepping:                             1\nFrequency boost:                      enabled\nCPU max MHz:                          3799.0720\nCPU min MHz:                          1500.0000\nBogoMIPS:                             6500.01\nFlags:                                fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good amd_lbr_v2 nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba perfmon_v2 ibrs ibpb stibp ibrs_enhanced vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local user_shstk avx512_bf16 clzero irperf xsaveerptr rdpru wbnoinvd amd_ppin cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif x2avic v_spec_ctrl vnmi avx512vbmi umip pku ospke avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg avx512_vpopcntdq la57 rdpid overflow_recov succor smca fsrm flush_l1d debug_swap\nVirtualization:                       AMD-V\nL1d cache:                            2 MiB (64 instances)\nL1i cache:                            2 MiB (64 instances)\nL2 cache:                             64 MiB (64 instances)\nL3 cache:                             512 MiB (16 instances)\nNUMA node(s):                         2\nNUMA node0 CPU(s):                    0-31,64-95\nNUMA node1 CPU(s):                    32-63,96-127\nVulnerability Gather data sampling:   Not affected\nVulnerability Itlb multihit:          Not affected\nVulnerability L1tf:                   Not affected\nVulnerability Mds:                    Not affected\nVulnerability Meltdown:               Not affected\nVulnerability Mmio stale data:        Not affected\nVulnerability Reg file data sampling: Not affected\nVulnerability Retbleed:               Not affected\nVulnerability Spec rstack overflow:   Mitigation; Safe RET\nVulnerability Spec store bypass:      Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1:             Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2:             Mitigation; Enhanced / Automatic IBRS; IBPB conditional; STIBP always-on; RSB filling; PBRSB-eIBRS Not affected; BHI Not affected\nVulnerability Srbds:                  Not affected\nVulnerability Tsx async abort:        Not affected\n\nVersions of relevant libraries:\n[pip3] numpy==1.26.3\n[pip3] torch==2.5.1\n[pip3] torchaudio==2.5.1\n[pip3] torchvision==0.20.1\n[pip3] triton==3.1.0\n[conda] Could not collect",
  "transformers_version": "4.48.3",
  "upper_git_hash": null,
  "tokenizer_pad_token": [
    "<|endoftext|>",
    "151643"
  ],
  "tokenizer_eos_token": [
    "<|im_end|>",
    "151645"
  ],
  "tokenizer_bos_token": [
    null,
    "None"
  ],
  "eot_token_id": 151645,
  "max_length": 32768,
  "task_hashes": {
    "aime25_nofigures": "62c256d557633e4054a8cd84e22eb1971f82e7c4cee36cb508cf37362cf7f67a",
    "aime24_nofigures": "3eb5fb976b3f4dea4e4e2a2caf5efa2cfea98aa3ae68cd0f3bfa8a3f197b0e2d"
  },
  "model_source": "vllm",
  "model_name": "simplescaling/s1.1-32B",
  "model_name_sanitized": "simplescaling__s1.1-32B",
  "system_instruction": null,
  "system_instruction_sha": null,
  "fewshot_as_multiturn": false,
  "chat_template": "{%- if tools %}\n    {{- '<|im_start|>system\\n' }}\n    {%- if messages[0]['role'] == 'system' %}\n        {{- messages[0]['content'] }}\n    {%- else %}\n        {{- 'You are Qwen, created by Alibaba Cloud. You are a helpful assistant.' }}\n    {%- endif %}\n    {{- \"\\n\\n# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n    {%- for tool in tools %}\n        {{- \"\\n\" }}\n        {{- tool | tojson }}\n    {%- endfor %}\n    {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n    {%- if messages[0]['role'] == 'system' %}\n        {{- '<|im_start|>system\\n' + messages[0]['content'] + '<|im_end|>\\n' }}\n    {%- else %}\n        {{- '<|im_start|>system\\nYou are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>\\n' }}\n    {%- endif %}\n{%- endif %}\n{%- for message in messages %}\n    {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) or (message.role == \"assistant\" and not message.tool_calls) %}\n        {{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' }}\n    {%- elif message.role == \"assistant\" %}\n        {{- '<|im_start|>' + message.role }}\n        {%- if message.content %}\n            {{- '\\n' + message.content }}\n        {%- endif %}\n        {%- for tool_call in message.tool_calls %}\n            {%- if tool_call.function is defined %}\n                {%- set tool_call = tool_call.function %}\n            {%- endif %}\n            {{- '\\n<tool_call>\\n{\"name\": \"' }}\n            {{- tool_call.name }}\n            {{- '\", \"arguments\": ' }}\n            {{- tool_call.arguments | tojson }}\n            {{- '}\\n</tool_call>' }}\n        {%- endfor %}\n        {{- '<|im_end|>\\n' }}\n    {%- elif message.role == \"tool\" %}\n        {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != \"tool\") %}\n            {{- '<|im_start|>user' }}\n        {%- endif %}\n        {{- '\\n<tool_response>\\n' }}\n        {{- message.content }}\n        {{- '\\n</tool_response>' }}\n        {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n            {{- '<|im_end|>\\n' }}\n        {%- endif %}\n    {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n    {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n",
  "chat_template_sha": "cd8e9439f0570856fd70470bf8889ebd8b5d1107207f67a5efb46e342330527f",
  "start_time": 3411381.936710586,
  "end_time": 3415139.434631916,
  "total_evaluation_time_seconds": "3757.4979213303886"
}
