联邦学习框架flower的安装与模拟
Flower (flwr) 是一个用于构建联邦学习系统的框架,官网是:https://flower.dev/ (opens new window)。
# 特点
它的设计基于以下指导原则:可定制化:不同的用例需要不同的联邦学习系统。Flower允许根据每个用例的需求进行广泛的配置。
- Flower是一个通用的联邦学习框架,可以支持多种机器学习库和算法,而其他框架如TensorFlow Federated(TFF)和FedML则更依赖于特定的库或算法。
- Flower是一个轻量级的联邦学习框架,它只提供了最基本的抽象和接口,让用户可以自由地定义自己的客户端和服务器逻辑,而其他框架如TFF和FedML则提供了更多的内置功能和组件,但也增加了复杂度和限制。
- Flower是一个跨平台的联邦学习框架,它可以运行在不同的操作系统和硬件上,而其他框架如TFF则只能运行在Linux上。
# 安装
安装可以使用pip:pip install flwr
。如果需要使用pytorch之类的需要额外安装。
# 模拟
flwr除了支持实际的一个server,多个client这种方式,在很多时候我们需要的是调试代码,因此需要单机模拟。一个官方的demo见github (opens new window).
有以下两个需要注意的地方:
# 1. 关于“客户端”的理解
在模拟中,为了节省资源,flower采取的措施是在训练时才会实例化一个客户端,训练完之后会销毁。也就是说客户端是一种无状态的对象,不要在客户端内保存任何内容。在训练前会调用set_paramas
函数来设定这个客户端的模型参数,客户端本地保存模型参数是没有意义的。
# 2. 关于flower模拟时内存占用过大的问题
flower的模拟非常占用内存,试试上并不是他的客户端占用,而是服务端。解决办法是调小客户端的进程数。代码实例如下:
server = fl.server.Server(strategy=strategy, client_manager=RLManager())
server.set_max_workers(1)
# start simulation
fl.simulation.start_simulation(
client_fn=client_fn,
num_clients=pool_size,
client_resources=client_resources,
config=fl.server.ServerConfig(num_rounds=NUM_ROUNDS),
ray_init_args=ray_init_args,
server=server,
)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
编辑 (opens new window)
上次更新: 2024/11/17, 13:04:13
- 02
- containerd高版本换源,containerd换源无效问题11-07
- 03
- apt-get使用代理11-05