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

微众FATE1.0单机版学习笔记

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

一、FATE安装(单机版)

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

1.依赖环境:
要求:jdk1.8+、Python3.6、python virtualenv、redis-5.0.2
**(注意,mysql已经不需要了)
具体安装方法可参照这篇博客: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:// f a t e b o a r d i p : {fate_board_ip}: fateboardip:{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

你可能感兴趣的:(联邦学习)