FATE框架练习:实现横向逻辑回归任务的训练及预测

毕设需要使用fate框架,所以熟悉一下,主要参考了范星星的博客
目前只找到上边这一个V2版本的教程,特别感谢大佬
记录一下练习过程。

顺便贴一下可能会用到的文档
FATE单机部署指南
FedAI 社区中文文档
FATE FLOW命令
V2使用文档

运行环境:
ubuntu18.04 (本来装好20.04,但是不知为何卡死了,怀疑是装到机械盘磁道有损坏)
docker 20.10.12
docker-compose version 1.17.1
standalone_fate_1.7.0(docker部署)

安装好docker以后需要进入root用户,推荐把当前用户加入docker组,省去切换用户的麻烦
后续修改docker内的文件还需要一个编辑器,推荐在docker内安装vim

docker内安装vim:

一开始尝试ubuntu的安装命令,发现不行,查阅资料后发现在docker输入

cat /etc/os-release

查看os版本是centos7

(app-root) bash-4.2# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

因此应该用

yum -y install vim

fate dsl_conf v2版本的训练和预测流程

v2相关特性和配置具体参照V2

安装的fate1.7.0只有v2,后找学姐复制了v1文件,用v2中的其他文件应该也可
从本地复制文件到docker:

docker cp 本地地址  &{docker长id}:docker内部地址
#本地地址和内部地址都可以用pwd命令得到
示例:
(base) wry@gblw:~$ docker cp /home/wry/FLFLFL/FLFLFL/prac-FL代码资源/FATE项目地 址4-1/FATE-master/python 72d4f841e7cf11579ed9b99cd02f00af45f6d5a1a43358e944b55d4795169468:/data/projects/fate

建议在容器中部署单机fate时,在容器内安装交互工具FATE-Client以及测试工具FATE-Test:
直接在容器内部执行:

pip install fate-client
pip install fate-test

fate-client进行初始化配置:

# configure values in conf/service_conf.yaml
flow init -c /data/projects/fate/conf/service_conf.yaml
# alternatively, input real ip address and port info to initialize cli
flow init --ip 127.0.0.1 --port 9380

后边操作和具体参数含义参考FATE-FLOW命令

上传数据
flow data upload -c ${conf_path}

flow data upload -c examples/dsl/v1/upload_data_host.json
flow data upload -c examples/dsl/v1/upload_data_guest.json

上传任务

在这里插入图片描述
在这里插入图片描述
这里注意记得保存过程中产生的model_id和model_version后续会用。
打开产生的链接就可以看到结果
在这里插入图片描述

配置预测dsl

在这里插入图片描述
把<model_id>和<model_version>换成上面得到的。

 flow model deploy --model-id "arbiter-9999#guest-9999#host-10000#model" --model-version "202203061139523994640"

得到下面提示成功

{
    "data": {
        "arbiter": {
            "9999": 0
        },
        "detail": {
            "arbiter": {
                "9999": {
                    "retcode": 0,
                    "retmsg": "deploy model of role arbiter 9999 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-9999#guest-9999#host-10000#model",
        "model_version": "202203061247574633030"
    },
    "retcode": 0,
    "retmsg": "success"
}

记住上面新生成的model_version,小心用错,,
输入下面的命令得到预测的dsl和conf文件:

(app-root) bash-4.2# flow model get-predict-dsl --model-id "arbiter-9999#guest-9999#host-10000#model" --model-version "202203061247574633030" -o examples/dsl/v2/homo_logistic_regression/
{
    "retcode": 0,
    "retmsg": "Query predict dsl successfully. File path is: /data/projects/fate/examples/dsl/v2/homo_logistic_regression/predict_dsl_20220306125043.json"
}

(app-root) bash-4.2# flow model get-predict-conf --model-id "arbiter-9999#guest-9999#host-10000#model" --model-version "202203061247574633030" -o examples/dsl/v2/homo_logistic_regression/
{
    "retcode": 0,
    "retmsg": "Query predict conf successfully. File path is: /data/projects/fate/examples/dsl/v2/homo_logistic_regression/predict_conf_20220306125055.json"
}


其中还是替换成刚刚生成的model_id和model_version.

任务预测

把刚才得到的conf文件修改一下
直接vim +刚才的路径,vim简单操作参考菜鸟教程

"component_parameters": {
        "role": {
            "guest": {
                "0": {
                    "reader_1": {
                        "table": {
                            "name": "breast_homo_guest",
                            "namespace": "experiment"
                        }
                    },
                    "reader_0": {
                        "table": {
                            "name": "breast_homo_guest",
                            "namespace": "experiment"
                        }
                    }
                }
            },
            "host": {
                "0": {
                    "reader_1": {
                        "table": {
                            "name": "breast_homo_host",
                            "namespace": "experiment"
                        }
                    },
                    "reader_0": {
                        "table": {
                            "name": "breast_homo_host",
                            "namespace": "experiment"
                        }
                    }
                }
            }
        }
    }

最后提交任务

(app-root) bash-4.2# flow job submit -c /data/projects/fate/examples/dsl/v2/homo_logistic_regression/predict_conf_20220306125055.json -d /data/projects/fate/examples/dsl/v2/homo_logistic_regression/predict_dsl_20220306125043.json
{
    "data": {
        "board_url": "http://127.0.0.1:8080/index.html#/dashboard?job_id=202203061306466751440&role=guest&party_id=9999",
        "code": 0,
        "dsl_path": "/data/projects/fate/fateflow/jobs/202203061306466751440/job_dsl.json",
        "job_id": "202203061306466751440",
        "logs_directory": "/data/projects/fate/fateflow/logs/202203061306466751440",
        "message": "success",
        "model_info": {
            "model_id": "arbiter-9999#guest-9999#host-10000#model",
            "model_version": "202203061247574633030"
        },
        "pipeline_dsl_path": "/data/projects/fate/fateflow/jobs/202203061306466751440/pipeline_dsl.json",
        "runtime_conf_on_party_path": "/data/projects/fate/fateflow/jobs/202203061306466751440/guest/9999/job_runtime_on_party_conf.json",
        "runtime_conf_path": "/data/projects/fate/fateflow/jobs/202203061306466751440/job_runtime_conf.json",
        "train_runtime_conf_path": "/data/projects/fate/fateflow/jobs/202203061306466751440/train_runtime_conf.json"
    },
    "jobId": "202203061306466751440",
    "retcode": 0,
    "retmsg": "success"
}

打开上面的链接,等结果
在这里插入图片描述
写的比较简要,主要是记录,教程方面推荐参考文首的范星星。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值