联邦学习框架 FederatedScope(1)快速入门

新鲜出炉的框架——两个月,暂时没什么教程,全程跟着官方文档走。

框架与文档可能存在一点小问题,以后肯定会改进,一切以当下事实为准。

文章目录

  • 简介
  • 快速入门
    • 下载安装
    • 文档的坑
      • 安装依赖时
      • 独立模式运行时
    • 准备数据集和模型
    • 独立模式训练
    • 分布式模式
  • 参考


简介

官网:https://federatedscope.io/

FederatedScope 采用事件驱动的编程范式,用于支持现实场景中联邦学习应用的异步训练,并借鉴分布式机器学习的相关研究成果,集成了异步训练策略来提升训练效率。具体而言,FederatedScope 将联邦学习看成是参与方之间收发消息的过程,通过定义消息类型以及处理消息的行为来描述联邦学习过程。

快速入门

跟着官方教程一步步操作就行, 虽然有坑。。。这里只记录一下注意事项。

下载安装

注意 torch、torchvision、Python 的版本对应(其实不需要管)

torch torchvision python
main / nightly main / nightly >=3.7, <=3.10
1.12.0 0.13.0 >=3.7, <=3.10
1.11.0 0.12.0 >=3.7, <=3.10
1.10.2 0.11.3 >=3.6, <=3.9
1.10.1 0.11.2 >=3.6, <=3.9
1.10.0 0.11.1 >=3.6, <=3.9
1.9.1 0.10.1 >=3.6, <=3.9
1.9.0 0.10.0 >=3.6, <=3.9
1.8.2 0.9.2 >=3.6, <=3.9
1.8.1 0.9.1 >=3.6, <=3.9
1.8.0 0.9.0 >=3.6, <=3.9

去官方 git 查看,绝对是最新的:https://github.com/pytorch/vision#installation

好吧,事实上压根不需要自己手动安装,上面的不用理会。。。

只需要在 anaconda 建立一个环境,注意 python 版本一定要 3.9 以上!

然后再 conda install 依赖文件 即可,requirements.txt已经集成好了(这里没用 docker )

联邦学习框架 FederatedScope(1)快速入门_第1张图片

文档的坑

文档大致是没问题的,慢慢看能跑起来,不过可能官方时间比较仓促,有些小错误。

安装依赖时

environment 打错了!!!直接给你报找不到这个文件。。。

联邦学习框架 FederatedScope(1)快速入门_第2张图片

独立模式运行时

这里的参数 federated 应该为 federate 。。。

联邦学习框架 FederatedScope(1)快速入门_第3张图片

不信你看配置文件怎么写的:

联邦学习框架 FederatedScope(1)快速入门_第4张图片

准备数据集和模型

这里只为快速入门,不自定义数据集,跑自带的 demo 而已,所以无需准备。

独立模式训练

我一看官方默认的配置参数,就知道是我这小小轻薄本无法承受之重,于是改改命令参数(如下),自信满满地 run !

python federatedscope/main.py --cfg federatedscope/example_configs/femnist.yaml federate.total_round_num 50 data.batch_size 10

可以看到,这里会打印主机 ip 、文件路径、配置参数等有价值信息。

联邦学习框架 FederatedScope(1)快速入门_第5张图片

这里是在模拟多个客户端,默认 200 个(埋下伏笔)

联邦学习框架 FederatedScope(1)快速入门_第6张图片 image-20220802193631836

果不其然,崩了!!!

让我们查看一下 GPU 和 内存 的使用情况。

GPU 明显撑得住,batch_size 就不用调了吧,至于内存,那是被模拟的 200 个客户端给爆了。。。

联邦学习框架 FederatedScope(1)快速入门_第7张图片

所以需要下调客户端的数量,那么它在哪呢?

femnist.yaml 配置文件里找了一圈,没有。

在输出日志里看一下配置,有了!

联邦学习框架 FederatedScope(1)快速入门_第8张图片

在配置文件手动加上就行,然后就可以愉快地 run 了。

联邦学习框架 FederatedScope(1)快速入门_第9张图片

exp 里可以查看训练的详细信息

联邦学习框架 FederatedScope(1)快速入门_第10张图片

分布式模式

以下仅为个人猜测与尝试!不负任何责任。

坑爹的地方又来了,你要按照文档来,那是无论如何都跑不通的。

报错:FileNotFoundError: [Errno 2] No such file or directory: 'toy_data/server_data'

项目压根没这个数据集,不过还是可以曲线救国,尝试一下。

因为上面已经下载了 femnist 的数据集,而案例里又带有相关配置文件,那理论上应该是能跑的。

联邦学习框架 FederatedScope(1)快速入门_第11张图片

分别执行以下命令(危!),就可以在本机上开四个端口,同时有一个服务端外加三个客户端。

python  federatedscope/main.py --cfg federatedscope/example_configs/distributed_femnist_server.yaml

python federatedscope/main.py --cfg federatedscope/example_configs/distributed_femnist_client1.yaml distribute.client_host '127.0.0.1' distribute.client_port 50052

python federatedscope/main.py --cfg federatedscope/example_configs/distributed_femnist_client2.yaml distribute.client_host '127.0.0.1' distribute.client_port 50053

python federatedscope/main.py --cfg federatedscope/example_configs/distributed_femnist_client2.yaml distribute.client_host '127.0.0.1' distribute.client_port 50054

客户端准备如下:

联邦学习框架 FederatedScope(1)快速入门_第12张图片

当三个客户端都准备就绪后,服务端才会开始训练:

image-20220803150337018

然后,它就崩了,也不知道有没有成功。

一个电脑上跑分布式,我可能是有点不知好歹。

联邦学习框架 FederatedScope(1)快速入门_第13张图片

这个过程也不知道发生了什么,一直 Round #0

参考

阿里达摩院最新框架FederatedScope来了!让联邦学习从可用到好用

你可能感兴趣的:(人工智能,深度学习,人工智能,机器学习)