(填坑篇)基于FATE的Secure Boost算法例子

背景

随着联邦学习的更多的关注,对于算法研究人员来说,如何快速跑起一个分布式的简单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这三个端口是否被占用了。

  1. 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

成功了之后,到这里其实就完成简单环境安装了,(踩坑经验:不要跟着文档走,再看下去会晕)

  1. 进入容器
sudo docker exec -t -i 45b6139850be (看自己的情况输入) bash

进入了容器之后,这里就是我们自己私人的实验基地了。接下来所有的操作都在容器里操作。

  1. 安装环境
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的关键包。

  1. 初始化fate_test
pip install fate_test
fate_test --help
  1. 配置yaml (踩坑经验:这里我没有修改配置,主要是容器内出报错了)
# edit priority config file with system default editor
# filling some field according to comments
fate_test config edit
  1. 配置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
  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联邦学习社区的解惑和指导。

你可能感兴趣的:((填坑篇)基于FATE的Secure Boost算法例子)