Ubuntu20.04下使用docker安装FATE联邦学习框架

一、前提准备

1.1 安装jdk1.8+
打开命令行创建一个文件夹保存jdk
$ cd /usr
$ sudo mkdir java
在windows上下载jdk1.8+版本这是下载的是jdk-8u291-linux-x64.tar.gz,
移入Ubuntu,解压到刚刚创建的文件夹
$ sudo tar -xzvf jdk-8u291-linux-x64.tar.gz -C /usr/java
配置java环境变量
$ sudo vi /etc/profile
添加以下命令到配置文件最后然后保存,这里(jdk1.8.0_291)选择自己解压的版本
export JAVA_HOME=/usr/java/jdk1.8.0_291
export JRE_HOME=/usr/java/jdk1.8.0_291/jre
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
添加完成后执行以下命令使配置生效
$ source /etc/profile
测试是否配置成功
$ java -version
成功会显示以下信息
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
1.2 安装python3-pip、virtualenv、virtualenvwrapper
  1. 安装python3-pip
Ubuntu下自带python3环境
$ python3 --version
自带版本3.8.5
Python 3.8.5
$ sudo apt-get install python3-pip
  1. 安装virtualenv
$ sudo apt install virtualenv
测试是否安装成功
创建一个虚拟环境名为env
$ virtualenv env
打印以下信息
created virtual environment CPython3.8.5.final.0-64 in 201ms
进入虚拟环境bin目录启动虚拟环境
$ cd env/bin
$ source activate
进入成功会在命令行最前面看到(env)
(env) jude@ubuntu:~/env/bin$
退出虚拟环境
$ deactivate
  1. 安装virtualenvwrapper
$ sudo apt install virtualenvwrapper
配置环境
$ sudo vi ~/.bashrc
在文本最后添加以下信息并保存,(找到virtualenvwrapper.sh的位置,我这里是/usr/share/virtualenvwrapper)
export WORKON_HOME=$HOME/.virtualenvs   
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
使用以下命令使环境生效
$ source ~/.bashrc
测试是否安装成功
创建一个虚拟环境名为vir_env
$ mkvirtualenv vir_env
打印以下信息
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/preactivate
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/postactivate
virtualenvwrapper.user_scripts creating /home/jude/.virtualenvs/vir_env/bin/get_env_details
进入成功会在命令行最前面看到(vir_env)
(vir_env) jude@ubuntu
退出虚拟环境
$ deactivate
再次进入vir_env虚拟环境
$ workon vir_env
1.3 安装mysql5.6+
这里选择apt-get方式安装最新版mysql
$ sudo apt-get install mysql-server
显示以下信息
Setting up mysql-server (8.0.25-0ubuntu0.20.04.1) ...
Processing triggers for systemd (245.4-4ubuntu3.4) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.2) ...
使用以下命令初始化配置
$ sudo mysql_secure_installation
初始化过程中会出现选择y或者n,根据个人情况,这里是我的选择
Press y|Y for Yes, any other key for No: n
Remove anonymous users? (Press y|Y for Yes, any other key for No) : n
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : n
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : n
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
配置mysql的一些基本信息,需要mysql可以进行远程访问,使用以下命令打开配置文件找到bind-address = 127.0.0.1改为bind-address = 0.0.0.0,退出保存
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
测试是否安装成功
$ sudo service mysql start
$ sudo mysql -uroot -p
然后输入密码进入mysql
$ mysql>
退出mysql
$ mysql>exit
1.3 如果尚未安装最新版本的Docker,请安装它
1.3.1 如果安装了docker旧版本,卸载旧版本docker(可选)
 $ sudo apt-get remove docker docker-engine docker.io containerd runc
1.3.2 更新apt软件包索引并安装软件包以允许apt通过HTTPS使用存储库
$ sudo apt-get update
$ sudo apt-get install \
       apt-transport-https \
       ca-certificates \
       curl \
       gnupg \
       lsb-release
1.3.3 添加Docker的官方GPG密钥
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
1.3.4 设置稳定的存储库
$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
1.3.5 更新apt软件包索引,并安装最新版本的Docker Engine和容器化的容器
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
1.3.6 通过运行hello-world 映像来验证是否正确安装了Docker Engine
$ sudo docker run hello-world
此命令下载测试图像并在容器中运行它。容器运行时,它会打印参考消息并退出。
1.3.7 如果允许非特权用户运行Docker命令执行以下步骤(可选)
  1. 创建docker组
$ sudo groupadd docker
如果存在docker组,显示已存在docker组,执行下一步
  1. 将自己的用户添加到该docker组
$ sudo usermod -aG docker $USER
  1. 激活对组的更改
$ newgrp docker
  1. 验证是否可以运行docker不带命令sudo
$ docker run hello-world
此命令下载测试图像并在容器中运行它。容器运行时,它会打印参考消息并退出。
1.3.8 配置Docker以在启动时启动
> $ sudo systemctl enable docker.service
> $ sudo systemctl enable containerd.service
> 若要禁用此行为,enable改成disable
> $ sudo systemctl disable docker.service
> $ sudo systemctl disable containerd.service
1.3.9 测试docker的安装
$ docker version
打印以下信息:
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:47:17 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:45:28 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
1.4 安装Docker Compose
  1. 下载Docker Compose的当前稳定版本1.29.1
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
要安装其他版本的Compose,替换1.29.1为要使用的Compose版本
  1. 将可执行权限应用于二进制文件
$ sudo chmod +x /usr/local/bin/docker-compose
  1. 测试Docker Compose的安装
$ docker-compose --version
打印以下信息:
docker-compose version 1.29.1, build c34c88b2

二、使用Docker安装FATE

2.1 下载fate源码

下载FATE安装包,这里选用的是1.6.0版本
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/docker_standalone_fate_1.6.0.tar.gz
使用以下命令解压
$ tar -xzvf docker_standalone_fate_1.6.0.tar.gz
进入解压好的目录
$ cd docker_standalone_fate_1.6.0
执行配置文件
$ bash install_standalone_docker.sh
打印以下信息,文件比较大,下载过程比较慢
c12c9eb9c6d7   fate:latest   "docker-entrypoint.s…"   22 seconds ago   Up Less than a second   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   fate
fefb55d33eaa   hello-world   "/hello"                 7 days ago       Exited (0) 7 days ago                                               busy_brown
5bf6463495d3   hello-world   "/hello"                 7 days ago       Exited (0) 7 days ago                                               heuristic_mahavira

2.2 测试

单元测试
$ CONTAINER_ID=`docker ps -aqf "name=fate"`
$ docker exec -t -i ${CONTAINER_ID} bash
$ bash ./python/federatedml/test/run_test.sh
测试成功显示以下信息,测试过程比较慢
there are 0 failed test
退出测试
$ exit
Toy_example测试
$ CONTAINER_ID=`docker ps -aqf "name=fate"`
$ docker exec -t -i ${CONTAINER_ID} bash
$ python ./examples/toy_example/run_toy_example.py 10000 10000 0
测试成功打印以下信息
[INFO] [2021-05-17 12:21:53,582] [1497:140667035699008] - secure_add_guest.py[line:99]: begin to init parameters of secure add example guest
[INFO] [2021-05-17 12:21:53,582] [1497:140667035699008] - secure_add_guest.py[line:102]: begin to make guest data
[INFO] [2021-05-17 12:21:53,704] [1497:140667035699008] - secure_add_guest.py[line:105]: split data into two random parts
[INFO] [2021-05-17 12:21:54,367] [1497:140667035699008] - secure_add_guest.py[line:108]: share one random part data to host
[INFO] [2021-05-17 12:21:54,476] [1497:140667035699008] - secure_add_guest.py[line:111]: get share of one random part data from host
[INFO] [2021-05-17 12:21:54,697] [1497:140667035699008] - secure_add_guest.py[line:114]: begin to get sum of guest and host
[INFO] [2021-05-17 12:21:54,939] [1497:140667035699008] - secure_add_guest.py[line:117]: receive host sum from guest
[INFO] [2021-05-17 12:21:54,944] [1497:140667035699008] - secure_add_guest.py[line:124]: success to calculate secure_sum, it is 2000.0

打开浏览器输入网址http://主机ip:8080到FATE板查看结果

在这里插入图片描述

退出测试
$ exit

2.3 安装FATE-Client和FATE-Tes​​t工具

安装之前先安装launchpadlib==1.10.13
$ pip install launchpadlib==1.10.13 -i https://pypi.douban.com/simple
使用以下命令安装FATE-Client,安装过程比较慢
$ pip install fate-client -i https://pypi.douban.com/simple
安装成功打印以下信息
Successfully installed fate-client-0.3.0.post1 loguru-0.5.3 tensorflow-2.5.0
使用以下命令安装FATE-Tes​​t
$ pip install fate-test -i https://pypi.douban.com/simple
安装成功打印以下信息
Successfully installed colorama-0.4.4 fate-test-0.3.0.post1 pandas-1.2.4 prettytable-1.0.1 sshtunnel-0.1.5 wcwidth-0.2.5

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐