-
Notifications
You must be signed in to change notification settings - Fork 221
使用Docker Compose 部署FATE v1.5.0
FATE已经发布了首个长期支持版本,怎样快速体验新版本的FATE来做联邦学习的实验任务呢,接下来我们带领大家一起使用docker-compose来快速部署FATE v1.5.0 LTS。
本文将指导你在两台Linux主机上使用docker-compose部署两方的FATE集群。
使用docker-compose部署FATE需要三台Linux的机器,两个工作机和一个部署机。
-
两台工作机,Linux系统,推荐配置为:8核,16G内存以上;
-
一台部署机,只需要是Linux环境的机器就可以;
本文使用VMware workstation来新建两台虚拟机,部署机使用本机的Windows的WSL环境,也可以使用上边两台机器的任意一台。
安装部署环境信息如下:
Role | hostname | OS | IP |
---|---|---|---|
工作机 | partyA | Centos7 | 192.168.0.9 |
工作机 | partyB | Centos7 | 192.168.0.10 |
部署机(WSL) | localhost | Ubuntu-18.04 | localhost |
本文运行FATE的主机使用的是centos环境,由于docker container的运行不依赖主机操作系统,所以使用 Ubuntu也是可以的,不过基础环境配置的命令会有一些不同。
这部分需要同时在两个目标机器上操作
# 关闭防火墙
sudo systemctl stop firewalld
# 查看防火墙状态
sudo systemctl status firewalld
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io
# Step 4: 开启Docker服务
sudo service docker start
# 验证Docker是否正确安装。
sudo docker run hello-world
如果你使用上面的方式安装docker,不能成功,也可以使用docker-ce其他安装方式。
# step 1: 下载Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# step 2: 增加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# step 3: 创建指向/usr/bin的符号链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# step 4: 测试安装结果
sudo docker-compose --version
如果你使用上面的方式安装docker,不能成功,也可以使用docker-compose其他安装方式。
# 新增用户fate
sudo useradd -s /bin/bash -g docker -d /home/fate fate
# 设置用户密码
sudo passwd fate
这部分需要在部署机上操作
# step 1: 生成公私钥
ssh-keygen
# step 2: 发送到partyA
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
# step 3: 发送到partyB
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
安装FATE比较简单,只需要下载相应的安装包,解压,配置,安装就可以了。接下来是具体操作:
在部署机下载FATE的docker-compose安装包
# 下载
wget https://github.com/FederatedAI/KubeFATE/releases/download/v1.5.0/kubefate-docker-compose-v1.5.0.tar.gz
# 解压
tar -xvf kubefate-docker-compose-v1.5.0.tar.gz
# 进入安装安装目录
cd docker-deploy
FATE的各个版本的安装包都可以在这里找到https://github.com/FederatedAI/KubeFATE/releases
我们在partyA上部署9999,在partyB上部署10000,按顺序填写party_id和party_ip。
$ vi parties.conf
#!/bin/bash
user=fate # 运行FATE的系统用户(对应上文的新增用户)
dir=/data/projects/fate # 运行FATE的文件目录
party_list=(10000 9999) # 部署的party_id
party_ip_list=(192.168.0.10 192.168.0.9) # 部署FATE的party_ip
serving_ip_list=(192.168.0.10 192.168.0.9) # 部署FATE-Serving的party_ip
# computing_backend could be eggroll or spark.
computing_backend=eggroll # FATE的计算引擎
# default
exchangeip=
# modify if you are going to use an external db
mysql_ip=mysql
mysql_user=fate
mysql_password=fate_dev
mysql_db=fate_flow
# modify if you are going to use an external redis
redis_ip=redis
redis_port=6379
redis_password=fate_dev
主要修改party_ip_list
和serving_ip_list
,其他的可以默认不变。
如果想要使用spark计算引擎,修改computing_backend=spark
即可。
第一次部署的时候镜像需要从docker hub下载,由于国内用户经常不能链接docker hub,可以使用hub.c.163.com
的镜像,只需要配置RegistryURI就可以。
$ vi .env
RegistryURI=hub.c.163.com # 使用国内的镜像地址
TAG=1.5.0-release
SERVING_TAG=2.0.0-release
# PREFIX: namespace on the registry's server.
# RegistryURI: address of the local registry
# TAG: tag of module images.
根据上文的配置生成相对应的安装文件包
bash generate_config.sh
这一步会生成部署FATE的两方的所有tar包。如果修改了配置文件parties.conf
或者.env
,那么就需要重新生成安装包。
部署双方的FATE和FATE-Serving
bash docker_deploy.sh all
这一步会通过scp和ssh的方式将tar包拷贝到目标主机的对应目录,然后启动FATE集群。
这里使用了参数all
直接部署了party10000和party9999的FATE与FATE-Serving,如果想要只部署一个部分,可以参考这里的详细使用
# 进入work目录
cd /data/projects/fate/confs-<party_id>/
# 查看containers状态
docker-compose ps
# 检查fateflow是否成功运行
docker-compose logs python
所有的组件状态都是Up并且python容器中出现"* Running on http://x.x.x.x:9380/ (Press CTRL+C to quit)"的日志消息代表FATE已经成功启动。
# 进入fateflow的container
docker-compose exec python bash
# 进入toy_example目录
cd ../examples/toy_example/
# 运行toy_example命令
python run_toy_example.py 9999 10000 1
# 如果是在partyB的机器,注意<party_id>的顺序
# python run_toy_example.py 10000 9999 1
显示job status is running代表任务已经开始运行,并且出现"success to calculate secure_sum, it is 2000.0"代表任务已经成功。
在使用WSL部署的时候,屏幕显示有fateboard和notebook的地址
在浏览器分别打开双方的fateboard
- partyA:http://192.168.0.9:8080
- partyB:http://192.168.0.10:8080
- partyA:http://192.168.0.9:20000
- partyB:http://192.168.0.10:20000
step 1: 打开partyA的notebook里面的toy_example示例,http://192.168.0.9:20000/notebooks/Toy_Example/toy_example_submit_job.ipynb
step 2:修改默认的party_id
step 3:运行toy_example
出现success,使用notebook运行toy_example成功,接下来使用notebook完成自己的联邦学习模型建设吧!
https://github.com/FederatedAI/KubeFATE/blob/v1.5.0/docker-deploy/README.md
https://github.com/FederatedAI/FATE/blob/v1.5.0/examples/toy_example/README.md
Welcome to KubeFATE's wiki page.