Skip to content
desperadoccy edited this page Oct 10, 2024 · 8 revisions

Welcome to the FedModule wiki!

该wiki还在building中,欢迎大家提出建议,或者直接在issue中提出问题,我们会尽快回复。

test

Getting started

本项目使用Python3.8开发,建议使用Anaconda进行环境管理。

安装依赖

通过以下命令创建虚拟环境并安装依赖:

conda create -n FedModule python=3.8
conda activate FedModule
pip install -r requirements.txt

或者直接使用conda安装依赖:

conda env create -f environment.yaml

运行

cd src/fl
python main.py ../../config.json

框架支持运行命令格式如下

python main.py [config_file_path] --uid [uid] --mid [mid]
# or
python main.py --config [config_file_path] --uid [uid] --mid [mid]

不指定配置文件时,默认使用../../config.json

如果同时运行多个实验,可能出现message_queue端口冲突,可以在global下更改端口:

"message_queue": {
    "port": 50001
}

配置文件

本节仅简单介绍,如需深入了解,请优先查看wiki中的整体概述-结构及其他相关模块wiki。

切换场景

根据需要,替换不同的模块以适应不同的场景。

比如切换数据集,只需修改配置文件中的dataset字段即可。

"dataset": {
      "path": "dataset.FashionMNIST.FashionMNIST",
      "params": {}
    }

比如切换数据分布,只需修改配置文件中的iid字段即可。

"iid": {
    "beta": 0.5
}

组装算法

根据需要,使用相关的模块组装需要的算法。 比如FedAvg算法它由以下几个模块组成:

  • server: NormalServer 使用一般服务器类
  • updater: SyncUpdater 使用同步聚合器
  • update: FedAvg 使用FedAvg算法
  • scheduler: SyncScheduler 使用同步调度器
  • schedule: RandomSchedule 使用随机调度算法
  • queuemanager: SingleQueueManager 使用单队列管理器
  • clientmanager: NormalClientManager 使用一般客户端管理器
  • client: NormalClient 使用一般客户端
  • dataset: any数据集
  • 更多一般训练配置不一一赘述
Clone this wiki locally