Skip to content

模型生产发布流程使用指南

FanTao edited this page Mar 4, 2020 · 1 revision

Fate-serving模型生产发布流程

离线准备

要使用Fate-serving进行在线推断,首先需要先离线训练出相应的模型。具体离线建模过程,请参考离线建模样例

建模需要使用两个配置文件:dsl文件和conf文件。他们的使用说明请参考dsl_conf配置指南

其中dsl的配置当中,每个组件有一个need_deploy字段,用于表示,在预测过程中是否需要部署。该字段,除了交集,sample和evaluation组件以外,全部是默认为True。如果您有其他需求,请通过该字段调整预测时需要使用的组件。

请注意:目前Serving遵循的是pipeline预测,因此建模时使用的dsl文件中,请保证需要deploy的模型只能组成一条pipeline,而不要有多个分支。

完成建模后,请记录下这一建模任务的model_id和model_version。这是FATE-serving用来识别启动哪个模型的标识符。这两个字段将在启动建模任务后,显示在返回信息里。

如果信息未曾记录,也可以通过example文档中提及的方法 获取对应的model version 和model id

修改服务配置

修改arch/conf/server_conf.jsonFATE-Serving的ip和端口(需要注意多方都需要修改成各自FATE-Serving的实际部署地址),内容为"servings":["ip:port"],修改完后重启FATE-Flow.

加载和绑定模型

  1. 加载模型

完成建模任务以后,需要将模型加载到内存才能使得FATE-serving继续使用。加载模型需要一个配置文件,样例如下:

{
    "initiator": {
        "party_id": "10000",
        "role": "guest"
    },
    "role": {
        "guest": ["10000"],
        "host": ["10000"],
        "arbiter": ["10000"]
    },
    "job_parameters": {
        "work_mode": 1,
        "model_id": "arbiter-10000#guest-10000#host-10000#model",
        "model_version": "2019081217340125761469"
    }
}

请将对应的party id信息填好,将上一步的model_id和model_version填入对应位置。

准备好配置文件后,请利用fate-flow接口完成模型的加载。

执行命令前,请先进入虚拟环境和对应的fate_flow目录:

source /data/projects/fate/init_env.sh cd /data/projects/fate/python/fate_flow

样例命令如下:

python fate_flow_client.py -f load -c $conf_path

  1. 绑定模型

加载模型后,需要将模型绑定到FATE-serving中。同样也需要一个配置文件,样例如下:

{
    "service_id": "",
    "initiator": {
        "party_id": "10000",
        "role": "guest"
    },
    "role": {
        "guest": ["10000"],
        "host": ["10000"],
        "arbiter": ["10000"]
    },
    "job_parameters": {
        "work_mode": 1,
        "model_id": "arbiter-10000#guest-10000#host-10000#model",
        "model_version": "2019081217340125761469"
    },
    "servings": ["192.168.0.1:8080"]
}

其中service_id是模型的唯一标识,可以是任意字符串,但不能和之前的重复,是必填项。 servings用来指定fate-serving的ip和端口号,非必填项。如果缺省,将从fate-flow的配置中自动寻找并填充。

样例命令如下:

python fate_flow_client.py -f bind -c $conf_path

执行推断任务

Guest方

当建模的多方都完全部署好fate-serving并绑定对应模型后,即可调用接口进行推断。调用的脚本在fate-flow中有样例

您可以参考样例,将对应的service_id和数据填充进去,然后调用该脚本请求结果,参数填serving对应的ip和端口号

python inference_request.py 192.168.0.1:8080

Host方

Host数据处理有demo方式和服务的方式。

  1. Demo方式,只需要把一条数据,以csv文件的格式存放在serving-server的根目录下即可。数据以k,v形式存储,下图是数据的一个样例:

image

  1. 服务方式,需要实现一个匹配的adaptor,从而响应guest端的请求。Adaptor的具体信息,请关注Fate-serving中的说明

查看log信息

log目录位于:fate/serving-server/log 的fate-serving log下。

执行流程图

在FATE-serving的执行过程大致如下,发起方guest执行自身单边的组件,包括dataio,特征工程等,到需要联合进行的组件后,对host发起请求,host端执行对应的自身单边组件,然后执行建模算法组件,和guest进行交互,完成最终推理过程。

以LR为例,流程图大致如下:

image