注:本文很长,择需阅览,未经许可,严禁转载!转载前请征得笔者本人许可
无脑操作流程
- 注:本文很长,择需阅览,未经许可,严禁转载!转载前请征得笔者本人许可
- 写在前面
- 下载安装VMware WorkStation 16
- 安装CentOS7(已安装的可以略过,这部分比较详细内容较多)
- 安装python3(注意网络要保持连接)
- 安装docker
- Docker命令
- 下载FATE项目
- Fate命令
- 横向联邦学习样例
- 横向联邦学习样例
- 写在最后
写在前面
假期在做服务外包竞赛,和联邦学习相关,所以写本篇(系列)博客,来记录自己的学习。
感谢指导我的学长zjj,本片博客的绝大部分内容也是出自他之手,是他引领一个真正的小白到现在一个略懂一二的小白。这里附上他csdn的主页链接(但是我现在好像还不知道55,等要到了一定在这里加上!)
废话不多说,我们现在开始吧!
下载安装VMware WorkStation 16
运行文件VMware-workstation-full-16.0.exe,根据提示完成操作即可。
密钥:(这个我就不提供了,dddd,动手自己搜搜吧)
安装CentOS7(已安装的可以略过,这部分比较详细内容较多)
此处安装的是CentOS7.9的版本
-
在主页点击“创建新的虚拟机”。也可以点击“文件”–>“新建虚拟机”
-
选中“自定义(高级)”后,点击“下一步”
-
默认即可,点击“下一步”
-
选择“稍后安装操作系统”,然后点击“下一步”
-
客户机操作系统选择Linux,版本选择CentOS7 64位,然后下一步
-
给虚拟机起名字,设置保存路径,然后下一步
-
配置处理器,试过单个处理器,系统太慢,建议多几个,下一步
-
分配内存,和cpu相似,给少了也卡,下一步
-
一般都选择NAT,默认即可,下一步
-
接下来一路默认直到指定磁盘容量,给多点,给FATE预留空间,下一步
-
一直默认下一步,最后点击完成。
-
在虚拟机中,点虚拟机–>设置–>CD/DVD(IDE),选择自己的映像文件,此处选择CentOS-7-x86_64-DVD-2009.iso即可
-
开启虚拟机,进入系统安装,按下回车后等待
-
方便学习与理解,选择中文
-
选择键盘,添加英语
-
磁盘分区点进去后直接点完成
-
选择“网络和主机名”,打开网络即可
-
选择“软件选择”安装软件
-
点击开始安装
-
设置密码,创建用户,用户可以不创建
-
等待,完成后,乖乖重启
-
许可点进去,点下同意、完成就好了
-
接下来一直前进,直到选择地区,选择上海
-
接着前进、跳过等,在“关于您”用英文写,前进
-
密码设置,前进
-
安装CentOS7系统完成
安装python3(注意网络要保持连接)
- 右键桌面打开终端
- 使用root权限
su
- 安装python3.6的一些依赖包
rm -f /var/run/yum.pid
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
出现下图结果就说明成功
- 下载python3.6.5
wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tgz
- 解压到指定文件夹
tar -xzvf Python-3.6.5.tgz -C /usr/local
- 进入解压完的文件
cd /usr/local/Python-3.6.5
- 用yum安装gcc
yum install gcc
- 编译
./configure prefix=/usr/local/python3
make && make install
- 配置软链接
cd /usr/bin
mv python python.backup
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3
- 把下列三个文件的第一行的python改为python2
进入文件后,输入i,表示插入,最下方就会变成INSERT,这个时候就可以修改了。
在修改文件内容之后,进行保存,按Esc+:+wq 回车保存
vim /usr/bin/yum
vim /usr/libexec/urlgrabber-ext-down
vim /usr/bin/yum-config-manager
安装docker
- 用yum安装软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
- 安装Docker Engine-Community
使用Docker仓库进行安装:
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。
之后,可以从仓库安装和更新 Docker。
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 设置稳定的仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装 Docker Engine-Community:
要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装,步骤如下:
列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序:
yum list docker-ce --showduplicates | sort -r
通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1:
yum install docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io
启动并加入开机自启:
systemctl start docker
systemctl enable docker
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
docker run hello-world
检查版本
docker -v
docker version
- 安装docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- 查看版本
chmod +x /usr/local/bin/docker-compose
docker-compose version
Docker命令
指令 | 作用 |
---|---|
docker images | 显示镜像 |
docker ps -a | 查看当前系统中容器的列表。 |
docker ps -l | 会列出最后一次运行的容器,包括正在运行和已经停止的。 |
docker start | 启动一个或多个已经被停止的容器 |
docker stop | 停止一个运行中的容器 |
docker rm | 删除一个或多个容器 |
docker exec | 在运行的容器中执行命令 |
docker restart | 重启容器 |
docker stop [容器名称/容器ID] | 停止容器运行 |
下载FATE项目
- 下载:
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/docker_standalone_fate_1.6.0.tar.gz
或者将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
- 单元测试:
CONTAINER_ID=`docker ps -aqf "name=fate"`
docker exec -t -i ${CONTAINER_ID} bash
bash ./python/federatedml/test/run_test.sh
- Toy测试:
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
Fate命令
- 查看Table
python python/fate_flow/fate_flow_client.py -f table_info -n experiment -t breast_homo_host
- 删除table
python fate_flow_client.py -f table_delete -n $namespace -t $table_name
python fate_flow_client.py -f table_delete -j $job_id
python python/fate_flow/fate_flow_client.py -f table_delete -n experiment -t breast_homo_host
横向联邦学习样例
- 上传训练数据
python python/fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/homo_logistic_regression/upload_data_host.json
python python/fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/homo_logistic_regression/upload_data_guest.json
- 提交训练任务
python python/fate_flow/fate_flow_client.py -f submit_job -d /fate/examples/dsl/v1/homo_logistic_regression/test_homolr_train_job_dsl.json -c /fate/examples/dsl/v1/homo_logistic_regression/test_homolr_train_job_conf.json
- 预测数据
python python/fate_flow/fate_flow_client.py -f submit_job -c /fate/examples/dsl/v1/homo_logistic_regression/test_predict_conf.json
记得修改test_predict_conf.json文件中的model_version: {jobid}
横向联邦学习样例
- 上传训练数据
python python/fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/homo_logistic_regression/up_dt_guest.json -drop 1
python python/fate_flow/fate_flow_client.py -f upload -c /fate/examples/dsl/v1/homo_logistic_regression/up_dt_host.json -drop 1
- 训练任务
python python/fate_flow/fate_flow_client.py -f submit_job -d /fate/examples/dsl/v1/hetero_logistic_regression/test_hetero_lr_train_job_dsl.json -c /fate/examples/dsl/v1/hetero_logistic_regression/test_hetero_lr_train_job_conf.json
hetero_secureboost
hetero_secureboost
test_secureboost_train_dsl.json
test_secureboost_train_binary_conf.json
- 训练任务
python python/fate_flow/fate_flow_client.py -f submit_job -c /fate/examples/dsl/v1/hetero_logistic_regression/test_predict_conf.json
记得修改test_predict_conf.json文件中的model_version: {jobid}
写在最后
特别感谢
真正把全文打下来,我才认识到,当时zjj学长给我们制作教程的时候有多辛苦,实在是太累了!
学长的教程是以word形式展现的,为了更直观的展现、自己能够看的更方便,所以写下了这篇blog。
结尾
如果喜欢这篇文章的话,不妨点个赞收藏一下
有任何的问题都非常欢迎在评论区提出,一起讨论共同进步!
以后还会持续更新更多FATE学习进度