{"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/arxiv-2602-02979","title":"CPMobius: Iterative Coach-Player Reasoning for Data-Free Reinforcement Learning","arxiv_id":"2602.02979","date":"2026-02-03","proceeding":null,"authors":["Ran Li","Zeyuan Liu","Yinghao Chen","Bingxiang He","Jiarui Yuan","Zixuan Fu","Weize Chen","Jinyi Hu","Chen Qian","Zhiyuan Liu","Maosong Sun"],"abstract":"Large Language Models (LLMs) have demonstrated strong potential in complex reasoning, yet their progress remains fundamentally constrained by reliance on massive high-quality human-curated tasks and labels, either through supervised fine-tuning (SFT) or reinforcement learning (RL) on reasoning-specific data. This dependence renders supervision-heavy training paradigms increasingly unsustainable, with signs of diminishing scalability already evident in practice. To overcome this limitation, we introduce CPMöbius (CPMobius), a collaborative Coach-Player paradigm for data-free reinforcement learning of reasoning models. Unlike traditional adversarial self-play, CPMöbius, inspired by real world human sports collaboration and multi-agent collaboration, treats the Coach and Player as independent but cooperative roles. The Coach proposes instructions targeted at the Player's capability and receives rewards based on changes in the Player's performance, while the Player is rewarded for solving the increasingly instructive tasks generated by the Coach. This cooperative optimization loop is designed to directly enhance the Player's mathematical reasoning ability. Remarkably, CPMöbius achieves substantial improvement without relying on any external training data, outperforming existing unsupervised approaches. For example, on Qwen2.5-Math-7B-Instruct, our method improves accuracy by an overall average of +4.9 and an out-of-distribution average of +5.4, exceeding RENT by +1.5 on overall accuracy and R-zero by +4.2 on OOD accuracy. Our codebase has been released at https://github.com/thunlp/CPMobius.","url_abs":"https://arxiv.org/abs/2602.02979","url_pdf":"https://arxiv.org/pdf/2602.02979","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2602.02979","atlas_url":"https://app.syntology.ai/?focus=2602.02979","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2602.02979"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/thunlp/CPMobius","reach":null}],"summary":{"ran_draft_wrong":2,"ran":2,"unverified":11},"by_repo_kind":{"found_in_text":{"samples":15,"ran":4,"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":"e080db2eaa81fdb3","entry":"estimate_pass_at_k","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"evaluation/utils/evaluation.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/evaluation/utils/evaluation.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e080db2eaa81fdb3"}},{"code_sha256_prefix":"fe79c459a3e4cc64","entry":"get_huggingface_actor_config","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"verl/utils/model.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/verl/utils/model.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":"fe79c459a3e4cc64"}},{"code_sha256_prefix":"be670aa6ccf31828","entry":"merge_by_placement","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"utils/model_merger.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/utils/model_merger.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":"be670aa6ccf31828"}},{"code_sha256_prefix":"25f0ea3f460f6ce1","entry":"unpad_dataproto","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"verl/protocol.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/verl/protocol.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"25f0ea3f460f6ce1"}},{"code_sha256_prefix":"12d4fef547070f7c","entry":"check_correctness","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"evaluation/utils/execution.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/evaluation/utils/execution.py","link_basis":"first_harvest_node","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":"12d4fef547070f7c"}},{"code_sha256_prefix":"660713a8fa047736","entry":"get_generation_config","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"verl/utils/model.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/verl/utils/model.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":"660713a8fa047736"}},{"code_sha256_prefix":"919cf310ad4c189a","entry":"get_weight_loader","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"verl/models/weight_loader_registry.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/verl/models/weight_loader_registry.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":"919cf310ad4c189a"}},{"code_sha256_prefix":"bb175bff1060d928","entry":"handle_base","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"evaluation/utils/grader.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/evaluation/utils/grader.py","link_basis":"first_harvest_node","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":"bb175bff1060d928"}},{"code_sha256_prefix":"2a180d3156997924","entry":"is_digit","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"evaluation/utils/grader.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/evaluation/utils/grader.py","link_basis":"first_harvest_node","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":"2a180d3156997924"}},{"code_sha256_prefix":"36844a4f5ab78112","entry":"make_chat_prompt","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"evaluation/utils/chat_eval.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/evaluation/utils/chat_eval.py","link_basis":"first_harvest_node","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":"36844a4f5ab78112"}},{"code_sha256_prefix":"c780311bfb03fdc4","entry":"match_answer","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"evaluation/utils/chat_eval.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/evaluation/utils/chat_eval.py","link_basis":"first_harvest_node","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":"c780311bfb03fdc4"}},{"code_sha256_prefix":"960059cee2753e3f","entry":"normalize","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"evaluation/utils/grader.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/evaluation/utils/grader.py","link_basis":"first_harvest_node","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":"960059cee2753e3f"}},{"code_sha256_prefix":"af48c07b88855b2d","entry":"process_humaneval_test","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"evaluation/utils/evaluation_leetcode.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/evaluation/utils/evaluation_leetcode.py","link_basis":"first_harvest_node","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":"af48c07b88855b2d"}},{"code_sha256_prefix":"562c0ef13357b53b","entry":"read_problems","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"evaluation/utils/data.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/evaluation/utils/data.py","link_basis":"first_harvest_node","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":"562c0ef13357b53b"}},{"code_sha256_prefix":"3b15e2ac7497c441","entry":"squeeze","repo":"thunlp/CPMobius","repo_kind":"found_in_text","path":"verl/utils/model.py","file_url":"https://github.com/thunlp/CPMobius/blob/HEAD/verl/utils/model.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":"3b15e2ac7497c441"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}