{"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/c-2m-3-cycle-consistent-multi-model-merging","title":"$C^2M^3$: Cycle-Consistent Multi-Model Merging","arxiv_id":"2405.17897","date":"2024-05-28","proceeding":null,"authors":["Donato Crisostomi","Marco Fumero","Daniele Baieri","Florian Bernard","Emanuele Rodolà"],"abstract":"In this paper, we present a novel data-free method for merging neural networks in weight space. Differently from most existing works, our method optimizes for the permutations of network neurons globally across all layers. This allows us to enforce cycle consistency of the permutations when merging $N \\geq 3$ models, allowing circular compositions of permutations to be computed without accumulating error along the path. We qualitatively and quantitatively motivate the need for such a constraint, showing its benefits when merging sets of models in scenarios spanning varying architectures and datasets. We finally show that, when coupled with activation renormalization, our approach yields the best results in the task.","url_abs":"https://arxiv.org/abs/2405.17897v2","url_pdf":"https://arxiv.org/pdf/2405.17897v2.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":"c-2m-3-cycle-consistent-multi-model-merging","repo_url":"https://github.com/crisostomi/cycle-consistent-model-merging","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2405.17897","atlas_url":"https://app.syntology.ai/?focus=2405.17897","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2405.17897"}},"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/crisostomi/cycle-consistent-model-merging","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":9},"by_repo_kind":{"official":{"samples":9,"ran":9,"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":"1a9a8cb111441455","entry":"apply_modules","repo":"crisostomi/cycle-consistent-model-merging","repo_kind":"official","path":"src/ccmm/models/repaired_resnet.py","file_url":"https://github.com/crisostomi/cycle-consistent-model-merging/blob/HEAD/src/ccmm/models/repaired_resnet.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1a9a8cb111441455"}},{"code_sha256_prefix":"48e8478672861417","entry":"batchnorm_axes","repo":"crisostomi/cycle-consistent-model-merging","repo_kind":"official","path":"src/ccmm/matching/permutation_spec.py","file_url":"https://github.com/crisostomi/cycle-consistent-model-merging/blob/HEAD/src/ccmm/matching/permutation_spec.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"48e8478672861417"}},{"code_sha256_prefix":"444e29861734c210","entry":"collect_perm_sizes","repo":"crisostomi/cycle-consistent-model-merging","repo_kind":"official","path":"src/ccmm/matching/frank_wolfe_matching.py","file_url":"https://github.com/crisostomi/cycle-consistent-model-merging/blob/HEAD/src/ccmm/matching/frank_wolfe_matching.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"444e29861734c210"}},{"code_sha256_prefix":"e048239d172ee3c2","entry":"compute_weights_similarity","repo":"crisostomi/cycle-consistent-model-merging","repo_kind":"official","path":"src/ccmm/matching/weight_matching.py","file_url":"https://github.com/crisostomi/cycle-consistent-model-merging/blob/HEAD/src/ccmm/matching/weight_matching.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e048239d172ee3c2"}},{"code_sha256_prefix":"3384618c11cad8aa","entry":"conv_axes","repo":"crisostomi/cycle-consistent-model-merging","repo_kind":"official","path":"src/ccmm/matching/permutation_spec.py","file_url":"https://github.com/crisostomi/cycle-consistent-model-merging/blob/HEAD/src/ccmm/matching/permutation_spec.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3384618c11cad8aa"}},{"code_sha256_prefix":"21908a79764be549","entry":"get_all_symbols_combinations","repo":"crisostomi/cycle-consistent-model-merging","repo_kind":"official","path":"src/ccmm/matching/utils.py","file_url":"https://github.com/crisostomi/cycle-consistent-model-merging/blob/HEAD/src/ccmm/matching/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"21908a79764be549"}},{"code_sha256_prefix":"480383462a550901","entry":"get_inverse_permutations","repo":"crisostomi/cycle-consistent-model-merging","repo_kind":"official","path":"src/ccmm/matching/utils.py","file_url":"https://github.com/crisostomi/cycle-consistent-model-merging/blob/HEAD/src/ccmm/matching/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"480383462a550901"}},{"code_sha256_prefix":"b42df2aad0224c18","entry":"layernorm_axes","repo":"crisostomi/cycle-consistent-model-merging","repo_kind":"official","path":"src/ccmm/matching/permutation_spec.py","file_url":"https://github.com/crisostomi/cycle-consistent-model-merging/blob/HEAD/src/ccmm/matching/permutation_spec.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b42df2aad0224c18"}},{"code_sha256_prefix":"ca912d943e4bc32d","entry":"perm_indices_to_perm_matrix","repo":"crisostomi/cycle-consistent-model-merging","repo_kind":"official","path":"src/ccmm/matching/utils.py","file_url":"https://github.com/crisostomi/cycle-consistent-model-merging/blob/HEAD/src/ccmm/matching/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ca912d943e4bc32d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}