{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/aimo-2-winning-solution-building-state-of-the","title":"AIMO-2 Winning Solution: Building State-of-the-Art Mathematical Reasoning Models with OpenMathReasoning dataset","arxiv_id":"2504.16891","date":"2025-04-23","proceeding":null,"authors":["Ivan Moshkov","Darragh Hanley","Ivan Sorokin","Shubham Toshniwal","Christof Henkel","Benedikt Schifferer","Wei Du","Igor Gitman"],"abstract":"This paper presents our winning submission to the AI Mathematical Olympiad - Progress Prize 2 (AIMO-2) competition. Our recipe for building state-of-the-art mathematical reasoning models relies on three key pillars. First, we create a large-scale dataset comprising 540K unique high-quality math problems, including olympiad-level problems, and their 3.2M long-reasoning solutions. Second, we develop a novel method to integrate code execution with long reasoning models through iterative training, generation, and quality filtering, resulting in 1.7M high-quality Tool-Integrated Reasoning solutions. Third, we create a pipeline to train models to select the most promising solution from many candidates. We show that such generative solution selection (GenSelect) can significantly improve upon majority voting baseline. Combining these ideas, we train a series of models that achieve state-of-the-art results on mathematical reasoning benchmarks. To facilitate further research, we release our code, models, and the complete OpenMathReasoning dataset under a commercially permissive license.","url_abs":"https://arxiv.org/abs/2504.16891v1","url_pdf":"https://arxiv.org/pdf/2504.16891v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"aimo-2-winning-solution-building-state-of-the","repo_url":"https://github.com/kipok/nemo-skills","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"math","task_name":"Math"},{"task_slug":"mathematical-reasoning","task_name":"Mathematical Reasoning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2504.16891","atlas_url":"https://app.syntology.ai/?focus=2504.16891","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2504.16891"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kipok/nemo-skills","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":12,"unverified":3},"by_repo_kind":{"listed":{"samples":15,"ran":12,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"2e7aafbc230cb972","entry":"calculate_chunk_indices","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/file_utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/file_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2e7aafbc230cb972"}},{"code_sha256_prefix":"dfb61cd2ac2b564a","entry":"determine_proof_status","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/code_execution/proof_utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/code_execution/proof_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"dfb61cd2ac2b564a"}},{"code_sha256_prefix":"b4bbfbf06bb92de6","entry":"extract_code_output","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/code_execution/utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/code_execution/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b4bbfbf06bb92de6"}},{"code_sha256_prefix":"b75a1053974f21ce","entry":"extract_code_to_execute","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/code_execution/utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/code_execution/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b75a1053974f21ce"}},{"code_sha256_prefix":"df5a88c92c8f57ce","entry":"extract_proof_only","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/code_execution/proof_utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/code_execution/proof_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"df5a88c92c8f57ce"}},{"code_sha256_prefix":"b2186409cb2b7dfb","entry":"format_code_output","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/code_execution/utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/code_execution/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b2186409cb2b7dfb"}},{"code_sha256_prefix":"364d75dfb259e939","entry":"get_logger_name","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"364d75dfb259e939"}},{"code_sha256_prefix":"28ecc1878ccced7c","entry":"import_score_module","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/evaluation/compute_group_score.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/evaluation/compute_group_score.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"28ecc1878ccced7c"}},{"code_sha256_prefix":"a2afdfc356abe1d1","entry":"init_wandb","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a2afdfc356abe1d1"}},{"code_sha256_prefix":"8c48543062658550","entry":"jload","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/file_utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/file_utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8c48543062658550"}},{"code_sha256_prefix":"6f55869f2815d973","entry":"load_metric_files","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/evaluation/compute_group_score.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/evaluation/compute_group_score.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6f55869f2815d973"}},{"code_sha256_prefix":"4261064eb4ec7756","entry":"setup_logging","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/utils.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4261064eb4ec7756"}},{"code_sha256_prefix":"5b3c40e3214faf87","entry":"count_newlines","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/file_utils.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/file_utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5b3c40e3214faf87"}},{"code_sha256_prefix":"e74354657e62b51d","entry":"load_config","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/conversion/hf_to_nemo_llama.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/conversion/hf_to_nemo_llama.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e74354657e62b51d"}},{"code_sha256_prefix":"de5cce096268a65e","entry":"load_config","repo":"kipok/nemo-skills","repo_kind":"listed","path":"nemo_skills/conversion/hf_to_nemo_qwen.py","file_url":"https://github.com/kipok/nemo-skills/blob/HEAD/nemo_skills/conversion/hf_to_nemo_qwen.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"de5cce096268a65e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}