{"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/equivariance-everywhere-all-at-once-a-recipe","title":"Equivariance Everywhere All At Once: A Recipe for Graph Foundation Models","arxiv_id":"2506.14291","date":"2025-06-17","proceeding":null,"authors":["Ben Finkelshtein","İsmail İlkan Ceylan","Michael Bronstein","Ron Levie"],"abstract":"Graph machine learning architectures are typically tailored to specific tasks on specific datasets, which hinders their broader applicability. This has led to a new quest in graph machine learning: how to build graph foundation models capable of generalizing across arbitrary graphs and features? In this work, we present a recipe for designing graph foundation models for node-level tasks from first principles. The key ingredient underpinning our study is a systematic investigation of the symmetries that a graph foundation model must respect. In a nutshell, we argue that label permutation-equivariance alongside feature permutation-invariance are necessary in addition to the common node permutation-equivariance on each local neighborhood of the graph. To this end, we first characterize the space of linear transformations that are equivariant to permutations of nodes and labels, and invariant to permutations of features. We then prove that the resulting network is a universal approximator on multisets that respect the aforementioned symmetries. Our recipe uses such layers on the multiset of features induced by the local neighborhood of the graph to obtain a class of graph foundation models for node property prediction. We validate our approach through extensive experiments on 29 real-world node classification datasets, demonstrating both strong zero-shot empirical performance and consistent improvement as the number of training graphs increases.","url_abs":"https://arxiv.org/abs/2506.14291v1","url_pdf":"https://arxiv.org/pdf/2506.14291v1.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":"equivariance-everywhere-all-at-once-a-recipe","repo_url":"https://github.com/benfinkelshtein/equivarianceeverywhere","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"all","task_name":"All"},{"task_slug":"node-classification","task_name":"Node Classification"},{"task_slug":"node-property-prediction","task_name":"Node Property Prediction"},{"task_slug":"property-prediction","task_name":"Property Prediction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2506.14291","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2506.14291"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+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/benfinkelshtein/equivarianceeverywhere","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":8},"by_repo_kind":{"official":{"samples":8,"ran":0,"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":"57dc1c752317b594","entry":"accuracy","repo":"benfinkelshtein/equivarianceeverywhere","repo_kind":"official","path":"helpers/utils.py","file_url":"https://github.com/benfinkelshtein/equivarianceeverywhere/blob/HEAD/helpers/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"57dc1c752317b594"}},{"code_sha256_prefix":"9f2a73ee3b494833","entry":"coo_to_csr","repo":"benfinkelshtein/equivarianceeverywhere","repo_kind":"official","path":"helpers/utils.py","file_url":"https://github.com/benfinkelshtein/equivarianceeverywhere/blob/HEAD/helpers/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9f2a73ee3b494833"}},{"code_sha256_prefix":"f026a6607b2915ad","entry":"download_url","repo":"benfinkelshtein/equivarianceeverywhere","repo_kind":"official","path":"helpers/datasets.py","file_url":"https://github.com/benfinkelshtein/equivarianceeverywhere/blob/HEAD/helpers/datasets.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f026a6607b2915ad"}},{"code_sha256_prefix":"6b90008e08bdee42","entry":"get_fan_in","repo":"benfinkelshtein/equivarianceeverywhere","repo_kind":"official","path":"helpers/gnn_type.py","file_url":"https://github.com/benfinkelshtein/equivarianceeverywhere/blob/HEAD/helpers/gnn_type.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"6b90008e08bdee42"}},{"code_sha256_prefix":"8bf36e42900605d7","entry":"get_masks","repo":"benfinkelshtein/equivarianceeverywhere","repo_kind":"official","path":"helpers/split_data.py","file_url":"https://github.com/benfinkelshtein/equivarianceeverywhere/blob/HEAD/helpers/split_data.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8bf36e42900605d7"}},{"code_sha256_prefix":"092f3b2b0f1b5ded","entry":"graphany_mask_splits","repo":"benfinkelshtein/equivarianceeverywhere","repo_kind":"official","path":"helpers/split_data.py","file_url":"https://github.com/benfinkelshtein/equivarianceeverywhere/blob/HEAD/helpers/split_data.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"092f3b2b0f1b5ded"}},{"code_sha256_prefix":"63bd4c5994bd8943","entry":"load_texas_dataset","repo":"benfinkelshtein/equivarianceeverywhere","repo_kind":"official","path":"helpers/datasets.py","file_url":"https://github.com/benfinkelshtein/equivarianceeverywhere/blob/HEAD/helpers/datasets.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"63bd4c5994bd8943"}},{"code_sha256_prefix":"8a7e13422acb92b2","entry":"sample_k_nodes_per_label","repo":"benfinkelshtein/equivarianceeverywhere","repo_kind":"official","path":"models/gfm.py","file_url":"https://github.com/benfinkelshtein/equivarianceeverywhere/blob/HEAD/models/gfm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8a7e13422acb92b2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}