欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Fate试验 MBP & ECS两种方式

程序员文章站 2022-07-14 13:34:44
...

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’)

  1. 下载安装包
  • 如果没有安装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:分布式计算框架
  1. 安装python3

我的Mac上默认的Python是2.7版本,可以自行查看系统当前默认运行的Python版本为多少:

python --version

如果不是3.6 | 3.7,需要升级python或者降级python

具体的可以谷歌一下,如何降级/升级

  1. 安装需要的依赖
brew install gmp libmpc mpfr hdf5 leveldb
  1. 根目录下安装依赖库
# 生成requirements.txt
pip install pipreps
pipreps ./standalone-fate-master-1.2.0

  1. 通讯

完成安装后开始运行

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启动成功

  1. 运行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,社区版与企业版,我们选择社区版

  1. 安装Docker依赖库
yum install -y yum-utils device-mapper-persistent-data lvm2
  1. 添加Docker CE的软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  1. 安装Docker CE
yum makecache fast
yum -y install docker-ce
  1. 启动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吧!

  1. 获取安装包
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
  1. 部署
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版本了(小声)

相关标签: 联邦学习