欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微众联邦学习FATE开源框架单机版开发笔记

程序员文章站 2022-07-14 13:32:37
...

微众联邦学习FATE开源框架单机版开发笔记

微众FATE项目地址:https://github.com/FederatedAI/FATE

一、FATE安装(单机版)

FATE的单机版安装包括docker版本和手动安装两种方法,官方推荐为docker方法安装,下面介绍其具体安装方法:

1.依赖环境:
要求:jdk1.8+、Python3.6、python virtualenv、redis-5.0.2
具体安装方法可参照这篇博客:https://blog.csdn.net/weixin_44002829/article/details/97619826
2.安装前注意事项:
(1)3309、8080端口不能被占用
3.启动服务:

##获取代码(注意这一步的网址官网没有更新)
FATE $ git clone https://github.com/FederatedAI/FATE.git

##执行命令,进入docker 环境
FATE $ cd FATE/standalone-deploy
FATE $ sh build_standalone_docker.sh

#验证是否安装成功
FATE $ CONTAINER_ID=`docker ps -aqf "name=fate_python"`
FATE $ docker exec -t -i ${CONTAINER_ID} bash
FATE $ sh ./federatedml/test/run_test.sh

这里最后一步是用来执行测试,若所有测试单元均成功通过测试,则表明安装成功

二、运行及快速测试

FATE提供了一个可供学习者进行快速测试的案例quick_run.py,该案例默认执行纵向LR的运行,具体测试方式如下:
1.在FATE的docker环境下,切换到示例文件夹:cd /examples/federatedml-1.0-examples/
2.快速测试
(1)Train:
直接运行quick_run.py:
python quick_run.py
(2)Predict:
编辑quick_run.py脚本,将TASK参数改为”predict“
重新运行quick_run.py

三、FATE具体建模:

1.train

Step1. upload数据

(1)准备好load_file的配置文件
(2)运行代码:

python ${your_install_path}/fate_flow/fate_flow_client.py -f upload -c dsl_test/upload_data.json

注意:参与计算的各方均需运行该步

Step2. 开始建模工作

(1)准备好dsl_config和runtime_config配置文件,要确保其中的table_name、namespace字段与upload_data conf中的保持一致
(2)运行代码:

python ${your_install_path}/fate_flow/fate_flow_client.py -f submitJob -d dsl_test/test_homolr_job_dsl.json -c dsl_test/${your_component_conf_json}

Step3. 查看日志

日志查看路径: ${your_install_path}/logs/{your jobid}

2.Predict

Step1. 执行上述train步骤

(1) 训练步骤中的部署模块添加“ need_deploy”字段。除FederatedmSample和Evaluation之外,所有模块均将True设置为其默认值,这样的话,它们就不会在预测阶段运行。“need_deploy”字段为True表示此模块应运行“fit”过程,且fitted的模型需要在预测阶段进行部署
(2) 除了将这些模型设置为“ need_deploy”,它们还应该配置为具有模型输出,但Intersect模块除外。只有这样,fate-flow才能存储训练后的模型并使其在inference 阶段可用。
(3) 获取训练模型的model_id和model_version。有两种方法可以做到这一点。
a. 提交工作后,将输出一些模型信息,其中包括“ model_id”和“ model_version”
b. 直接通过命令,在运行这些命令后,一个包含模型信息的json文件将下载到${job_config_output_path}/model_info.json,在这个json文件中可以找到“ model_id”和“ model_version”
${job_config_output_path}/model_info.json,在这个json文件中可以找到“ model_id”和“ model_version”
python ${your_fate_install_path}/fate_flow/fate_flow_client.py -f job_config -j ${jobid} -r guest -p ${guest_partyid} -o ${job_config_output_path}

Step2. 定义预测的配置文件

  1. initiator: 指定发起人initiator的角色和参与方ID,应与训练过程相同。

  2. job_parameters:
    work_mode:cluster or standalone,应与训练过程相同。
    model_id \ model_version:Step1中提到的模型指示器(model indicator)。
    job_type:工作类型。 在这种情况下,它应该是“predict”。

     在“ ./test_predict_conf.json”中有一个示例测试配置文件。
    
  3. role:指出所有角色的所有partyID,应与训练过程相同。

  4. role_parameters:为每个角色设置参数。 在这种情况下,“ eval_data”(意味着将要预测的数据)应同时为Guest和Host填写

Step3. 开始预测

python ${your_fate_install_path}/fate_flow/fate_flow_client.py -f submit_job -c ${predict_config}

Step4. 查看运行状态

[法一] 在FATE_board中查看,
url是: http://fateboardip:{fate_board_ip}:{fate_board_port}/index.html#/details?job_id=KaTeX parse error: Expected 'EOF', got '&' at position 9: {job_id}&̲role=guest&part…{guest_partyid}
[法二] 如果没有安装FATE_board,运行状态可以通过fate_flow查看,运行下面的命令可以查询到job的状态:

python ${your_fate_install_path}/fate_flow/fate_flow_client.py -f query_job -j {job_id} -r guest

Step5. 下载预测结果

预测任务完成后,FATE-board中可看到前100条预测结果记录。 还可以通过以下命令下载所有结果:

python ${your_fate_install_path}/fate_flow/fate_flow_client.py -f component_output_data -j ${job_id} -p ${party_id} -r ${role} -cpn ${component_name} -o ${predict_result_output_dir}

四、Fate_flow查看信息

1.查看每个组件的输出数据

cd {your_fate_path}/fate_flow
python fate_flow_client.py -f component_output_data -j $jobid -p $party_id -r $role -cpn $component_name -o $output_dir

2.查看每个组件的输出模型

python fate_flow_client.py -f component_output_model -j $jobid -p $party_id -r $role -cpn $component_name

3.获取task的日志

python fate_flow_client.py -f job_log -j $jobid -o $output_dir

4.怎样stop job?

python fate_flow_client.py -f stop_job -j $jobid

5.怎样查询job的当前状态?

python fate_flow_client.py -f query_job -j $jobid -p party_id -r role

6.怎样获得job的runtime_conf配置文件?

python fate_flow_client.py -f job_config -j $jobid -p party_id -r role -o $output_dir

7.怎样下载之前上传过的表?

python fate_flow_client.py -f download -n table_namespace -t table_name -w work_mode -o save_file
相关标签: 联邦学习 FATE