-
Notifications
You must be signed in to change notification settings - Fork 77
模型生产发布流程使用指南
要使用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.json里FATE-Serving的ip和端口(需要注意多方都需要修改成各自FATE-Serving的实际部署地址),内容为"servings":["ip:port"],修改完后重启FATE-Flow.
- 加载模型
完成建模任务以后,需要将模型加载到内存才能使得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
- 绑定模型
加载模型后,需要将模型绑定到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
当建模的多方都完全部署好fate-serving并绑定对应模型后,即可调用接口进行推断。调用的脚本在fate-flow中有样例
您可以参考样例,将对应的service_id和数据填充进去,然后调用该脚本请求结果,参数填serving对应的ip和端口号
python inference_request.py 192.168.0.1:8080
Host数据处理有demo方式和服务的方式。
- Demo方式,只需要把一条数据,以csv文件的格式存放在serving-server的根目录下即可。数据以k,v形式存储,下图是数据的一个样例:
- 服务方式,需要实现一个匹配的adaptor,从而响应guest端的请求。Adaptor的具体信息,请关注Fate-serving中的说明
log目录位于:fate/serving-server/log 的fate-serving log下。
在FATE-serving的执行过程大致如下,发起方guest执行自身单边的组件,包括dataio,特征工程等,到需要联合进行的组件后,对host发起请求,host端执行对应的自身单边组件,然后执行建模算法组件,和guest进行交互,完成最终推理过程。
以LR为例,流程图大致如下: