【联邦学习框架FLGo】FLGo入门介绍及源码

一、FLGo介绍

FLGo是一个轻量级联邦学习框架,允许数据保留在本地设备上训练模型来确保用户的隐私性,降低了数据泄露的风险。该框架支持多个客户端同时参与模型训练,提高了训练过程的效率,充分利用了边缘设备的计算能力。
原知乎教程链接 手把手实战联邦学习
 FLGo的开发宗旨是让做联邦学习相关的研究变得更加简单。因此,FLGo中实现了以下功能:

  • 帮助使用者很轻松地自己手写一个联邦学习算法,并与其他算法进行对比;
  • 提供了数个主流地联邦数据集基准(图像、文本、图、表格等),支持各种常见地数据异构性划分,并提供接口辅助大家尝试在自己的数据集上进行联邦学习;
  • 支持模拟常见的系统异构性,并提供接口支持用户自行定制系统异构性,来做相关方面的仿真研究;
  • 提供了基础的实验记录、结果分析功能,方便做实验;支持自动调度GPU进行网格搜索;
  • 支持纵向联邦、异步联邦等算法(对于异步联邦算法,使用了统一的虚拟时钟,使得其可以和同步联邦算法进行公平的比较)。

二、源码下载

gitee上开源FLGo源码下载

安装:


  • 通过pip安装,建议在安装此库之前自行安装pytorch。
pip install flgo
  • 通过git安装
git clone https://github.com/WwZzz/easyFL.git

导入flgo包以及fedavg算法:

import flgo
import flgo.algorithm.fedavg as fedavg
import os

划分数据集并生成联邦任务:

import flgo.benchmark.mnist_classification as mnist

# task为任务路径,可自行定义,该路径将被视作一个联邦任务
task = './test_mnist'
# benchmark指定的是数据集,partitioner指定的是联邦学习数据集划分器
config = {
    'benchmark': {'name': 'flgo.benchmark.mnist_classification'},
    'partitioner': {'name': 'IIDPartitioner', 'para': {'num_clients': 100}}
}
# 生成任务
flgo.gen_task(config,task_path = task)

运行后,会出现数据集划分好后的可视化图片。
在这里插入图片描述

不同颜色表示不同标签的数据,横轴为样本数目,纵轴为用户,每一行表示相应用户的本地数据集分布。

三、项目结构

FLGo包下

├─ algorithm(算法)
│  ├─ fedavg.py                   // FedAvg算法
│  ├─ ...
│  ├─ fedasync.py                 // 异步分布式算法的基类
│  └─ fedbase.py                  // 分布式算法的基类
├─ benchmark(基准测试)
│  ├─ mnist_classification			// 在MNIST数据集上的分类任务
│  │  ├─ model                   // 相应的模型
│  |  └─ core.py                 // 数据集的核心支持,包含三个必要的类(例如 TaskGen、TaskReader、TaskCalculator)
│  ├─ ...
│  ├─ RAW_DATA                   // 存储下载的原始数据集
│  └─ toolkits						// 用于生成分布式数据集的基本工具
│     ├─ cv                      // 常见的计算机视觉分布式任务
│     │  ├─ horizontal           // 水平分布任务
│     │  │  └─ image_classification.py   // 图像分类的基类
│     │  └─ ...
│     ├─ ...
│     ├─ base.py                 // 所有分布式任务的基类
│     ├─ partition.py            // 用于数据集分割的分区类
│     └─ visualization.py        // 数据集分割后的可视化工具
├─ experiment(实验)
│  ├─ logger(日志记录器)    
│  │  ├─ basic_logger.py         // 基本日志记录器类
│  |  └─ simple_logger.py        // 简单日志记录器类
│  ├─ analyzer.py               // 用于分析和打印实验结果的类
│  ├─ res_config.yml            // 分析器的超参数文件
│  ├─ run_config.yml            // 运行配置的超参数文件
|  └─ runner.py                // 基于超参数组合生成实验命令的类,并处理实验的进程调度
├─ system_simulator(系统模拟器)
│  ├─ base.py                   // 模拟系统异构性的基类
│  ├─ default_simulator.py      // 模拟系统异构性的默认类
|  └─ ...
├─ utils(实用工具)
│  ├─ fflow.py                  // 选项读取、初始化等工具
│  └─ fmodule.py                // 模型级别的操作符
└─ requirements.txt             // 项目的依赖包清单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值