美文网首页
(填坑篇)基于FATE的Secure Boost算法例子

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

作者: 小胖子善轩 | 来源:发表于2020-10-19 20:35 被阅读0次

    背景

    随着联邦学习的更多的关注,对于算法研究人员来说,如何快速跑起一个分布式的简单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算法例子

          本文链接:https://www.haomeiwen.com/subject/zyjlmktx.html