{"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-2605-08636","title":"EdgeFlowerTune: Evaluating Federated LLM Fine-Tuning Under Realistic Edge System Constraints","arxiv_id":"2605.08636","date":"2026-05-09","proceeding":null,"authors":["Jiaxiang Geng","Yiyi Lu","Lunyu Zhao","Yan Gao","Nicholas D. Lane","Bing Luo"],"abstract":"Federated fine-tuning offers a promising paradigm for adapting large language models (LLMs) on edge devices by leveraging the rich, diverse, and continuously generated data from smartphones and IoT devices without compromising user data privacy. Such edge-side adaptation can improve model personalization, robustness, and responsiveness to local contexts. However, the practical feasibility of federated LLM fine-tuning on real edge devices remains unclear, as most existing work focuses on cross-silo or simulation-based settings, overlooking the resource and runtime constraints that determine whether a method is deployable on real edge systems. We present EdgeFlowerTune, a deployment-oriented benchmark for federated LLM fine-tuning under realistic edge-system constraints. EdgeFlowerTune jointly evaluates model quality and system costs, including communication, wall-clock latency, memory usage, energy consumption, and robustness to dynamic edge conditions. To compare methods in terms of effectiveness, efficiency, and robustness, EdgeFlowerTune introduces three complementary protocols: Quality-under-Budget, Cost-to-Target, and Robustness. We instantiate EdgeFlowerTune as a real-device platform built on Flower and MobileFineTuner, spanning commercial Android smartphones and NVIDIA edge development boards. Our benchmark results show that accuracy-only evaluation can lead to misleading conclusions: methods with similar final quality may differ substantially in deployability once realistic system constraints are considered. EdgeFlowerTune provides a reproducible benchmark for system-aware evaluation of federated LLM fine-tuning at the edge.","url_abs":"https://arxiv.org/abs/2605.08636","url_pdf":"https://arxiv.org/pdf/2605.08636","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":{"atlas_url":null,"mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.08636"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune","reach":null}],"summary":{"ran":19},"by_repo_kind":{"found_in_text":{"samples":19,"ran":19,"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":19,"samples":[{"code_sha256_prefix":"d45e1c1862747697","entry":"adapter_bytes_to_state","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"src/lshaped/classic_fl/adapter_utils.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/src/lshaped/classic_fl/adapter_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d45e1c1862747697"}},{"code_sha256_prefix":"42f792222ade3292","entry":"adapter_state_to_bytes","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"src/lshaped/classic_fl/adapter_utils.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/src/lshaped/classic_fl/adapter_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"42f792222ade3292"}},{"code_sha256_prefix":"3fc000375b6144f3","entry":"collate_batch","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/gemma_lora_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/gemma_lora_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3fc000375b6144f3"}},{"code_sha256_prefix":"a972e9d8cdab191e","entry":"collate_batch","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/gpt2_full_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/gpt2_full_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a972e9d8cdab191e"}},{"code_sha256_prefix":"95bfef07c91ceaca","entry":"collate_batch","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/gpt2_lora_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/gpt2_lora_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"95bfef07c91ceaca"}},{"code_sha256_prefix":"97e732d4a685ac77","entry":"collate_jsonl","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/gpt2_full_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/gpt2_full_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"97e732d4a685ac77"}},{"code_sha256_prefix":"ef94c09c935b5318","entry":"collate_jsonl","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/gpt2_lora_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/gpt2_lora_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ef94c09c935b5318"}},{"code_sha256_prefix":"46fe85cb6603af43","entry":"configure_logging","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"src/lshaped/common/logging_utils.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/src/lshaped/common/logging_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"46fe85cb6603af43"}},{"code_sha256_prefix":"6f83dd463014e328","entry":"fnv1a_hash_int32","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/qwen_lora_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/qwen_lora_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6f83dd463014e328"}},{"code_sha256_prefix":"ee0069b74abea4e2","entry":"load_config","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"src/lshaped/config.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/src/lshaped/config.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ee0069b74abea4e2"}},{"code_sha256_prefix":"c092dc524f254a4d","entry":"load_config","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"src/lshaped/classic_fl/server.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/src/lshaped/classic_fl/server.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c092dc524f254a4d"}},{"code_sha256_prefix":"7596ae9e7f847e2e","entry":"load_fixed_batch","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/gemma_lora_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/gemma_lora_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7596ae9e7f847e2e"}},{"code_sha256_prefix":"525b3b26a1be7037","entry":"load_fixed_batch_bin","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/qwen_lora_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/qwen_lora_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"525b3b26a1be7037"}},{"code_sha256_prefix":"829263d2505291bc","entry":"load_spec","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"src/lshaped/classic_fl/device_proxy_client.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/src/lshaped/classic_fl/device_proxy_client.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"829263d2505291bc"}},{"code_sha256_prefix":"2b364c7f42df4bd8","entry":"lr_schedule","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/gpt2_full_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/gpt2_full_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2b364c7f42df4bd8"}},{"code_sha256_prefix":"8f3aabe543f0bf73","entry":"mean_of","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"src/lshaped/common/logging_utils.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/src/lshaped/common/logging_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8f3aabe543f0bf73"}},{"code_sha256_prefix":"8bd992c9a42a0d90","entry":"read_file_bytes","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"src/lshaped/classic_fl/adapter_utils.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/src/lshaped/classic_fl/adapter_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8bd992c9a42a0d90"}},{"code_sha256_prefix":"3e9d0bfd482ff3b6","entry":"resolve_device","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/gemma_lora_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/gemma_lora_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3e9d0bfd482ff3b6"}},{"code_sha256_prefix":"a9336aaf07f595b2","entry":"resolve_meta_path","repo":"Edge-Intelligence-Lab/EdgeFlowerTune","repo_kind":"found_in_text","path":"standalone/pytorch_alignment/qwen_lora_finetune.py","file_url":"https://github.com/Edge-Intelligence-Lab/EdgeFlowerTune/blob/HEAD/standalone/pytorch_alignment/qwen_lora_finetune.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a9336aaf07f595b2"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.CL","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}