背景
随着联邦学习的更多的关注,对于算法研究人员来说,如何快速跑起一个分布式的简单Demo至关重要。Boost算法是工业应用最常见的算法之一,但是Github上却很少有联邦学习Boost算法簇分享学习。原因想必不外乎Boost算法难以实现和优化,纵向以及横向的Secure Boost更是非常复杂。能找到最好的,只有微众银行的Fate框架。然而,Fate系统非常庞大,框架的文档比较混乱,对于科研人员来说,或许我们只需要一个简单的例子,快速跑起模型,然后对其分析。所以简单整理了一下,怎么样可以快速跑其Fate的Secure Boost算法(其他类似)。
开始
https://github.com/FederatedAI/FATE/tree/master/standalone-deploy
首先要安装docker和docker-compose,(踩坑经验:实验环境在docker上运行比服务器直接跑要好得多,依赖安装快得多)。然后,检查8080,9360和9380这三个端口是否被占用了。
- Get code
#Get code
wget https://webank-ai-1251170195.cos.ap-guangzhou.myqcloud.com/docker_standalone-fate-1.5.0_preview.tar.gz
tar -xzvf docker_standalone-fate-1.5.0_preview.tar.gz
#Execute the command
cd docker_standalone-fate-1.5.0_preview
bash install_standalone_docker.sh
安装成功之后,测试一下是否成功:
CONTAINER_ID=`docker ps -aqf "name=fate_python"`
docker exec -t -i ${CONTAINER_ID} bash
bash ./python/federatedml/test/run_test.sh
成功了之后,到这里其实就完成简单环境安装了,(踩坑经验:不要跟着文档走,再看下去会晕)
- 进入容器
sudo docker exec -t -i 45b6139850be (看自己的情况输入) bash
进入了容器之后,这里就是我们自己私人的实验基地了。接下来所有的操作都在容器里操作。
- 安装环境
python -m venv venv
source venv/bin/activate
pip install -U pip
pip install fate_client
pip install fate_test
fate_client和fate_test是fate框架中重要的组件,是用来调用命名以及测试Fate的关键包。
- 初始化fate_test
pip install fate_test
fate_test --help
- 配置yaml (踩坑经验:这里我没有修改配置,主要是容器内出报错了)
# edit priority config file with system default editor
# filling some field according to comments
fate_test config edit
- 配置pipline和Fate-flow
# configure FATE-Pipeline server setting
pipeline config --port 9380 --ip 127.0.0.1
# configure FATE-Flow Commandline server setting
flow init --port 9380 --ip 127.0.0.1
- 运行测试
fate_test suite -i examples/dsl/v2/hetero_secureboost
[1/1]start at 2020-10-19 11:12:52 /fate/examples/dsl/v2/hetero_secureboost/hetero_secureboost_testsuite.json
dataset [##----------------------] 1/11 [0:00:07]2020101911125258146110 guest_0<-experiment.breast_hetero_guest
dataset [####--------------------] 2/11 [0:00:08]2020101911130001715611 host_0<-experiment.breast_hetero_host
dataset [######------------------] 3/11 [0:00:07]2020101911130823165912 guest_0<-experiment.vehicle_scale_hetero_guest
dataset [########----------------] 4/11 [0:00:08]2020101911131574864613 host_0<-experiment.vehicle_scale_hetero_host
dataset [##########--------------] 5/11 [0:00:09]2020101911132380664814 guest_0<-experiment.student_hetero_guest
dataset [#############-----------] 6/11 [0:00:07]2020101911133327408315 host_0<-experiment.student_hetero_host
dataset [###############---------] 7/11 [0:00:08]2020101911134047349416 guest_0<-experiment.ionosphere_scale_hetero_guest
dataset [#################-------] 8/11 [0:00:09]2020101911134884438117 host_0<-experiment.ionosphere_scale_hetero_host
dataset [###################-----] 9/11 [0:00:08]2020101911135801084218 guest_0<-experiment.motor_hetero_guest
dataset [#####################---] 10/11 [0:00:07]2020101911140652615719 host_0<-experiment.motor_hetero_host_1
dataset [########################] 11/11 [0:00:09]2020101911141447193720 host_1<-experiment.motor_hetero_host_2
jobs [##----------------------] 1/11 [0:04:34]2020101911142359285221 complete train_binary
jobs [####--------------------] 2/11 [0:04:11]2020101911185782798122 complete train_complete_secure
jobs [######------------------] 3/11 [0:03:24]2020101911230977067123 running 75% train_multi
jobs [######------------------] 3/11 [0:04:40]2020101911230977067123 running 75% train_multi
jobs [######------------------] 3/11 [0:06:13]2020101911230977067123 running 75% train_multi
最后的填坑建议
如果选择基于Fate做联邦学习实验,推荐的是通过pipeline,对开发者更友好,改参也更容易:安装完上面两个包后:pipeline config --ip 机器ip(单机版填写127.0.0.1) --port 9380(flow的端口)。然后执行fate_test suite -i examples/pipeline/hetero_sbt,里面有大量的sbt样例。另外,也提供了中心化训练和fate训练的效果正确性对比,
运行fate_test benchmark-quality -i examples/benchmark_quality/hetero_sbt
时间有限,暂时能帮Fate社区做的最大的贡献就是记录下大神们对我指导了。最后,感谢Fate联邦学习社区的解惑和指导。
网友评论