一、开始
开始之前,先确保部署的FATE框架运行正常 (部署指南),可以使用官方的几个示例进行测试,若检查无误后,则可以开始正式使用。
二、框架基本流程
对于集群部署情况,先根据不同的部署方式,进入对应的框架环境内,如使用docker-compose部署,则先进入对应容器内:
docker exec -it confs-<party-id>_client_1 bash
在FATE框架中,在终端中使用 flow 命令执行FATE提交任务等相关操作。执行的任务会在FATEBoard中显示出来。训练模型的参数需要写在json文件中,下面进行介绍。
1.上传数据集
要训练任务,自然是要数据的,通过以下命令上传数据集:
flow data upload -c uploadconf.json
uploadconf.json的格式如下:
{
"file": "housing_1_train.csv",
"table_name": "homo_housing_1_train",
"namespace": "homo_host_housing_train1",
"head": 1,
"partition": 16
}
注意其中的table_name以及namespace,在之后的两个json文件中,需要注意与之对应。
2.上传conf配置以及dsl配置
conf配置用于设置参与训练的节点方、具体算法的参数调整等。dsl文件则用于定义任务流水线形式。可以先查看官方的线性回归以及逻辑回归案例,在其基础上修改成自己想要的运行形式。
配置完成后,使用以下命令上传配置至框架系统中:
flow job submit -c xxxconf.json -d xxxdsl.json
此时,若以上配置均正确,则系统将会开始训练模型,等到FATEBoard内任务均显示success后则训练完成。
3.部署模型与加载
在提交conf和dsl文件后,终端内会输出模型的版本和id,通过以下命令部署模型:
flow model deploy --model-id <模型id> --model-version <模型版本>
修改加载模型的配置后,使用以下命令加载:
flow model load -c fateflow/examples/model/publish_load_model.json
修改绑定模型的配置后,使用以下命令绑定:
flow model bind -c fateflow/examples/model/bind_model_service.json
此时模型应该已经可以实际使用了,此时向{SERVING_SERVICE_IP}:8059/federation/v1/inference发送对应的参数,其将返回一个在线推理的结果:
$ curl -X POST -H 'Content-Type: application/json' -i 'http://192.168.7.2:8059/federation/v1/inference' --data '{
"head": {
"serviceId": "test"
},
"body": {
"featureData": {
"x0": 1.88669,
"x1": -1.359293,
"x2": 2.303601,
"x3": 2.00137,
"x4": 1.307686
},
"sendToRemoteFeatureData": {
"phone_num": "122222222"
}
}
}'
output:
{"retcode":0,"retmsg":"","data":{"score":0.018025086161221948,"modelId":"guest#9999#arbiter-10000#guest-9999#host-10000#model","modelVersion":"202111240318516571130","timestamp":1637743473990},"flag":0}