• 隐私计算FATE-离线预测


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    一、说明

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

    二、查询模型信息

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

    docker exec -it $(docker ps -aqf "name=standalone\_fate") bash
    
    
    • 1
    • 2

    首先我们需要获取模型对应的 model_idmodel_version 信息,可以通过 job_id 执行以下命令获取:

    flow job config -j 202205070226373055640 -r guest -p 9999 --output-path /data/projects/fate/examples/my_test/
    
    
    • 1
    • 2

    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"
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    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
    
    
    • 1
    • 2

    分别通过 --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"
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    部署成功后返回一个新的 model_version

    四、准备预测配置

    执行以下命令:

    cp /data/projects/fate/examples/dsl/v2/hetero_logistic_regression/hetero_lr_normal_predict_conf.json /data/projects/fate/examples/my_test/
    
    
    • 1
    • 2

    直接把 Fate 自带的纵向逻辑回归算法预测配置样例,复制到我们的 my_test 目录下。

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

    • 上面部分为配置发起者以及参与方角色
    • 中间部分需要填入正确的 模型信息
    • 下面的则为预测使用的数据表

    唯一需要修改的就是中间的 模型信息 部分;需要注意的是这里输入的版本号是 模型部署 后返回的版本号,并且需要增加 job_type 为 predict 指定任务类型为预测任务。

    五、执行预测任务

    执行以下命令:

    flow job submit -c hetero_lr_normal_predict_conf.json
    
    
    • 1
    • 2

    与模型训练一样也是使用 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"
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    六、查看预测结果

    可以通过返回的 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
    
    
    • 1
    • 2
    • -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"
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在目录 /data/projects/fate/examples/my_test/predict/job_202205070731385067720_hetero_lr_0_guest_9999_output_data 中可以看到两个文件:

    • data.csv:为输出的所有数据。
    • data.meta:为数据的列头。

    扫码关注有惊喜!

    file

  • 相关阅读:
    hadoop3.x搭建完再测试阶段发现运行bin下面命令时把namenode组的ID识别成了DNS的一个域名有解决思路吗
    计数排序(Counting Sort)
    双十一什么蓝牙耳机好?盘点性价比高蓝牙耳机推荐
    【唯美情侣爱情表白纪念HTML单页】
    2008-2021年上市公司实体企业金融化程度测算数据(原始数据+stata代码)
    STM32 与 ARM 的联系
    组件自定义事件
    Apache的配置详解
    Python实用脚本【二】
    Matlab代码格式一键美化神器
  • 原文地址:https://blog.csdn.net/qq_43479892/article/details/125481739