1. 获取训练模型信息
输入命令获取训练模型信息的model_id以及model_version,具体命令模板如下
python ${your_fate_install_path}/fate_flow/fate_flow_client.py -f job_config -j ${jobid} -r guest -p
- ${your_fate_install_path}: fate安装目录
- -j :${jobid} :任务ID
- -r: 角色
- -p: ${guest_partyid}:partyId
- -o: 文件数据路径
进入fate容器输入以下命令:
python fate_flow/fate_flow_client.py -f job_config -j 202112070410338086905 -r guest -p 10000 -o examples/federatedml-1.x-examples/homo_logistic_regression
控制台输出相关信息如下:
进入输出目录,可看到输出的文件
- dsl.json:与训练时候定义的dsl配置相对应。
- runtime_conf.json:与训练时候定义的运行配置相对应。
- model_info.json:模型信息,包括model_id model_verison
- train_runtime_conf.json:暂无
2. 编写预测配置文件
使用文件examples/federatedml-1.x-examples/homo_logistic_regression/test_predict_conf.json
{
"initiator": {
"role": "guest",
"party_id": 10000
},
"job_parameters": {
"work_mode": 0,
"job_type": "predict",
"model_id": "arbiter-10000#guest-10000#host-10000#model",
"model_version": "202112070410338086905"
},
"role": {
"guest": [10000],
"host": [10000],
"arbiter": [10000]
},
"role_parameters": {
"guest": {
"args": {
"data": {
"eval_data": [{"name": "homo_breast_guest", "namespace": "homo_breast_guest"}]
}
}
},
"host": {
"args": {
"data": {
"eval_data": [{"name": "homo_breast_host", "namespace": "homo_breast_host"}]
}
}
}
}
}
1. initiator:指定发起人的角色和partyID,应与训练过程相同。
2. job_parameters:
work_mode:单机或者集群,它应与训练过程相同。
model_id \ model_version:获取的训练模型信息。
job_type:任务类型。分为train(训练)/predict(预测) ,在这种情况下,它应该是“predict”。
3. role:指出所有角色的所有partyID,应与训练过程相同。
4. role_parameters:角色配置,guest使用homo_breast_guest数据进行预测,host使用homo_breast_host进行预测。
3.开始预测
预测的模板命令如下:
python ${your_fate_install_path}/fate_flow/fate_flow_client.py -f submit_job -c ${predict_config}
- ${your_fate_install_path}: fate安装目录
- -c:预测文件配置路径 ${predict_config}
控制台输入以下命令:
python fate_flow/fate_flow_client.py -f submit_job -c examples/federatedml-1.x-examples/homo_logistic_regression/test_predict_conf.json
输出以下结果表示成功:
4. 查看预测结果
通过监控平台以及job_id查看预测情况
总体情况如下:
点击"view the job" 查看具体情况
先看这个图,这个图我们无法得知各个组件之间的输入输出关系。
因此我们还是需要看他的dsl,输入查询命令
python fate_flow/fate_flow_client.py -f job_config -j 202112070835330174078 -r guest -p 10000 -o examples/federatedml-1.x-examples/homo_logistic_regression
查看输出目录的dsl.json,找到对应配置如下:
{
"components": {
"dataio_0": {
"CodePath": "federatedml/util/data_io.py/DataIO",
"input": {
"data": {
"data": [
"args.eval_data"
]
},
"model": [
"pipeline.dataio_0.dataio"
]
},
"module": "DataIO",
"output": {
"data": [
"train"
]
}
},
"dataio_1": {
"CodePath": "federatedml/util/data_io.py/DataIO",
"input": {
"data": {
"data": [
"args.eval_data"
]
}
},
"module": "DataIO",
"output": {
"data": [
"eval_data"
]
}
},
"homo_lr_0": {
"CodePath": "federatedml/linear_model/logistic_regression/homo_logsitic_regression/homo_lr_guest.py/HomoLRGuest",
"input": {
"data": {
"eval_data": [
"dataio_0.train"
]
},
"model": [
"pipeline.homo_lr_0.homolr"
]
},
"module": "HomoLR",
"output": {
"data": [
"train"
]
}
},
"homo_lr_1": {
"CodePath": "federatedml/linear_model/logistic_regression/homo_logsitic_regression/homo_lr_guest.py/HomoLRGuest",
"input": {
"data": {
"eval_data": [
"dataio_1.eval_data"
]
},
"model": [
"pipeline.homo_lr_1.homolr"
]
},
"module": "HomoLR",
"output": {
"data": [
"predict"
]
}
}
}
}
5. 获取所有预测结果
FateBoard默认查看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}
- ${job_id}: 预测任务ID
- ${party_id}: 用户partyID
- ${role}: 角色
- ${component_name}: 获取预测结果的组件
- ${predict_result_output_dir}: 输出目录
5.1 获取guest所有预测结果
控制台输入以下命令:
homo_lr_0预测结果:
python fate_flow/fate_flow_client.py -f component_output_data -j 202112070835330174078 -p 10000 -r guest -cpn homo_lr_0 -o examples/federatedml-1.x-examples/homo_logistic_regression/predict
homo_lr_1预测结果:
python fate_flow/fate_flow_client.py -f component_output_data -j 202112070835330174078 -p 10000 -r guest -cpn homo_lr_1 -o examples/federatedml-1.x-examples/homo_logistic_regression/predict
控制台输出:
进入目录可以看到两个文件
output_data.csv:输出csv的数据;
output_data_meta.json:输出数据的表头字段
5.2 获取host所有预测结果
host的操作只需要修改role跟相对的partyid即可