一、阐明
Fate 的模型预测有 离线预测
和 在线预测
两种形式,两者的成果是一样的,次要是应用形式、实用场景、高可用、性能等方面有很大差异;本文分享应用 Fate 基于 纵向逻辑回归
算法训练进去的模型进行离线预测实际。
- 基于上文 《隐衷计算FATE-模型训练》 中训练进去的模型进行预测工作
- 对于 Fate 的根底概览和装置部署可参考文章 《隐衷计算FATE-要害概念与单机部署指南》
二、查问模型信息
执行以下命令,进入 Fate 的容器中:
docker exec -it $(docker ps -aqf "name=standalone_fate") bash
首先咱们须要获取模型对应的 model_id
和 model_version
信息,能够通过 job_id 执行以下命令获取:
flow job config -j 202205070226373055640 -r guest -p 9999 --output-path /data/projects/fate/examples/my_test/
job_id 能够在 FATE Board 中查看。
执行胜利后会返回对应的模型信息,以及在指定目录下生成一个文件夹 job_202205070226373055640_config
{ "data": { "job_id": "202205070226373055640", "model_info": { "model_id": "arbiter-10000#guest-9999#host-10000#model", "model_version": "202205070226373055640" }, "train_runtime_conf": {} }, "retcode": 0, "retmsg": "download successfully, please check /data/projects/fate/examples/my_test/job_202205070226373055640_config directory", "directory": "/data/projects/fate/examples/my_test/job_202205070226373055640_config"}
job_202205070226373055640_config
外面蕴含4个文件:
- dsl.json:工作的 dsl 配置。
- model_info.json:模型信息。
- runtime_conf.json:工作的运行配置。
- train_runtime_conf.json:空。
三、模型部署
执行以下命令:
flow model deploy --model-id arbiter-10000#guest-9999#host-10000#model --model-version 202205070226373055640
别离通过 --model-id 与 --model-version 指定下面步骤查问到的 model_id 和 model_version
部署胜利后返回:
{ "data": { "arbiter": { "10000": 0 }, "detail": { "arbiter": { "10000": { "retcode": 0, "retmsg": "deploy model of role arbiter 10000 success" } }, "guest": { "9999": { "retcode": 0, "retmsg": "deploy model of role guest 9999 success" } }, "host": { "10000": { "retcode": 0, "retmsg": "deploy model of role host 10000 success" } } }, "guest": { "9999": 0 }, "host": { "10000": 0 }, "model_id": "arbiter-10000#guest-9999#host-10000#model", "model_version": "202205070730131040240" }, "retcode": 0, "retmsg": "success"}
部署胜利后返回一个新的 model_version
四、筹备预测配置
执行以下命令:
cp /data/projects/fate/examples/dsl/v2/hetero_logistic_regression/hetero_lr_normal_predict_conf.json /data/projects/fate/examples/my_test/
间接把 Fate 自带的纵向逻辑回归算法预测配置样例,复制到咱们的 my_test
目录下。
预测的配置文件次要配置三局部:
- 下面局部为配置发起者以及参与方角色
- 两头局部须要填入正确的 模型信息
- 上面的则为预测应用的数据表
惟一须要批改的就是两头的 模型信息 局部;须要留神的是这里输出的版本号是 模型部署 后返回的版本号,并且须要减少 job_type 为 predict 指定工作类型为预测工作。
五、执行预测工作
执行以下命令:
flow job submit -c hetero_lr_normal_predict_conf.json
与模型训练一样也是应用 submit 命令,通过 -c 指定配置文件。
执行胜利后返回:
{ "data": { "board_url": "http://127.0.0.1:8080/index.html#/dashboard?job_id=202205070731385067720&role=guest&party_id=9999", "code": 0, "dsl_path": "/data/projects/fate/fateflow/jobs/202205070731385067720/job_dsl.json", "job_id": "202205070731385067720", "logs_directory": "/data/projects/fate/fateflow/logs/202205070731385067720", "message": "success", "model_info": { "model_id": "arbiter-10000#guest-9999#host-10000#model", "model_version": "202205070730131040240" }, "pipeline_dsl_path": "/data/projects/fate/fateflow/jobs/202205070731385067720/pipeline_dsl.json", "runtime_conf_on_party_path": "/data/projects/fate/fateflow/jobs/202205070731385067720/guest/9999/job_runtime_on_party_conf.json", "runtime_conf_path": "/data/projects/fate/fateflow/jobs/202205070731385067720/job_runtime_conf.json", "train_runtime_conf_path": "/data/projects/fate/fateflow/jobs/202205070731385067720/train_runtime_conf.json" }, "jobId": "202205070731385067720", "retcode": 0, "retmsg": "success"}
六、查看预测后果
能够通过返回的 board_url
或者 job_id
去 FATE Board
里查看后果,然而图形化界面里最多只能查看 100 条记录;
咱们能够通过 output-data
命令,导出指定组件的所有数据输入:
flow tracking output-data -j 202205070731385067720 -r guest -p 9999 -cpn hetero_lr_0 -o /data/projects/fate/examples/my_test/predict
- -j:指定预测工作的 job_id
- -cpn:指定组件名。
- -o:指定输入的目录。
执行胜利后返回:
{ "retcode": 0, "directory": "/data/projects/fate/examples/my_test/predict/job_202205070731385067720_hetero_lr_0_guest_9999_output_data", "retmsg": "Download successfully, please check /data/projects/fate/examples/my_test/predict/job_202205070731385067720_hetero_lr_0_guest_9999_output_data directory"}
在目录 /data/projects/fate/examples/my_test/predict/job_202205070731385067720_hetero_lr_0_guest_9999_output_data
中能够看到两个文件:
- data.csv:为输入的所有数据。
- data.meta:为数据的列头。
扫码关注有惊喜!