-
Notifications
You must be signed in to change notification settings - Fork 21
Home
desperadoccy edited this page Oct 10, 2024
·
8 revisions
Welcome to the FedModule wiki!
该wiki还在building中,欢迎大家提出建议,或者直接在issue中提出问题,我们会尽快回复。
本项目使用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数据集 - 更多一般训练配置不一一赘述
Getting Started - 整体流程 - Module Guide - 现有算法 - Contact Us