{"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/pfllib-personalized-federated-learning","title":"PFLlib: A Beginner-Friendly and Comprehensive Personalized Federated Learning Library and Benchmark","arxiv_id":"2312.04992","date":"2023-12-08","proceeding":null,"authors":["Jianqing Zhang","Yang Liu","Yang Hua","Hao Wang","Tao Song","Zhengui Xue","Ruhui Ma","Jian Cao"],"abstract":"Amid the ongoing advancements in Federated Learning (FL), a machine learning paradigm that allows collaborative learning with data privacy protection, personalized FL (pFL)has gained significant prominence as a research direction within the FL domain. Whereas traditional FL (tFL) focuses on jointly learning a global model, pFL aims to balance each client's global and personalized goals in FL settings. To foster the pFL research community, we started and built PFLlib, a comprehensive pFL library with an integrated benchmark platform. In PFLlib, we implemented 37 state-of-the-art FL algorithms (8 tFL algorithms and 29 pFL algorithms) and provided various evaluation environments with three statistically heterogeneous scenarios and 24 datasets. At present, PFLlib has gained more than 1600 stars and 300 forks on GitHub.","url_abs":"https://arxiv.org/abs/2312.04992v2","url_pdf":"https://arxiv.org/pdf/2312.04992v2.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":"pfllib-personalized-federated-learning","repo_url":"https://github.com/TsingZ0/PFLlib","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"pfllib-personalized-federated-learning","repo_url":"https://github.com/TsingZ0/HtFL","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"pfllib-personalized-federated-learning","repo_url":"https://github.com/heyuepeng/fedah","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"GPL-2.0"}},{"paper_slug":"pfllib-personalized-federated-learning","repo_url":"https://github.com/heyuepeng/pfllibvsp","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"pfllib-personalized-federated-learning","repo_url":"https://github.com/hpdic/pfllib","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"pfllib-personalized-federated-learning","repo_url":"https://github.com/xkli-allen/openfgl","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"federated-learning","task_name":"Federated Learning"},{"task_slug":"personalized-federated-learning","task_name":"Personalized Federated Learning"}],"methods":[{"method_slug":null,"method_name":"Library"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2312.04992","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2312.04992"}},"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/heyuepeng/pfllibvsp","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/heyuepeng/fedah","reach":{"status":"ok","spdx":"GPL-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/xkli-allen/openfgl","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/TsingZ0/PFLlib","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hpdic/pfllib","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/TsingZ0/HtFL","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":3,"ran":2,"ran_honours":1,"unverified":1},"by_repo_kind":{"official":{"samples":6,"ran":5,"repositories":1},"listed":{"samples":1,"ran":1,"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":1,"samples":[{"code_sha256_prefix":"5d6dc231986a939a","entry":"agg_func","repo":"TsingZ0/HtFL","repo_kind":"official","path":"system/flcore/clients/clientktl.py","file_url":"https://github.com/TsingZ0/HtFL/blob/HEAD/system/flcore/clients/clientktl.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":"5d6dc231986a939a"}},{"code_sha256_prefix":"34ebb1820a560b2b","entry":"agg_func","repo":"TsingZ0/HtFL","repo_kind":"official","path":"system/flcore/clients/clientgh.py","file_url":"https://github.com/TsingZ0/HtFL/blob/HEAD/system/flcore/clients/clientgh.py","link_basis":"plan_row","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"34ebb1820a560b2b"}},{"code_sha256_prefix":"00a3ba9dbf0b838b","entry":"agg_func","repo":"TsingZ0/HtFL","repo_kind":"official","path":"system/flcore/clients/clientfd.py","file_url":"https://github.com/TsingZ0/HtFL/blob/HEAD/system/flcore/clients/clientfd.py","link_basis":"first_harvest_node","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":"00a3ba9dbf0b838b"}},{"code_sha256_prefix":"a296eeb8fbc6ef9e","entry":"decomposition","repo":"TsingZ0/HtFL","repo_kind":"official","path":"system/flcore/clients/clientkd.py","file_url":"https://github.com/TsingZ0/HtFL/blob/HEAD/system/flcore/clients/clientkd.py","link_basis":"first_harvest_node","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":"a296eeb8fbc6ef9e"}},{"code_sha256_prefix":"0ff3dae1b4122ee4","entry":"load_amazon","repo":"heyuepeng/pfllibvsp","repo_kind":"listed","path":"dataset/generate_AmazonReview.py","file_url":"https://github.com/heyuepeng/pfllibvsp/blob/HEAD/dataset/generate_AmazonReview.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"GPL-2.0","inline_ok":false,"mcp_get_code":{"code_sha256":"0ff3dae1b4122ee4"}},{"code_sha256_prefix":"132dfc2af9ff530c","entry":"load_item","repo":"TsingZ0/HtFL","repo_kind":"official","path":"system/flcore/clients/clientbase.py","file_url":"https://github.com/TsingZ0/HtFL/blob/HEAD/system/flcore/clients/clientbase.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"132dfc2af9ff530c"}},{"code_sha256_prefix":"77fd3aefd63cfad0","entry":"recover","repo":"TsingZ0/HtFL","repo_kind":"official","path":"system/flcore/clients/clientkd.py","file_url":"https://github.com/TsingZ0/HtFL/blob/HEAD/system/flcore/clients/clientkd.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":"77fd3aefd63cfad0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}