1、准备工作:
Quickstart - FedVision这是官方部署教程,我们基本也是按照这个来,看他的要求就是你要有本地免密ssh这是最重要的,其次是你的python版本要大于3.9最好。
我是在Linux里面安装的,我是ubuntu20.04,首先先安装,然后配置openssh本地免密登录回环,这个可以看我之前发的那个:windows上部署本地SSH免密,不过那个是windows上的,说到这,放弃windows执念吧,家人们,如果你执意想部署windows上,你会走很多弯路,我这几天几乎一天只能看一篇论文或者解决一个问题,就是因为我有windows执念。
1.1 本地SSH免密配置
继续,首先sudo apt-get update一下,然后安装openssh-server这个网上都有教程,咱直接说你下载好更新好后了。(因为如果你配置时候都是一环套一环,你要相信我是今天才正式第一次接触linux在linux上部署东西,我都可以,你也可以。我本科通信,研究生才开始干计算机的活)
安装完后,就是经典操作:
- 先 ssh localhost 一下创建.ssh文件夹
- 再 ssh-keygen -t rsa 一下创建本地私钥和公钥
- 把公钥(.pub文件)复制一份重命名为authorized_keys放在.ssh文件夹内
- 你都不用去改config了,直接 ssh 12850@localhost,注意,12850是我的用户名,这应该改成你的用户名
- 注意,正常情况下,此时应该直接就进入服务器了,如下图:
- 当然输入exit然后回车就退出了,测试完毕
- 如果你碰到其他问题,打开config文件,就看我前面写的那个,照着我那个改,你就没问题
到此,本地SSH免密登录准备完成,接下来是Ubuntu的python安装
1.2 python3.9安装
由于Ubuntu不自带python包,所以我们要用apt-get去安装:
- sudo apt update
- sudo apt install python3.9
pip也别落下了:
- sudo apt install python3-pip
- pip3 --version
大功告成,接下来就是愉快的部署环节了。还有就是如何把下载源换成清华源,这个我就不说了,咱csdn看看,很多大佬都有说,你就搜Ubuntu20.04安装配置,有一个我记得老清晰了,教的老详细了,设置安装啥的。但是这个不重要,不行你就每个指令后面-i清华源就可以了。
2.部署过程
2.1 machine1配置:
- 首先应该建立虚拟环境:
python3 -m venv venv
这个venv就是你的虚拟环境名字,可以换,换成你喜欢的都可以,但是后面就要用你喜欢的这个名字启动哦
-
然后进入虚拟环境:
source venv/bin/activate
这个venv就是你刚才起的名字
-
进来后开始安装fedvision_tooltiks
python -m pip install -U pip python -m pip install fedvision_deploy_toolkit
如果说你pip版本不对或者语法不对,你就跟着提示改一下语法或者版本就行了,这个不会阻拦你,稍微搜一下也行。一般不会报错,这都是我亲自做过的,不会出错。
-
生成本地模板文件fedvision_standalone.yaml:
fedvision-deploy template standalone
这时候你的虚拟环境根目录会多一个文件,这个可以配置的,你可以打开看看,里面就是它的结构合组成,可以看看,但是别乱改,我研究研究,后面出一个讲讲都是干啥的,跟论文的一样不我到时候看看。
-
部署本地文件,这个最容易出错了,你ssh不通,或者没挂镜像源,或者权限不对,就会出错,这个你在这一步之前一定要ssh搞好,全局镜像搞了,权限一定正常,最容易出问题的就是前俩,后面是因为它部署后服务端要自己搞个venv的虚拟环境,如果它没权限。就会报错,出特别特别长的,如果你不幸遇到了,复制全部错误问GPT去,他会给你答案,让你改。
fedvision-deploy deploy deploy standalone_template.yaml
正常情况第一次运行他就会开始下载,下载好多后就显示:done,后面你再部署时候直接就是done
-
开启服务:
fedvision-deploy services all start
这个你会看到很多True,记住他的pid,后面你再重新开启服务时候一定要运行指令 sudo kill PID1 PID2 PID3 PID4 PID5 PID6, 不然再开启时候就会False
到这里,你已经很幸运地基本做完了80%,一起把下面的做完。
2.2 machines配置
- 切换到machines文件夹:
cd /data/projects/fedvision
因为要在这开启它里面的venv,你可以ls一下
-
打开machines的虚拟环境:
source venv/bin/activate
其实machines和machine1就好比一个服务器一个本地
-
把路径添加到python环境:
export PYTHONPATH=$PYTHONPATH:/data/projects/fedvision/FedVision
这一步干啥的我也不知道,加上吧
-
这个重点,最后一步,md我卡一下午,就是CSDN某搞FedVision部署流程总结那个哥,md人家正常端口是127.0.0.1:1002,他非要改成勾八1000,md太相信他了,最后自己一点一点啃,发现人tm是1002,他自己改了他不说,就这样给我干一下午,谢谢,还是得相信自己,主要联邦学习框架啥的资源太少了,很少人做这个感觉,资源也很少,我做这些也是想着贡献一点力量,一起努力吧。
sh FedVision/examples/paddle_mnist/run.sh 127.0.0.1:10002
就OK了,就看到结果了。说明部署成功,大功告成
3 接下来任务
我也不是很清楚,感觉他这次上交的work是百度paddle和minst结合的一个模型,应该联邦视觉就是把本地数据训练的模型就这样上传上去训练?我也不知道,后面看看官方文档,看看咋玩这个框架,复现几个FedVision的案例,我是想搞聚合算法创新改进的,看看到时候咋改。休息!