Flower开源平台的使用
Flower官网:https://flower.ai/
官网doc:https://flower.ai/docs/
Flower github:https://github.com/adap/flower
为什么用Flower
Flower可以将预先写好的集中式机器学习代码以联邦学习的方式运行(只需要少量的修改)。并且他可以在windows环境下模拟联邦学习场景,非常适合实验。
Flower开源了很多联邦学习的基线算法的示例,可以轻松入门。
本文主要将一下如何使用Flower,通过对官网给出的quickstart示例,结合其他csdn,给出运行Flower的步骤以及在android上运行联邦学习的示例。
Flower安装
Flower安装需要至少python 3.8版本以上,推荐使用python 3.10 及以上,本文将使用python 3.8 运行下列的示例。
官网安装教程
创建自己的虚拟环境:conda
通过anaconda创建虚拟环境:
conda create -n flwr python=3.8
激活环境
conda activate flwr
直接安装(稳定版):
pip install flwr
注意:直接pip安装的是flower的稳定版本,与官网的版本可能不同。
查看Flower的安装版本
python -c "import flwr;print(flwr.__version__)"
我安装的1.10.0
版本。
后面的示例请移至对应版本的doc官网,具体版本的官网在doc官网的左下角的Versions
可以找到
Flower V-1.10.0的doc地址
Flower实例运行(quickstart pytorch和quickstart tensorflow)
quickstart pytorch
编写代码
创建两个文件:client.py
和 server.py
client.py
:编写客户端运行文件,主要包括传统的机器学习流程代码和Flower客户端类实现。具体如下
# 传统的机器学习流程代码
from collections import OrderedDict
import flwr as fl
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.utils.data import DataLoader
from torchvision.datasets import CIFAR10
from torchvision.transforms import Compose, Normalize, ToTensor
from tqdm import tqdm
DEVICE = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
# 定义神经网络模型
class Net(nn.Module):
def __init__(self) -> None:
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x: torch.Tensor) -> torch.Tensor:
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x