Skip to content

Latest commit

 

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

项目说明

本项目为联邦学习+差分隐私的实现。支持同步、异步、半异步(默认)机制。

运行环境:python 3.6

本代码基于以下仓库实现: https://github.com/wenzhu23333/Differential-Privacy-Based-Federated-Learning

文件结构说明

项目文件结构及说明如下:

myFed
│  myFed.py			//项目main文件
│  plot.py			//作图文件
│  predictParams.py	//用于估算参数(tau,t_avg,K等)的文件
│  README.md
│  requirements.txt
│  
├─.idea
├─data				//存放数据集文件
├─log       //代码运行记录
├─models    //网络模型相关文件
│  │  Fed.py        //全局更新函数
│  │  Nets.py       //网络模型定义函数
│  │  test.py       //测试准确率函数
│  │  Update.py     //本地更新函数
│  │  __init__.py
│
├─utils     //存放一些使用到的函数
│  │  dataset.py            //数据集有关函数
│  │  dp_mechanism.py       //与dp有关的函数
│  │  Functions.py          //其他函数
│  │  language_utils.py     //与特定语言模型有关的函数
│  │  options.py            //命令行参数设置函数
│  │  sampling.py           //数据集划分函数
│  │  __init__.py
│
├─oldVersion //仅仅实现了基本功能的旧版本,结构较混乱,可忽略

重要参数定义与说明

//参数定义
M		//每一轮参与全局训练的客户数量
N		//客户数量
K		//预计全局更新的轮数
tau		//陈旧度
epsilon	//隐私预算

//命令行重要参数
frac		//每一轮参与全局训练的客户所占的比例,即M/N
allParams	//布尔值,为真则自动让M和N遍历。N从10到1000进行遍历,步长为10;对于每个N,M从0.1到1.0进行遍历,步长为0.1。那么总共就是100*10=1000组M和N的值。
sec(0~9)	//allParams为真时可以设置。为了能够并行地遍历M和N,将N的值平均分为了10个sec,每个sec有100个part,每个part对应的是一组M和N的值。例如:sec=2, part=5, 对应的就是N=210, M=0.5;sec=2, part=16, 对应的就是N=220, M=0.6。
part(1~100)
selfLR		//布尔值,为真则使用自适应学习率
sync		//布尔值,为真则使用同步机制训练(默认使用半异步机制训练)
asy			//布尔值,为真则使用异步机制训练(默认使用半异步机制训练)
avg			//布尔值,为真则使用FedAvg的全局聚合方式(默认使用FedSA的全局聚合方式)

//各个机制的设定
myFed: frac = 0.2(iid) or 0.8(n-iid)
FedSA: frac = 0.2(iid) or 0.8(n-iid), dp_mechanism = no_dp
FedAsync: asy = true
FedAP: frac = 0.5
FedAF: avg = true

运行说明

运行命令举例:

//No DP
python FedSA.py --dataset mnist --iid --model cnn --dp_mechanism no_dp

//Gaussian Mechanism
python FedSA.py --dataset mnist --iid --model cnn --dp_mechanism Gaussian --dp_epsilon 10

//自己指定N和frac
python FedSA.py --dataset mnist --iid --model c nn --dp_mechanism Gaussian --dp_epsilon 10 --num_users 10 --frac 0.2

//N-iid
python FedSA.py --dataset mnist --model c nn --dp_mechanism Gaussian --dp_epsilon 10 --num_users 10 --frac 0.2

//自动遍历所有N和frac(从N=20, frac=1.0开始遍历)
python FedSA.py --dataset mnist --iid --model cnn --dp_mechanism Gaussian --dp_epsilon 10 --allParams true --sec 0 --part 20

About

No description, website, or topics provided.

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages