Fate试验 MBP & ECS两种方式
Fate安装 Mac & ECS
1 安装前的提示
分别尝试了用Mac单机和ECS上使用Docker安装,在实践的过程中出现的环境bug为:
Mac
- 因为ip改到了外网,而FATE服务器似乎需要在国内才能运行,出现了开VPN,quick_run.py运行不成功;不开VPN,纯连国内网,quick_run.py掉线,因为我的VPN端口号不在8080上,与FATE要求的8080端口号不对准,出现了掉线问题。
想了想,还是用Docker来弄吧
Docker
- 注意,这里的Docker不是说你在Docker内建立Centos容器后,在这个容器里面使用Docker,这里的Centos需要搭载在服务器上,如果在容器内使用Docker会出现PID占用的问题
比如我在MBP上用Docker下的Centos容器里面再安装使用Docker,这样就会出错
- 可以选择,用虚拟机来装Docker【速度慢】,或者采用云服务器【有点贵】
2 Mac安装
这里不用翻出去,你如果已经翻出去了,很有可能运行不起来
毕竟微众是国内公司(‘w’)
- 下载安装包
- 如果没有安装wget,用brew来安装(如果没有brew,建议搜索mac如何安装homebrew,brew可以说是mac开发者的必备工具)
brew install wget
- 后下载,解压
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/standalone-fate-master-1.2.0.tar.gz
tar -xvf standalone-fate-master-1.2.0.tar.gz
注意这里选用的是standalone-fate-master-1.2.0版本,跟docker版本是不一样的!如果使用的是docker请看下文!
得到的目录有这些:
arch examples federatedml logs workflow
data fate_flow init.sh miniconda3-fate-1.1
eggroll fateboard jdk research
- fate_flow: 联邦学习模块运行和管理的主要模块,用于提交任务、解析参数、生成作业、执行作业、保存和查询日志等功能
- federatedml:FL主要实现模块,包括各类特征预处理,横向/纵向场景的机器学习等
- arch:fate关于后台的计算框架进行的api层面的封装,比如基础的数据表计算和存储操作、变量数据传输的封装
- eggroll:分布式计算框架
- 安装python3
我的Mac上默认的Python是2.7版本,可以自行查看系统当前默认运行的Python版本为多少:
python --version
如果不是3.6 | 3.7,需要升级python或者降级python
具体的可以谷歌一下,如何降级/升级
- 安装需要的依赖
brew install gmp libmpc mpfr hdf5 leveldb
- 根目录下安装依赖库
# 生成requirements.txt
pip install pipreps
pipreps ./standalone-fate-master-1.2.0
- 通讯
完成安装后开始运行
cd fate_flow
可以看到一个fate_flow_server.py
,运行可以得到:
init table name:fragments, namespace:__META__
init table name:__gc_dce06ca0-39e2-11ea-9610-6c96cfdd2e1d, namespace:dce06ca0-39e2-11ea-9610-6c96cfdd2e1d
* Running on http://x.x.x.x:9380/ (Press CTRL+C to quit)
这个显示fate_flow_server
启动成功
- 运行
quick_run.py
脚本
cd ./examples/federatedml-1.x-examples
python quick_run.py
这里如果运行正常,是可以在localhost:8080
上面看到的,但是我的没有运行成功,因为我的ip跟8080对不上呜呜…然后就开始尝试用ECS上的docker来运行了
3 ECS
3.1 搭建Docker环境
3.1.1 连接ECS环境
ssh 用户名@IP
输入yes则能进入啦
如果重置了系统,需要更改known_host
地址,当出现这个错误时:
Host key verification failed
删除./.ssh/known_hosts
再重新连接就可以啦~
3.1.2 安装Docker-CE
Docker有两个版本,Docker CE和EE,社区版与企业版,我们选择社区版
- 安装Docker依赖库
yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加Docker CE的软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装Docker CE
yum makecache fast
yum -y install docker-ce
- 启动Docker服务
systemctl start docker
3.1.3 配置阿里云
在RAM界面搜索【容器镜像】 - 【镜像中心】 - 【镜像加速器】,配置Docker的自定义镜像仓库地址,将下面命令中的地址换成镜像加速器里的加速器地址:
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://xxx换这个地址"]
}
EOF
重新加载服务配置文件
systemctl daemon-reload
重启docker服务
systemctl restart docker
3.2 安装Fate
还有一步!没有安装docker-compose
yum install docker-compose
好了,开始安装fate吧!
- 获取安装包
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/docker_standalone-fate-1.5.0.tar.gz
tar -xzvf docker_standalone-fate-1.5.0.tar.gz
- 部署
cd docker_standalone-fate-1.5.0
bash install_standalone_docker.sh
3.3 单元测试
这里需要开始单元测试了,在开始前,让我们先check一下你的8080端口可以打开吗,一般是不可以的,不过ECS是可以提供的,怎么打开按照阿里云端口教程打开就可以啦
在安全组规则中开启8080
端口后,在本地开启远程连接,连接到ECS的0.0.0.0:8080
上
ssh 你的用户名@你的ECS-ip -L 127.0.0.1:8080:0.0.0.0:8080
意思是把你本地的8080端口连接到了ECS的8080端口上
同样的可以把127.0.0.1:8080改为127.0.0.1:1234,那就变成了1234连接到远程8080端口上
现在就可以开始单元测试啦
记得进入到Fate的文件夹中
再思考一下:ECS相当于是个远程服务器,也就是没有图形界面的真机,所以在测试前需要初始化docker的信息来进行测试
CONTAINER_ID=`docker ps -aqf "name=fate_python"`
docker exec -t -i ${CONTAINER_ID} bash
这个时候你会来到\fate
的容器中,可以开始你的操作啦,来测试一下python ./examples/toy_example/run_toy_example.py 10000 10000 0
运行的过程中可以打开localhost:8080
查看FateBoard中这个测试用例的运行情况。
用例如果成功,会出现以下结果:
success to calculate secure_sum, it is 2000.0
但是我后面还是用standalone-fate-master
版本了(小声)
推荐阅读