隐私计算FATE-离线预测

简介: Fate的模型预测有离线预测和在线预测两种方式,两者的效果是一样的,主要是使用方式、适用场景、高可用、性能等方面有很大差别;本文分享使用Fate基于纵向逻辑回归算法训练出来的模型进行离线预测实践。

封面.jpg

一、说明

Fate 的模型预测有 离线预测在线预测 两种方式,两者的效果是一样的,主要是使用方式、适用场景、高可用、性能等方面有很大差别;本文分享使用 Fate 基于 纵向逻辑回归 算法训练出来的模型进行离线预测实践。

 

二、查询模型信息

执行以下命令,进入 Fate 的容器中:

docker exec -it $(docker ps -aqf "name=standalone_fate") bash

首先我们需要获取模型对应的 model_idmodel_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 目录下。

预测配置.jpg

预测的配置文件主要配置三部分:

  • 上面部分为配置发起者以及参与方角色
  • 中间部分需要填入正确的 模型信息
  • 下面的则为预测使用的数据表
唯一需要修改的就是中间的 模型信息 部分;需要注意的是这里输入的版本号是 模型部署 后返回的版本号,并且需要增加 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_idFATE 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:为数据的列头。
目录
相关文章
|
机器学习/深度学习 存储 算法
隐私计算FATE-模型训练
本文分享基于Fate自带的测试样例,进行纵向逻辑回归算法的模型训练,并且通过FATE Board可视化查看结果。
552 0
隐私计算FATE-模型训练
|
机器学习/深度学习 存储 分布式计算
【译】如何用Apache Spark和LightGBM构建机器学习模型来预测信用卡欺诈
如何用Apache Spark和LightGBM构建机器学习模型来预测信用卡欺诈
4219 0
|
分布式计算 搜索推荐 Spark
Spark-ML-基于云平台和用户日志的推荐系统
架构: 数据收集:spark stareming从Azure Queue收集数据,通过自定义的spark stareming receiver,源源不断的消费流式数据。
1173 0
|
分布式计算 搜索推荐 大数据
【Spark Summit East 2017】迈向实时:为个性化创建不断更新频率的数据集
本讲义出自Shriya Arora在Spark Summit East 2017上的演讲,主要介绍了NETFLIX使用Spark处理个性化数据集空间的经验,并分享了使用流处理大规模的个性化数据集的案例,对于从批处理到流计算的转型意识以及这一过程中必须要面对的技术挑战。
1710 0
|
7月前
|
机器学习/深度学习 自然语言处理
谷歌发布时序预测基础模型TimesFM
【2月更文挑战第27天】谷歌发布时序预测基础模型TimesFM
625 3
谷歌发布时序预测基础模型TimesFM
|
7月前
|
机器学习/深度学习
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断1
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
7月前
|
机器学习/深度学习
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(上)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
7月前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断3
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
|
7月前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(下)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
435 11