(填坑篇)基于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联邦学习社区的解惑和指导。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352