FLite is a federated learning framework for developers to quickly build federated learning applications.(Design and Implementation of a Topology Based Distributed Training Federated Learning Experimental Framework.)[Software Engineering, School of Computer Science and Technology, WUST, P. Qi(Sensorjang@wust.edu.cn)]
Reason this release was yanked:
delete this version due to bug
Project description
/$$$$$$$$ /$$ /$$ /$$ _ _ U _____ u _ _ U ___ u | $$_____/| $$ |__/ | $$ |'| |'| \| ___"|/ |"| |"| \/"_ \/ | $$ | $$ /$$ /$$$$$$ /$$$$$$ /| |_| |\ | _|" U | | u U | | u | | | | | $$$$$ | $$ | $$|_ $$_/ /$$__ $$ U| _ |u | |___ \| |/__ \| |/__.-,_| |_| | | $$__/ | $$ | $$ | $$ | $$$$$$$$ |_| |_| |_____| |_____| |_____|\_)-\___/ | $$ | $$ | $$ | $$ /$$| $$_____/ // \\ << >> // \\ // \\ \\ | $$ | $$$$$$$$| $$ | $$$$/| $$$$$$$ (_") ("_)(__) (__)(_")("_)(_")("_) (__) |__/ |________/|__/ \___/ \_______/ Version 1.0.0
FLite: A Lightweight Federated Learning Framework for Real-World Deployment
Introduction
Graduation Project: Design and Implementation of a Topology Based Distributed Training Federated Learning Experimental Framework.
毕业设计:一种基于拓扑结构的分布式训练联邦学习实验框架的设计与实现
[Software Engineering, School of Computer Science and Technology, WUST, P. Qi(Sensorjang@wust.edu.cn)]
Prerequisites
- Linux 或 macOS
- Python 3.6+
- PyTorch 1.3+
- CUDA 9.2+(如果您使用GPU运行)
Installation
这里是使用 conda 配置FLite环境的完整命令
Here is the complete command to configure the FLite environment using conda
# create a new conda environment
# 创建一个新的conda环境
conda create -n flite python=3.7 -y
conda activate flite
# CPU only
# 在仅通过CPU计算的设备上运行
conda install pytorch==1.6.0 torchvision==0.7.0 -c pytorch -y
# With GPU
# 在支持GPU的设备上运行
conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.1 -c pytorch -y
# install FLite
# 安装FLite
git clone https://github.com/Sensorjang/FLite.git
cd FLite
pip install -v -e .
Features Overview
联邦学习计算范例支持
- 独立仿真训练 Independent Simulation Training
- 分布式训练(基于gRPC通信协议)Distributed Training (based on gRPC communication protocol)
数据集与模型支持
- | LeNet | ResNet18 | ResNet50 | RNN | simple-CNN | VGG9 |
---|---|---|---|---|---|---|
Cifar10 | √ | √ | √ | √ | √ | |
FEMNIST | √ | √ | ||||
Shakespeare | √ | |||||
Cifar100 | √ | √ | √ | √ | √ |
联邦聚合算法支持
- FedAvg
- FedProx
- equal
聚合策略:all、parameters
- all:使用statedict聚合模型,包括模型参数和持久缓冲区(如BatchNorm统计数据)
- parameters:只聚集模型参数。
模型加密算法支持
- Blowfish
- DES
- Salsa20
数据分布支持
支持:iid、niid(用于feminist和shakespeare),以及dir和class(用于cifar系列数据集)
联邦优化器
- SGD
- Adam
联邦学习配置文件
- python代码中导入配置
- 外部yaml文件入配置
- 混合导入配置
- 使用指令参数传递配置
联邦建模追踪服务
本地数据库配置,支持sqlite3和mysql
异构联邦客户端模拟
- iso: 选定客户端具有等长睡眠时间分布
- dir: 使用对称狄利克雷过程对睡眠时间异质性进行采样,以模拟直接异质性
- real: 模拟真实的异构性,即客户端的计算能力不同。使用主流智能手机的真实速度比来模拟睡眠时间的异构性
处理系统异构的分组策略
支持:随机、贪婪、最慢(random, greedy, slowest)
Quick Start
Flite提供了许多示例,您可以在examples目录下找到它们。
Flite provides many examples, which can be found in the examples directory.
License
This project is released under the MIT License.