ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Flower Baselines 贡献指南:基于 `flwr new` 模板从零构建可复现的联邦学习基线

Flower Baselines 贡献指南:基于 `flwr new` 模板从零构建可复现的联邦学习基线 Flower Baselines 贡献指南基于flwr new模板从零构建可复现的联邦学习基线【免费下载链接】flowerFlower: A Friendly Federated AI Framework项目地址: https://gitcode.com/GitHub_Trending/flo/flower导读本文以 baselines/dev/baseline/README.md 为骨架系统讲解 Flower 社区贡献新联邦学习论文基线Baseline的完整流程——从模板初始化、pyproject.toml配置到代码格式化、静态检查、单元测试与 PR 合入的规范并深入剖析模板自带的可运行占位实现PyTorch CIFAR-10 FedAvg 模拟帮助研究者快速把论文实验封装成结构统一、一行命令即可复现的 Flower 基线。背景什么是 Flower Baseline为什么需要统一模板Flower Baselines 的目标是复现经典论文中的实验让研究者能以更快的速度对比新策略、新数据集、新模型和新联邦流水线。为了让所有基线保持一致的目录结构、配置规范和质量门槛Flower 提供了一个官方模板并配套了格式化脚本与测试脚本。在 baselines/docs/source/how-to-contribute-baselines.rst 中明确列出了三个基本要求实验必须能用 Flower 运行数据集应使用 Flower Datasets 下载与切分必须能复现一篇论文的结果优先使用 PyTorch其他 ML 框架也欢迎。模板目录 baselines/dev/baseline 正是这一规范的落地载体它既是新基线开发者的起始脚手架也是贡献流程中所有脚本、测试、PR 检查的执行对象。创建新基线三步入库流程按官方指南贡献一个新基线只需三个步骤获取 Flower 源码Fork 仓库并克隆到本地用模板创建基线在baselines目录下运行flwr new flwrlabs/baseline会生成名为baseline的目录随后重命名为你的基线名例如mv baseline fedawesome并按照模板内README.md的指引逐项填写提交 Pull Requestgit add .→ commit push → 创建指向 Flowermain分支的 PR与维护者协作完成合入。其中第 2 步生成的模板并非空壳而是自带一个可运行的 PyTorch CIFAR-10 占位实现你可以在flwr run .跑通之后再替换成论文所需代码。模板结构全景模板目录 baselines/dev/baseline 的完整结构如下baseline/ ├── LICENSE ├── README.md # 基线说明书本文讲解的对象 ├── pyproject.toml # 依赖、格式检查配置、Flower App 声明 └── baseline/ ├── __init__.py ├── client_app.py # 客户端训练/评估入口 ├── dataset.py # 数据集加载与切分 ├── model.py # 模型定义与训练/测试函数 ├── server_app.py # 服务端策略与全局模型保存 ├── strategy.py # 占位供自定义策略 └── utils.py # 占位供工具函数这是一个标准的Flower 双层 App 结构server_app.py暴露appServerApp 对象client_app.py暴露appClientApp 对象两者通过 pyproject.toml 中的[tool.flwr.app.components]被框架发现[tool.flwr.app.components] serverapp baseline.server_app:app clientapp baseline.client_app:app可运行的占位实现解读占位实现虽然简单却完整演示了 Flower 新 APIMessage/Context/RecordDict的标准用法是理解基线代码组织方式的绝佳范例服务端baseline/server_app.py在app.main()中从context.run_config读取num-server-rounds与fraction-train初始化全局Net模型构造FedAvg策略fraction_evaluate1.0、min_available_nodes2执行strategy.start(...)后将最终权重torch.save为final_model.pt客户端baseline/client_app.pyapp.train()从收到的Message中取出ArrayRecord反序列化为模型权重to_torch_state_dict()从context.node_config读取partition-id/num-partitions加载本地数据分片训练后把权重与train_loss、num-examples打包成RecordDict返回app.evaluate()同理返回eval_loss、eval_acc数据集baseline/dataset.py用IidPartitioner把 Hugging Face 上的uoft-cs/cifar10切分为num_partitions个 IID 分片每个客户端内再做 80/20 的 train/test 划分seed42并应用Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))变换模型baseline/model.pyNet是 PyTorch 官方 60 分钟入门教程风格的轻量 CNN2 个卷积层 3 个全连接层训练用 SGDlr0.1, momentum0.9 CrossEntropyLoss。环境搭建与首次运行创建虚拟环境并安装依赖所有基线统一约定使用Python 3.12、pyenv与pyenv-virtualenv# 创建虚拟环境 pyenv virtualenv 3.12.12 baseline-env-name # 激活环境 pyenv activate baseline-env-name # 安装基线项目-e 表示可编辑安装改代码无需重装 # 但若在 pyproject.toml 中新增依赖需重新执行本命令 pip install -e .[dev]其中[dev]来自 pyproject.toml 的[project.optional-dependencies]一次性装齐了isort、black、mypy、pylint、pytest、ruff等质量工具。用占位代码跑通第一个模拟实验不写任何新代码模板就能直接运行——这既是自检也是熟悉 Flower App 执行方式的入口# 在包含 pyproject.toml 的目录下执行 flwr run .flwr run会依据 pyproject.toml 中的联邦配置启动默认的本地模拟[tool.flwr.federations] default local-simulation [tool.flwr.federations.local-simulation] options.num-supernodes 10 # 10 个虚拟 SuperNode options.backend.client-resources.num-cpus 2 options.backend.client-resources.num-gpus 0.0用--run-config覆盖超参数单次实验需要临时改参数时不必修改pyproject.toml直接通过命令行覆盖[tool.flwr.app.config]中已声明的键# 覆盖单个/多个超参数 flwr run . --run-config learning-rate0.1,coefficient0.123 # 或整体加载一个独立的 .toml 配置文件文件中的键必须已在 pyproject.toml 中声明 flwr run . --run-config my-big-experiment-config.toml模板默认声明的三个配置键见 pyproject.toml[tool.flwr.app.config] num-server-rounds 3 fraction-train 0.5 local-epochs 1格式化与测试合入门槛的硬性检查在开发基线过程中可随时运行格式化脚本提交 PR 后CI 会执行测试脚本只有测试通过基线才能被合并。自动格式化脚本# 先回到 baselines 目录即 flower/baselines cd .. # 运行格式化脚本能自动修复的问题会自动修复 ./dev/format-baseline.sh baseline脚本 baselines/dev/format-baseline.sh 依次执行isortimport 排序、black代码风格line-length 88、ruff check --fixlint 自动修复。质量检查与测试脚本./dev/test-baseline.sh baseline脚本 baselines/dev/test-baseline.sh 按序执行六类检查isort --check-only .import 顺序检查black --check .格式检查ruff check .lint 检查规则集D/E/F/W/B/ISC/C4/UPdocstring 遵循 numpy 约定mypy .类型检查strictfalse对torch.*跳过 import 追踪pylint ./baseline静态分析禁用了duplicate-code、too-few-public-methods等允许max-args10pytest .单元测试无测试时返回码 5 视为通过。这些工具的版本与规则都锁定在 pyproject.toml 中保证本地检查与 CI 完全一致。如果你在 PR 中被某些检查卡住可以在 PR 评论区向 Flower 维护者求助。README 撰写规范一份合格的基线说明书要写什么模板 README 的章节设计本身就是规范的最佳实践逐项完成即可产出一份可索引、可复现的基线文档YAML 元数据头title、url论文链接、labels410 个单词级标签如system heterogeneity、image classification、dataset使用的数据集列表。该元数据会在文件顶部生成一张表格用于基线索引引用信息Paper、Authors、Abstract若复现该基线请同时引用论文原作者与 Flower 论文About this baselineWhats implemented用几句话说明复现了论文中的哪个实验、Datasets10GB 的数据集需标注大小推荐用 Flower Datasets 下载切分、Hardware Setup所用硬件、运行耗时、可复现的最小硬件配置、ContributorsExperimental SetupTask被联邦化的主任务、Model模型细节自建模型需给出论文中的位置、Dataset切分方式如 LDA α0.1、客户端数量等用表格呈现、Training Hyperparameters含默认值的超参表Environment Setup逐步给出可完整复现的环境创建与安装命令Running the Experiments给出每个实验的精确命令 对应结果图表/表格建议一条命令配一张图地成对展示而非命令全部堆在前面需要更多配置时扩展[tool.flwr.app.config]或使用--run-config绘图结果建议以 Jupyter notebook 或工具函数的形式提供图表以.png格式存入与README.md同级的_static目录。此外还需注意完成填写后要删除模板中所有[!IMPORTANT]/[!NOTE]提示块、:warning:符号及其注释并把标题同步到pyproject.toml的description字段。从模板到正式基线工作流总结flwr new flwrlabs/baseline生成模板 → 重命名目录按 README 指引创建环境pyenv virtualenv 3.12.12 env→pip install -e .[dev]运行flwr run .验证占位实现可执行将占位代码替换为论文实验实现用--run-config或新增.toml覆盖配置开发过程中随时执行./dev/format-baseline.sh name保持格式合规提交前执行./dev/test-baseline.sh name通过全部六类检查完善 README元数据、实验设置、环境与运行命令、结果图表清理模板提示块提交 PR等待 CI 的test-baseline.sh通过后合入。借助这套标准化流程任何人都能把自己论文中的联邦学习实验封装为「安装即复现、一条命令跑通」的 Flower Baseline同时获得社区统一的格式、测试与文档质量保障。【免费下载链接】flowerFlower: A Friendly Federated AI Framework项目地址: https://gitcode.com/GitHub_Trending/flo/flower创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表