框架介绍
FLGo是联邦学习大佬开发和维护的一个联邦学习轻量级框架,原教程贴链接为手把手实战联邦学习
本贴主要是记录一下上手学习使用过程中遇到的一些问题。
项目地址:https://link.zhihu.com/?target=https%3A//github.com/WwZzz/easyFL/tree/FLGo
教程地址:https://link.zhihu.com/?target=https%3A//github.com/WwZzz/easyFL/tree/FLGo/tutorial
教程中有中英文教程,但好像更新不如知乎上及时,可以先去知乎专栏文章中学习,讲解的超级好
安装使用
安装
在教程中给出的安装方式是通过conda 进行pip,我是直接从github中将文件下载运行的。两种方式都行,在运行中要注意虚拟环境中各种库的版本问题,在使用FLGo之前,需要自行安装以下基本的库:numpy,pytorch,torchvision,scipy,numpy,matplotlib,prettytable。这些库对版本没有特殊要,网上配置教程较多,这里不再赘述。
在FLGo中还会用到一些额外的第三方库,这些库主要针对特定功能或算法的实现,比如cvxopt,pynvml等,可以等用到的时候再进行安装。
运行
作者给出了一个test展示使用fedAVG算法进行联邦训练
生成联邦任务
生成mnist的IID划分,人数为100人
import flgo.algorithm.fedavg as fedavg
import flgo.experiment.analyzer
import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
#task为任务路径,可以自行定义,该目录将被视作一个联邦任务
task = './my_task'
# benchmark关键字指定的是数据集,
# partitioner关键字指定的是联邦学习数据集划分器
gen_config = {
'benchmark':{
'name':'flgo.benchmark.mnist_classification'},
'partitioner':{
'name':'IIDPartitioner', 'para':{
'num_clients':100}